we are trying to perform some integration with ibm mq 8 in which we need to send a message to mq queue and retrieve the response from another queue (replay queue).
we are sending a message to IBM mq 8 via route to MQ assertion.
in the same assertion, we need to retrieve a response message from the MQ, by configuring the assertion to "Wait for Reply on specified queue" under the outbound options tab with additional setting: "Expect Receiver to Copy Request MessageID to Response CorrelationID:"
the problem is that currently we manage to send the message to MQ, then a replay message is waiting for us in specific queue (replay queue) but somehow the process cannot retrieve the message from the replay queue.
your help is much appreciated if someone has ever implemented such configuration and what is wrong in our case. please note that we get the following errors in audit :
com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2471'. at com.ibm.mq.MQMessage.setProperty(MQMessage.java:4019) at com.ibm.mq.MQMessage.setObjectProperty(MQMessage.java:6324) at com.ibm.mq.MQMessage.setObjectProperty(MQMessage.java:6296) at com.l7tech.external.assertions.mqnative.server.decorator.PassThroughDecorator.decorate(Unknown Source) at com.l7tech.external.assertions.mqnative.server.decorator.MqMessageDecorator.decorate(Unknown Source) at com.l7tech.external.assertions.mqnative.server.decorator.DescriptorDecorator.decorate(Unknown Source) at com.l7tech.external.assertions.mqnative.server.decorator.MqMessageDecorator.decorate(Unknown Source) at com.l7tech.external.assertions.mqnative.server.decorator.PropertyDecorator.decorate(Unknown Source) at com.l7tech.external.assertions.mqnative.server.decorator.MqMessageDecorator.decorate(Unknown Source) at com.l7tech.external.assertions.mqnative.server.decorator.HeaderDecorator.decorate(Unknown Source) at com.l7tech.external.assertions.mqnative.server.ak.doWork(Unknown Source) at com.l7tech.external.assertions.mqnative.server.w.a(Unknown Source)
Dear neaid01 ,
Reason Code 2471 means MQRC_PROPERTY_NOT_AVAILABLE.
Did you add custom message descriptors on the route via MQ assertion?
I suspect the problem might be due to those MDs.
Check with your MQ team to see why MQ return such error.
Thanks for responding. you can find in the attached screenshots for current mq assertion configuration the MDs we specified (basically those are MDs which are regular) . please note the the request message does reach the mq system properly , but we cannot retrieve the correlated response message .
your help will be much appreciated if you can point me to some reference in which this use case was done (sending message and retrieving back a response message)
if the problem is on correlation, and the flow is like this,
gw -> queue1 -> application -> queue2 -> gw
Then the correlation is dependent on the application -- when the application process the message and send the response to queue2, it needs to set the correlationID properly.
Again, you may need to work with your MQ team to find the root cause, they can check the message detail in the queue.
Thanks for clarifying.
I will check it with the MQ team.
the thing which bothers me is that currently this process works ok in their environment with current datapower machine.
update: I have managed to retrieve the response finally message from the queue after configuring in the gateway the following cluster property:
I have suspected that this parameter might be relevant since we understood that the MQ messages including MQRFH2 metadata headers as well.
Seems like this configuration resolved our issue.