2016-07-27 70 views
0

我有一個使用JmsMessagingTemplate.convertSendAndReceive()發送消息並等待響應的客戶端。從同步更改爲asynchronus JMS消息處理

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

在服務器端,我有:

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

這工作得很好。

我想做到這一點asynchrously現在。我仍然希望服務器發送迴應,並且我仍然希望客戶端收到它,我只是不希望客戶端等待它。

在客戶端,我可以設置爲MyResponseObj一個@JMSListener。我會改變我的客戶端來調用JmsMessagingTemplate.convertAndSend(),而不是convertSendAndReceive?我需要在服務器端handleRequest()上做任何更改嗎?

怎麼設置的東西,所以客戶端將異步接收響應要求的變化?

回答

0

是,convertAndSend()將發送消息異步的。客戶不會等待回答

服務器可以發送回答到另一個隊列,並且客戶端可以聽到這個。

您將需要另一個目的地答案 -queue。

@JmsListener(destination = "question")在服務器端和@JmsListener(destination = "answer")於客戶端。