在使用者或侦听器中发生异常时,暂停消息消耗的优雅方法是什么,因此消息可以重新排队。侦听器进程正在使用队列中的消息并调用不同的API。现在,如果API不可用,我们不想使用队列中的消息。有没有办法在有限的时间内停止从队列中消费消息,并在API可用时再次返回。
任何有关如何完成此操作的示例代码段也会有所帮助。
答案 0 :(得分:0)
在提出这样的问题时,通常最好显示一下您的配置片段,以便我们根据您使用框架的方式进行适当的回答。
您只需在侦听器容器bean上调用stop()
(和start()
)。
如果您使用的是@RabbitListener
,则容器不是bean,但可以通过RabbitListenerEndpointRegistry
bean获得。
在注册表上调用stop()
会停止所有容器。
或者,您可以致电registry.getListenerContainer(id).stop()
,其中id
是@RabbitListener
的{{1}}财产的价值。