在 SimpleMessageListenerContainer 中使用 receiveTimeout 属性
Use of receiveTimeout property in SimpleMessageListenerContainer
我有一个侦听一个队列的侦听器,我想要一个侦听器,以便我的侦听器需要在延迟 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>
侦听器容器配置无法满足您的需求; receiveTimeout
只是容器在查看容器是否已停止之前等待消息的时间。
您可以玩一些带有死信和生存时间的中间队列的游戏,但这会很复杂。
如果您想按计划获取消息而不是事件驱动,使用 RabbitTemplate.receive()
(或 receiveAndConvert()
)可能会更容易。
有一个new plugin for RabbitMQ可能对你有帮助。
我有一个侦听一个队列的侦听器,我想要一个侦听器,以便我的侦听器需要在延迟 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>
侦听器容器配置无法满足您的需求; receiveTimeout
只是容器在查看容器是否已停止之前等待消息的时间。
您可以玩一些带有死信和生存时间的中间队列的游戏,但这会很复杂。
如果您想按计划获取消息而不是事件驱动,使用 RabbitTemplate.receive()
(或 receiveAndConvert()
)可能会更容易。
有一个new plugin for RabbitMQ可能对你有帮助。