Hi, I am sorry I don't have the solution for you, just one question. You said that your durable subscriptions are working fine.
Does it mean that messages which are not acknowledged or committed e.g. because of received failure are resent immediately back? I am struggling with this since I need to restart my JBoss to get those messages redelivered when the receiver comes up again:-(.
I'm not sure if this answers your question, but what I've found is that when there's an error causing my MDB to call setRollbackOnly() (usually some sort of configuration error in my application), the message will be redelivered several times (each time failing for the same reason) and then go to the DLQ. I have not found those messages that have gone to the DLQ to ever be redelivered again -- even after a JBoss restart.
Does your MDB have a "catch (Throwable e)" in onMessage() so that you are ALWAYS committing or rolling back properly?
Thanks a lot for your answer, but my problem is that at least part of my app has to run outside the app server so I cannot use MDB for all the functionality.
The second problem is that, the redelivery works when I call rollback(), however, it has troubles when I (e.g. turn of computer) during the processing in onMessage(), before I can invoke any commit/accept or rollback/recover.
In that case the message is resend only after restart of JBoss :-(, You can try to kill JBoss, while it is on the onMessage method to see if it will redeliver the message immediately.
No, messages that are in the DLQ, have to be manually purged or resubmited to the MDB queue.
Can anyone answer the original question in this post? (please see my original post above for more details.) Do you know the implications of the message:
[time, topicName] "Trying to restore message with null durableSubscriberID"
Is it normal, or is it some kind of error condition causing me to get hundreds of these messages on startup of the PersistenceManager?