ActiveMQ 目的两种消费方式:
- 通过调用异步消费
MessageListener
- 通过入队同步消费,让客户端调用
receive()
首先我使用的是@JmsListener
. 这个注解使 Spring 创建一个异步消费者,即它receive()
在队列上创建一个。
我尝试使用MessageListener
,但 Spring 继续创建一个同步消费者。
所以我查看了 Spring JMS 和 ActiveMQ 代码。
创建异步使用者的唯一方法是ActiveMQSession.createConsumer
使用 a调用MessageListener
:
public MessageConsumer createConsumer(Destination destination, MessageListener messageListener) throws JMSException {
return createConsumer(destination, null, messageListener);
}
然后我在 Spring JMS 上寻找类似的调用,但我什么也没找到。
目前,我认为 Spring JMS 无法创建带有 a 的消费者MessageListener
,即创建同步消费者(如上面的第一种消费方式)。
我对吗?