从同步更改为异步JMS消息处理

时间:2016-07-27 13:12:55

标签: java jms activemq

我有一个客户端使用JmsMessagingTemplate.convertSendAndReceive()发送消息并等待响应。

messagingTemplate.convertSendAndReceive(myDest, myRequestObj,
                RequestObj.class);

在服务器端,我有:

@JmsListener(destination = "myDest")
protected Message<MyResponseObj> handleRequest(final RequestObj requestObj) {
    return MessageBuilder.withPayload(newMyresponseObj)
            .setHeader(myHost)).build();
}

这很好用。

我现在想异步地做这件事。我仍然希望服务器发回响应,我仍然希望客户端接收它,我只是不希望客户端等待它。

在客户端,我可以为@JMSListener设置MyResponseObj。我是否只需更改我的客户端以调用JmsMessagingTemplate.convertAndSend(),而不是convertSendAndReceive?我是否需要在服务器端进行任何更改handleRequest()

设置需要进行哪些更改以便客户端异步接收响应?

1 个答案:

答案 0 :(得分:0)

是的,convertAndSend()将异步发送消息。客户端不会等待回答

服务器可以将应答发送到另一个队列,客户端可以收听此消息。

answer -queue需要另一个目的地

服务器端的

@JmsListener(destination = "question")和客户端的@JmsListener(destination = "answer")