[英]How to know if a listener gets the message in JMS?
我正在使用Spring JMS和ActiveMQ異步地將消息從一個發送者發送到多個偵聽器。 所有偵聽器都訂閱ActiveMQ主題,以便可以將消息傳遞給它們。 我想知道特定的偵聽器是否從發件人那里獲取了消息。 有沒有辦法實現這個目標?
編輯:添加了JMS發送方和偵聽器類
這是我的郵件發件人類:
public class CustomerStatusSender {
private JmsTemplate jmsTemplate;
private Topic topic;
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
public void setTopic(Topic topic) {
this.topic = topic;
}
public void simpleSend(final String customerStatusMessage) {
jmsTemplate.send(topic, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage message = session.createTextMessage("hello from sender.");
message.setStringProperty("content", customerStatusMessage);
return message;
}
});
}
}
這是消息監聽器之一:
public class CustomerStatusListener implements MessageListener {
public void onMessage(Message message) {
if (message instanceof TextMessage) {
try {
System.out.println("Subscriber 1 got you! The message is: "
+ message.getStringProperty("content"));
} catch (JMSException ex) {
throw new RuntimeException(ex);
}
}
}
}
在sender類中調用simpleSend()
方法后,訂閱此主題的所有偵聽器都將異步獲取此消息。 但我想知道這個特定的CustomerStatusListener
收到來自郵件發件人的郵件。 如何異步進行? 我假設我不能在發送者和監聽器中使用ReplyTo
,如果我想異步地執行其中一個答案。 我需要在發送方和偵聽器類中添加什么才能從偵聽器獲取消息接收確認?
我之前遇到過這樣的情況。 我使用了兩個主題來處理場景。 第一個主題用於發布,第二個主題用於收據。 這是我在我的應用程序中的流程。
我希望它能解決你的問題..
您必須設置replyTo並在收到消息時讓偵聽器回復。 您可以為回復創建TemporaryQueue。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.