Posted: Mon Aug 20, 2012 8:31 pm Post subject: MQGet node
Disciple
Joined: 30 May 2011 Posts: 177
Hi;
I'm using a message flow in which there is no MQMD with in the message tree at first. Since i want to use an MQOUTPUT node to do a message bridging , I use an MQHEADER to create the required MQMD.
I've changed the following attributes within the MQHEADER node :
- Add header selected
- Message Type : MQMT_REQUEST
- Message Identifier : MQMI_NONE
- Correlation Identifier : MQCI_NEW_SESSION
- Reply To Queue : Bridge.Response.Queue
- Reply to Queue Manager : WSMQ
I've wired out the MQHEADER node to an MQOUTPUT node in which i've changed the following attributes :
QMGR : WSMQ
Queue name : Bridger.Request.queue
Destination mode : Queue name
Transaction mode : Automatic
Persistence mode : Automatic
Message Context : None
Finnally i've to read the bridge response message from the Bridge.Response.Queue. So i've wired out the MQOUTPUT node to an MQGET node with the following changed attributes :
Q name : Bridge.Response.Queue
Message Domain : BLOB
Generate mode : Message
Copy Message : None
Copy Local Env. : Copy Entire LocalEnvironment
Wait : 10000
Input MQMD Location : InputLocalEnvironment.WrittenDestination.MQ.DestinationData
Get By Message ID : Checked
The message goes to the Bridge.Request.Queue and some processes are done there, after that the reply message is put to the Bridge.Response.Queue by a service provider. But the problem is that the MQGET node doesn't work properly. I've put a trace node before the MQGEt node and it shows the new message ID within "InputLocalEnvironment.WrittenDestination.MQ.DestinationData" and also the reply Message appeares in the "Bridge.Response.Queue" with the Similar Message ID but the MQGET node propagates to the "NO Message" terminal.
The interesting phenomena is that whenever the Wait time expires , The reply Message is put to the "Bridge.Response.Queue".
Change the transactional attribute of the MQOutput node to NO.
You cannot receive the reply in the same transaction in which you sent the request... because if you do, the request only becomes available when the transaction completes i.e. the MQGet node's waiting time expires...
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