Spring Amqp - 是否可以在 basicGet() 之前挂接自定义处理程序?
Spring Amqp - Is it possible to hook a custom handler before a basicGet()?
我有一个用 @RabbitHandler
注释的消息处理程序,它从队列中拾取和处理消息。
用例
在部署期间,实例不应从队列中选取任何消息。有什么地方可以挂钩并检查我的实例是否被阻止(从数据库读取以检查)并停止接收消息。我检查了我们是否有 setAfterReceivePostProcessors
但我实际上正在寻找的是 beforeReceiveProcessor
之类的东西来解决我检查而不是轮询的用例。它根本不应该达到我的 @RabbitHandler
方法。有没有可能达到这种程度的控制?
如果没有,唯一可能的方法是编写自定义轮询器吗?
@RabbitListener
背后的基础设施使用 basicConsume()
,而不是 basicGet()
。
您可以使用 RabbitListenerEndpointRegistry
bean 控制侦听器容器的生命周期。
@RabbitListener(id = "foo", ..., autoStartup = "false")
然后
registry.getListenerContainer("foo").start();
您也可以使用 属性 占位符。
@RabbitListener(id = "foo", ..., autoStartup = "${should.start:false}")
我有一个用 @RabbitHandler
注释的消息处理程序,它从队列中拾取和处理消息。
用例
在部署期间,实例不应从队列中选取任何消息。有什么地方可以挂钩并检查我的实例是否被阻止(从数据库读取以检查)并停止接收消息。我检查了我们是否有 setAfterReceivePostProcessors
但我实际上正在寻找的是 beforeReceiveProcessor
之类的东西来解决我检查而不是轮询的用例。它根本不应该达到我的 @RabbitHandler
方法。有没有可能达到这种程度的控制?
如果没有,唯一可能的方法是编写自定义轮询器吗?
@RabbitListener
背后的基础设施使用 basicConsume()
,而不是 basicGet()
。
您可以使用 RabbitListenerEndpointRegistry
bean 控制侦听器容器的生命周期。
@RabbitListener(id = "foo", ..., autoStartup = "false")
然后
registry.getListenerContainer("foo").start();
您也可以使用 属性 占位符。
@RabbitListener(id = "foo", ..., autoStartup = "${should.start:false}")