How to make a JMS Synchronous request

后端 未结 2 1883
无人及你
无人及你 2021-02-14 04:52

I have an webapp that is expected to fetch and display data from an External App which is accessible only via messaging (JMS).

So, if a user submits a request on a brows

相关标签:
2条回答
  • 2021-02-14 05:23

    The request/reply messaging pattern is useful for your requirement. You typically use a CorrelationId to relate request & reply messages.

    While sending request message you set JMSReplyTo destination on the message. Typically a temporary queue is used as JMSReplyTo destination. When creating a consumer to receive response use a selector with JMSCorrelationId, something like

    cons = session.createConsumer(tempDestination,"JMSCorrelationId="+requestMsg.JMSMessageId);

    At the other end, the application that is processing the request message must use the JMSReplyTo destination to send response. It must also use the MessageId of the request message and set it as CorrelationId of the response message.

    0 讨论(0)
  • 2021-02-14 05:28

    First, open the response queue. Then pass that object to the set reply-to method on the message. That way the service responding to your request knows where to send the reply. Typically the service will copy the message ID to the correlation ID field so when you send the message, take the message ID you get back and use that to listen on the reply queue. Of course if you use a dynamic reply-to queue even that isn't neessary - just listen for the next message on the queue.

    There's sample code that shows all of this. If you installed to the default location, the sample code lives at "C:\Program Files (x86)\IBM\WebSphere MQ\tools\jms\samples\simple\SimpleRequestor.java" on a Windows box or /var/mqm/toolsjms/samples/simple/SimpleRequestor.java on a *nix box.

    And on the off chance you are wondering "install what, exactly?" the WMQ client install is downloadable for free as SupportPac MQC71.

    0 讨论(0)
提交回复
热议问题