java – 如何知道侦听器是否在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,如果我想异步地执行其中一个答案.我需要在发送方和监听器类中添加什么才能从侦听器获取消息接收确认?

最佳答案
我之前遇到过这样的情况.我使用了两个主题来处理场景.第一个主题用于发布,第二个主题用于收据.这是我在我的应用程序中的流程.

>发件人向第一个主题发布“请求”消息.
>侦听器在收听消息< Request>时收到消息.宾语.
>在处理消息之后,监听器发送消息< Ack>反对第二主题.
>发件人依次收听消息< Ack>对象收到它.我添加了有关监听器的可识别信息,以找出哪些监听器最终得到了我的请求消息< Request>.

我希望它能解决你的问题..

转载注明原文:java – 如何知道侦听器是否在JMS中获取消息? - 代码日志