简体   繁体   English

Spring JMS生产者和消费者交互

[英]Spring JMS Producer and Consumer interaction

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

you need to use request/reply by using org.springframework.jms.core.JmsTemplate.sendAndReceive(...) on the producer side and on the consumer side the MessageListener method set in the container must return a value. 您需要通过在生产者端和消费者端使用org.springframework.jms.core.JmsTemplate.sendAndReceive(...)使用请求/答复,容器中设置的MessageListener方法必须返回一个值。

or make your producer subscribing to ActiveMQ.Advisory.MessageConsumed.Queue to be notified when the message is consumed by having access to some properties like orignalMessageId , take a look here http://activemq.apache.org/advisory-message.html 或通过访问orignalMessageId属性来使生产者订阅ActiveMQ.Advisory.MessageConsumed.Queue ,以便在消耗消息时收到通知,请在此处查看http://activemq.apache.org/advisory-message.html

you can use it like this : 您可以像这样使用它:

            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());
                }
            });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM