3

Just want to confirm the correct way the MQ delivers messages to the MQOutput node. Recently came across a situation where i a felt bit confused. Here is the scenario.

I have a local queue on Qmgr,say(A) which receives messages from applications and have a local broker associated with this qmgr(A) with a message flow deployed, which consumes messsages from this queue and drops it to another local(L.B) queue on Queue manager (B).

To successfully deliver the messages to qmgr(B) do i have to

  1. Create a remote queue definition on Qmgr(A) with transmission queue name matching the remote queue manager name, here(B) MQOutput node value set as, queue->remote queue definition name on (A) and queue manager value as blank
    or

  2. to create only the transmission queue that matches with the name of the remote queue manager name, here(B). MQOutput node value set as queue-> target local queue (L.B) and Queue manager value as (B).

When i follow with the first process, noticed messages reaching the destination and when i follow with the later one, noticed messages sitting up in the local queue itself.

Is there any necessity to always create 'n' number of remote queue definitions when it needs to drop messages to 'n' number of local queues?

Kindly guide me to better understand this. Thanks in advance to each of you.

JoshMc
  • 10,239
  • 2
  • 19
  • 38
Ganesh G
  • 93
  • 1
  • 9

1 Answers1

3

There is no necessity to create n remote queue definitions, MQ is happy to accept output marked as destined for "Queue Name" on "Queue Manager Name".

You say that when using method 2. that your messages are "sitting up in the local queue". There are a few things you must check to solve this problem.

  • I assume the named queue L.B is defined on QMgr B and not QMgr A?
  • I assume the local queue the messages are sitting on is a transmission queue?
  • Have you defined a channel to read messages from the transmission queue they are stuck on?
  • Have you started the channel which should be moving the messages off the transmission queue to QMgr B?
Morag Hughson
  • 7,255
  • 15
  • 44
  • Thanks for your suggestions on this Morag, its picture perfect now. Yes, as you have mentioned the it was siiting on the transmission queue. The channel which was created for this purpose was using a different XMIT queue other than what i expected. Repointed it to use the correct one and its now working. Every time i thought the remote queue has a use here.. Eventually you have made to understand that remote queues are not necessarily needed to deliver the messages in this scenario. Thanks again. – Ganesh G May 19 '15 at 14:02
  • Also @Morag Hughson, i will be much happy if i know exactly how this is working. We are not explicitly pointing a local queue to a transmit queue as we do with Remote queue definiton. But in this case how is MQ working to pick msgs from local queue to transmit queue to deliver it across to the destination? Thanks again in advance. – Ganesh G May 19 '15 at 15:41
  • The queue manager goes through a process called "queue name resolution" to discover what transmit queue to place a message on. If you used a QREMOTE object, it would look in there for the XMITQ, if you use a queue name and queue manager name directly, it uses the transmit queue of the same name. There are quite a number of other cases too. have a read up about "queue name resolution", http://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.con.doc/q081570_.htm – Morag Hughson May 20 '15 at 14:24
  • Thanks a ton @Morag Hughson – Ganesh G May 27 '15 at 10:54