我有一个客户端使用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()
?
设置需要进行哪些更改以便客户端异步接收响应?
答案 0 :(得分:0)
是的,convertAndSend()
将异步发送消息。客户端不会等待回答。
服务器可以将应答发送到另一个队列,客户端可以收听此消息。
answer -queue需要另一个目的地。
服务器端的 @JmsListener(destination = "question")
和客户端的@JmsListener(destination = "answer")
。