|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Messages held by send MCA - No DLQ at dest, Dest Q incorrect |
« View previous topic :: View next topic » |
Author |
Message
|
aspre1b |
Posted: Thu Jun 12, 2008 5:41 am Post subject: Messages held by send MCA - No DLQ at dest, Dest Q incorrect |
|
|
 Voyager
Joined: 05 Jul 2007 Posts: 78 Location: Coventry, UK
|
I had a scenario where I was delivering a message to a queue manager where the destination queue didn't exist. I hadn't set up my DLQ on the destination queue manager, but when I did create the DLQ, the message was delivered to the dead letter queue on the destination queue manager.
However this got me curious as I would have expected the messages to have been put on the sending queue managers DLQ, if that wasn't available, the messages would have been put on the transmission queue. In my set up, the DLQ on the sending queue manager is set up, but no messages end up there. I assumed my retry intervals on my sender channel was set to long for me to see the end result so I repeated the test (removing the destination queue manager DLQ) but changed the sender channel settings to:
short retry count to 1
short retry interval to 10
long retry count to 1
long retry interval to 20
The message seems to be in transit (I believe on the sending MCA), the sender channel goes into a retrying state but no message appears on any queue on the sending queue manager (or dest queue manager..but no queue is available there).
I am reading the redbook wrong?
I also assume if I had a "reply to queue" set on the original request message, then as long as a return path is present (e.g. channels and transmission queue), the message should be delivered back to the sending queue manager according to the intercommunication redbook.
I've tried to search the forum for this situation but have been unsuccessful so far. I know this is bad practice to no DLQ on the destination queue manager, but the same conditions occurs if the destination DLQ is full.
Version - MQ5.3
Thanks in advance for any guidance. |
|
Back to top |
|
 |
aspre1b |
Posted: Thu Jun 12, 2008 5:42 am Post subject: |
|
|
 Voyager
Joined: 05 Jul 2007 Posts: 78 Location: Coventry, UK
|
forgot to mention that I have CSD 12 installed. |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Jun 12, 2008 1:55 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Working as designed. Check the intercommunications manual And get V6.
V5 is out of support
If the dest q does not exist on the tgt qmgr and the dlq does not exist in the tgt qmgr the channel goes to retry and will stay in retry/stop until the problem is solved.
Enjoy  _________________ MQ & Broker admin |
|
Back to top |
|
 |
bruce2359 |
Posted: Thu Jun 12, 2008 2:06 pm Post subject: |
|
|
 Poobah
Joined: 05 Jan 2008 Posts: 9469 Location: US: west coast, almost. Otherwise, enroute.
|
Quote: |
I am reading the redbook wrong? |
Yep.
In distributed queuing, MQPUTs are to the transmission queue - synchronously; that is, the application program gets a ReasonCode that tells it whether the put to the transmission queue succeeded or failed.
Delivery of the message(s) from the transmission queue to the destination queue (or dlq of destination queue doesn't exist) is done by Message Channel Agents (MCA) - asynchronously. As stated in a previous post, if you don't have a dead-letter queue on the destination qmgr, the channel fails. The message waits in the transmission queue to be re-sent when the channel comes back to life.
Please spend some time reading the WMQ Intercommunications manual. The first few chapters are a good start. _________________ I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live. |
|
Back to top |
|
 |
aspre1b |
Posted: Fri Jun 13, 2008 12:25 am Post subject: |
|
|
 Voyager
Joined: 05 Jul 2007 Posts: 78 Location: Coventry, UK
|
I expected to see the messages back on the transmission queue, but they seem to be held by the sending MCA and the channel doesn't come out of a retrying state.
According to the Intercommunication RedBook:
"We recommend that you define a dead-letter queue for each queue manager. If you do not, and the MCA is unable to put a message, it is left on the transmission queue and the channel is stopped."
This never happens for me, the sender channel stays in a retrying state, it doesn't stop and the messages do not re-appear on the transmission queue.
If I wait for a few hours, the channel is still in a retrying state. I then decided to shut down both queue managers, but a controlled shutdown of the sending queue manager failed (took over an hour) before I decided to shut down the operating system.
(NB:The messages are persistent, non-expirying) |
|
Back to top |
|
 |
aspre1b |
Posted: Fri Jun 13, 2008 1:34 am Post subject: |
|
|
 Voyager
Joined: 05 Jul 2007 Posts: 78 Location: Coventry, UK
|
I have just retried the senario, but I have created a destination local queue, with a queue depth of 1.I have created a DLQ on the destination queue manager with a queue depth of 1.
I have then sent 3 messages to the remote definition on the sending queue manager.
1 message ends up on the destination queue (as expected)
1 message ends up on the destination DLQ (as expected)
The channel has now gone into a retrying state. However if I stop the receiver channel and the sender channel, the message DOES NOT get returned to the transmission queue on the sending queue manager.
At this point in time, where is the message? It does not appear on the sending or receiving queue manager.
If I now raise either the DLQ or destination queue depth by 1, and then restart the channels, the message is delivered....but where was it stored? Does the MCA keep it? Surely according to the redbooks it should have been put back on the transmission queue, and if it couldn't do that, put it on the sending queue manager's DLQ.
Its a little confusing for me, but I really do appreciate the responses I've had from you guys. Thank You |
|
Back to top |
|
 |
exerk |
Posted: Fri Jun 13, 2008 2:43 am Post subject: |
|
|
 Jedi Council
Joined: 02 Nov 2006 Posts: 6339
|
Have you checked for uncommitted messages? _________________ It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys. |
|
Back to top |
|
 |
aspre1b |
Posted: Fri Jun 13, 2008 3:01 am Post subject: |
|
|
 Voyager
Joined: 05 Jul 2007 Posts: 78 Location: Coventry, UK
|
Is there a way to display uncommitted messages in MQ5.3? I've been searching the redbooks,but can't see a way to display it on a transmission queue.
However I do believe you are correct and that the messages are uncommitted. But surely at some point they should be backed out of the transaction and put back on the transmission queue. At this point I would also expect the sender channel to be in a stopped state.
My retry count has been reduced very low (see earlier posts) so I can't understand why the sender channel persists in a retrying state. |
|
Back to top |
|
 |
exerk |
Posted: Fri Jun 13, 2008 3:15 am Post subject: |
|
|
 Jedi Council
Joined: 02 Nov 2006 Posts: 6339
|
I have to ask these questions then:
1. Are you absolutely sure the message is persistent?
2. Have you stopped the channel to see whether the message is rolled back to the transmission queue? _________________ It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys. |
|
Back to top |
|
 |
aspre1b |
Posted: Fri Jun 13, 2008 4:16 am Post subject: |
|
|
 Voyager
Joined: 05 Jul 2007 Posts: 78 Location: Coventry, UK
|
I believe the message is persistent for two reasons
1) It survived a queue manager restart (I tested this by restarting the receiving queue manager, both the message on the DLQ and destination queue had the message on it, intact).
2) I set it to be persistent using RFHUtil.
Answer to you second question, I have stopped the sender channel and the message was not delivered to the transmission queue or DLQ on the sending queue manager. |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|