我有一个侦听一个队列的侦听器,我想要一个监听器,这样我的监听器需要在延迟1分钟的另一条消息之后消耗一条消息。我已经看到了侦听器容器的receiveTimeout属性,但我无法实现消息消耗的延迟。这是我的听众容器。
<!-- search message listener container -->
<bean id="listenerContainer" class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="queueNames">
<array>
<value>TEST_QUEUE</value>
</array>
</property>
<property name="messageListener" ref="messageListenerAdaptor" />
<property name="acknowledgeMode" value="AUTO" />
<property name="concurrentConsumers" value="1" />
<property name="receiveTimeout" value="60000" />
</bean>
答案 0 :(得分:0)
使用侦听器容器配置无法执行您想要的操作; receiveTimeout
只是容器在查看容器是否已经停止之前等待消息的时间。
你可以玩一些带有死亡字母和生存时间的中间队列的游戏,但这会很复杂。
如果您希望按计划收到消息而不是事件驱动,那么使用RabbitTemplate.receive()
(或receiveAndConvert()
)可能会更容易。
有new plugin for RabbitMQ可能会对您有所帮助。