the messages are not being consumed by MDB , I get the below error for Websphere MQ 7
WebSphere classes for JMS attempted to get a message for
delivery to an message listener, that had previously been marked
using browse-with-mark, but the message was not there.
Pinned topic messages marked using browse-with-mark
Answered question This question has been answered.
Unanswered question This question has not been answered yet.
Updated on 2013-01-08T15:23:44Z at 2013-01-08T15:23:44Z by mamwl1
Re: messages marked using browse-with-mark2013-01-08T13:01:08ZThis is the accepted answer. This is the accepted answer.Messages that are passed to an MDB to be consumed, are first browsed by a dispatcher task. This task marks the message to say that it is being dealt with and then passes the MDB the Message Token which uniquely refers to the message (even more uniquely than Message ID which may not be unique if it is user generated).
The MDB when driven attempts to MQGET the message using this Message Token. That message may not be there any more, perhaps because it has expired, or some other program has retrieved it without using the co-operative marking process (i.e. ignoring the marks), or because someone has CLEARed the queue, or some other reason I can't think of just now.
Is anything else using that queue?
Re: messages marked using browse-with-mark2013-01-08T14:56:33ZThis is the accepted answer. This is the accepted answer.
- SystemAdmin 110000D4XK
There is centralized queue and there are 3 MDB's which access the queue, when the message is put to centralized queue, I see the error and current depth is 0
however the input handle increases and I cleared all the queues, restarted the WAS server , still same problem
mamwl1 120000MN5R39 Posts
Re: messages marked using browse-with-mark2013-01-08T15:23:44ZThis is the accepted answer. This is the accepted answer.
- SystemAdmin 110000D4XK
As Morag says, it could be your browse mark timeout expiring. The default timeout is 5 seconds which might not be enough if your MDB is doing a lot of processing.
You could try changing this by using the "ALTER QMGR MARKINT(<some interval in milliseconds>)" MQSC command. Note that this affects the whole queue manager.
Also what version of the WMQ resource adapter are you running with? You can figure this out by looking for the WMSG1703I message in your WAS SystemOut.log. I have a feeling that message was output by mistake for some of the earlier versions of code.