Spring JMS Producer和Consumer交互

时间:2017-02-23 12:13:23

标签: java spring spring-mvc spring-jms

我如何确定消费者是否已经从生产者那里收到消息,或者我如何通知生产者消息已经在Spring JMS中发送/消费?

1 个答案:

答案 0 :(得分:0)

您需要在生产者端使用org.springframework.jms.core.JmsTemplate.sendAndReceive(...)来使用请求/回复,而在消费者端,容器中设置的MessageListener方法必须返回一个值。

或让订阅ActiveMQ.Advisory.MessageConsumed.Queue的制作人通过访问某些属性(例如orignalMessageId)来通知消息,请点击此处http://activemq.apache.org/advisory-message.html

你可以像这样使用它:

            Destination advisoryDestination = org.apache.activemq.advisory.AdvisorySupport
                    .getMessageConsumedAdvisoryTopic(session.createQueue("yourQueue"));
            MessageConsumer consumer = session.createConsumer(advisoryDestination);
            consumer.setMessageListener(new MessageListener() {
                @Override
                public void onMessage(Message msg) {
                    System.out.println(msg);
                    System.out.println(((ActiveMQMessage) msg).getMessageId());
                    ActiveMQMessage aMsg = (ActiveMQMessage) ((ActiveMQMessage) msg).getDataStructure();
                    System.out.println(aMsg.getMessageId());
                }
            });