My MQ server has only one queue and from the application it will receive a message but there is no destination queue. How to record this transaction?
What do you mean by "no destination queue"? A message cannot be sent without a destination queue. Do you mean ReplyTo queue?
Does your service send a response? If so, then it has to send that response to some queue, even if it's a temp queue.
If your service does not send a response then it does not meet our definition of a "service". What is there to virtualize?
the same queue will send the acknowledgement to the application saying the message is received.
If both the client and service sides are listening on the same queue then how do they avoid receiving each other's messages?
The client side can use a correlation scheme to filter out everything except the acknowledgement message it's looking for.
But how does the service side avoid receiving its own acknowledgement message? The only message properties you can filter on with IBM MQ Native mode are correlation ID, message ID, group ID, sequence number, and offset. They would have to be abusing one of those properties in order to allow the service side to filter out everything except requests. If they are, then that's something we *can* support, but only with the new IBM MQ Native transport protocol in 8.x.
let me explain this scenario.. im sending a message into the queue with the request number. after the queue received it, it ll send the acknowledgement that the message with this request number is received. Later it may update the DB with the message it received.
But the part im trying to virtualize is from my application im sending the message to Q and i have to receive the acknowledgement from same Q.
If both messages and acknowledgements are being sent to the same queue, then how does each side separate them out so that it only receives messages *or* acknowledgments? How does the service side, the side that's receiving the messages, know not to pick up acknowledgements as well? How does the client side, the side that's receiving acknowledgments, know not to pick up messages as well? The two sides can't just be listening to the same queue without any filtering because they will end up receiving messages meant for the other side. My question is: how exactly is each side doing its filtering?
What is a request number? Is this something that appears in the bodies of the message and acknowledgement? You cannot do filtering based on something in the body of a message, it has to be in the message properties. And in IBM MQ Native's case, only a few message properties.
Maybe we should start with an easy question: Are we talking about IBM MQ Native Mode or IBM MQ JMS Mode? JMS Mode has more functionally as far as filtering (but it still can;t filter based on something in the body of the message).
its IBM MQ JMS Mode. Sorry for the delay in response. im not keeping well.
If they're using JMS Mode then they must be using some kind of selector query in their service to prevent it from accidentally picking up its own acks. Maybe this selector query involves the "request number" you mentioned? Could they be using a custom JMS message property to store the "request number", and their service uses a selector query to check for the existing of that property?
Now, in addition to the creating the IBM MQ Direct Connection Factory asset and Queue assets, you will need to create an additional JMS Consumer asset that contains the correct selector query to use for the Proxy Request queue. When configuring the JMS VSE recorder you can enable PRO fields, edit the Proxy Request receive operation, and change the value of the 'JMS Consumer' field from 'Automatic' to your specially crafted JMS Consumer asset.
Note that you will still need to have a separate Proxy Request Queue and Live Request Queue. The JMS Consumer asset will allow you to use the same queue for both the Proxy Request Queue and Proxy Response Queue. And as long as their live service works the same say you can use the same queue for both the Live Request Queue and the Live Response Queue. But you cannot have a single queue being used for all four parts of the VSE recorder, the proxy and live sides need to be separate.
Mani, did Kevin's suggestions help you?
it gave me a insight on my issue. so working on his inputs. once it succeeds i will intimate.