Author |
Message
|
freak |
Posted: Sun May 09, 2010 5:13 pm Post subject: message in transmission queue |
|
|
Novice
Joined: 28 Feb 2010 Posts: 18
|
hi all,
here's the scenario:
- message are sent to remote queue in machine A
- my channel connection to transmit message from machine A to machine B is down.
- messages are now stuck in machine A transmission queue.
i had view the message in the transmission queue and realised that the information that i had set in the correlation ID of the message is not visible in the tranmission's correlation ID. Neither is it found in the data message.
Is there a way to retrieve these message out from the transmission queue? i would want to be in the original format. that is the correlation ID will contain my customize content.
thanks |
|
Back to top |
|
 |
fjb_saper |
Posted: Sun May 09, 2010 5:42 pm Post subject: Re: message in transmission queue |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
freak wrote: |
hi all,
here's the scenario:
- message are sent to remote queue in machine A
- my channel connection to transmit message from machine A to machine B is down.
- messages are now stuck in machine A transmission queue.
i had view the message in the transmission queue and realised that the information that i had set in the correlation ID of the message is not visible in the tranmission's correlation ID. Neither is it found in the data message. |
So what? It is a bad idea to mess with messages on the xmitq. You are of course aware that MQ adds a specific header used by the channel agents before putting the message on the xmitq?
freak wrote: |
Is there a way to retrieve these message out from the transmission queue? i would want to be in the original format. that is the correlation ID will contain my customize content.
thanks |
Again it is a bad idea to mess with messages on the xmitq. To access the MQMD with your original content you would have to look at the linked headers... Apart from that removing a message from the xmitq is just like removing any other message from any other queue. Think about the differences due to channel agents opening the queue in exclusive mode...
Have fun.  _________________ MQ & Broker admin |
|
Back to top |
|
 |
freak |
Posted: Sun May 09, 2010 5:57 pm Post subject: Re: message in transmission queue |
|
|
Novice
Joined: 28 Feb 2010 Posts: 18
|
Yes, i know that during transmission MQ will append additional header to messages in transmission queue. that's why i am asking if anyone had other alternative to it? I had tried to change the transmission queue information in the remote queue in hope that the "stuck" messages will be sent to the newly defined location but it didnt work out.
To access the MQMD with your original content you would have to look at the linked headers -> where can i find the linked headers? is it in MQ or i had to flip the pages in redbook?
I am trying to find out if there is a way to retrieve the messages out from the transmission queue without resolving the channel issue. I believe the additional header append in the transmission queue will contain the receiver Queue manager and queue name. however, i would like to know if i could route them to another queue manager instead. |
|
Back to top |
|
 |
Mr Butcher |
Posted: Sun May 09, 2010 10:40 pm Post subject: |
|
|
 Padawan
Joined: 23 May 2005 Posts: 1716
|
Quote: |
in hope that the "stuck" messages will be sent to the newly defined location |
so you want to re-route the messages somewhere else? stop the "old" channel. define the "new" channel using the "old" xmitq. after that:
1. send the messages and resolve on the receiving end either by using the dlq handler or proper mqseries objects (e.h. qmgr alias).
or
2,. define the new channel with 1 byte length, when trying to ttransfer messages they will be put to your local DLQ. when xmitq is empty, alter channel back to roiginal length and use dlq handler to route messagdes to a new destination
or
3. there may be other solutions too.
of course the "old" channel should not be indoubt. _________________ Regards, Butcher |
|
Back to top |
|
 |
Esa |
Posted: Sun May 09, 2010 11:00 pm Post subject: Re: message in transmission queue |
|
|
 Grand Master
Joined: 22 May 2008 Posts: 1387 Location: Finland
|
freak wrote: |
I believe the additional header append in the transmission queue will contain the receiver Queue manager and queue name. however, i would like to know if i could route them to another queue manager instead. |
Yes, you can, and it is a simple administrative task. Or perhaps a little bit more complicated than an everyday task. Like this for example:
1. Create a new QM (on your sender machine for example)
2. Create a transmission q on you new QM with the name of your new target QM.
3. Create a sender channel to your new target QM
4. Create a corresponding receiver channel on the target QM.
5. Create a local Q on your target QM with the same name as the original target Q.
6. Ping and start the channel. test it with a test message
7. Create a QM alias on your new QM with the name of your original target QM and remote queue manager pointing to your new target QM (leave remote queue name empty)
8. Create a sender channel from your sender QM to the new QM. Point the transmission q to the XMITQ that contains your marooned messages.
9. Create a corresponding receiver channel on your new QM.
10. Ping and start the channel.
If you did everything correctly, you should have managed to route the messages to an alternative target. After that you can remove all the new objects that you created, including the new dummy QM, and create a new channel directly to the alternative target QM. If you cannot change the sending program to send messages to the alternative QM you can create another QM alias on the sending QM.
I see mr Butcher posted a faster and simplier alternative while I was composing this message. |
|
Back to top |
|
 |
zpat |
Posted: Sun May 09, 2010 11:33 pm Post subject: |
|
|
 Jedi Council
Joined: 19 May 2001 Posts: 5866 Location: UK
|
That's a lot of work. Here's another way
Make the transmit queue get enabled (if it is get disabled).
Read the message(s) off with MO71 (unload option) with the strip headers option.
Load the message(s) onto another remote queue of your choice (MO71 can copy queue to queue with the unload feature).
Delete original message(s) once this has worked. |
|
Back to top |
|
 |
freak |
Posted: Mon May 10, 2010 1:52 am Post subject: Re: message in transmission queue |
|
|
Novice
Joined: 28 Feb 2010 Posts: 18
|
[quote="Esa"][quote="freak"]I believe the additional header append in the transmission queue will contain the receiver Queue manager and queue name. however, i would like to know if i could route them to another queue manager instead.[/quote]
Yes, you can, and it is a simple administrative task. Or perhaps a little bit more complicated than an everyday task. Like this for example:
1. Create a new QM (on your sender machine for example)
2. Create a transmission q on you new QM with the name of your new target QM.
3. Create a sender channel to your new target QM
4. Create a corresponding receiver channel on the target QM.
5. Create a local Q on your target QM with the same name as the original target Q.
6. Ping and start the channel. test it with a test message
7. Create a QM alias on your new QM with the name of your original target QM and remote queue manager pointing to your new target QM (leave remote queue name empty)
8. Create a sender channel from your sender QM to the new QM. Point the transmission q to the XMITQ that contains your marooned messages.
9. Create a corresponding receiver channel on your new QM.
10. Ping and start the channel.
If you did everything correctly, you should have managed to route the messages to an alternative target. After that you can remove all the new objects that you created, including the new dummy QM, and create a new channel directly to the alternative target QM. If you cannot change the sending program to send messages to the alternative QM you can create another QM alias on the sending QM.
I see mr Butcher posted a faster and simplier alternative while I was composing this message.[/quote]
a quick one:
is step 1-6 referring to my existing machine A and B or do i have to create a new QM to my existing QMs in machine A and B?
As for #7, are you trying to tell me to create a new QM with a new alias Queue. This alias queue will have the same QM name as machine B (target). |
|
Back to top |
|
 |
Esa |
Posted: Mon May 10, 2010 2:32 am Post subject: |
|
|
 Grand Master
Joined: 22 May 2008 Posts: 1387 Location: Finland
|
1-6. One new queue manager that you put between A and B.
7. A queue manager alias is not an alias queue, but a remote queue definition that has no remote queue. When a receiving channel reads a message from the channel, it compares the queue manager name from MQMD to its own QM name. If the names do not match, it tries to find a transmission queue with a name that matches to MQMD queue manager name. A queue manager alias can be used here to route the message to another transmission queue. |
|
Back to top |
|
 |
Esa |
Posted: Mon May 10, 2010 2:42 am Post subject: |
|
|
 Grand Master
Joined: 22 May 2008 Posts: 1387 Location: Finland
|
If
A = the sender QM
B = the original target QM(with the channel down)
C = the new target QM
then you put the dummy QM between A and C.
You do not necessarily need that dummy QM if queue managers C and B are not directly interconnected. In that case you can just create a new channel between A and C and and add a queue manager alias on C. |
|
Back to top |
|
 |
|