在 运行 时间内停止 RabbitMq 侦听器
Stop RabbitMq listeners during run time
我的 beans/listeners 是使用 IntegrationFlows
构建的
例如
@Bean
IntegrationFlow registerDevices() {
return IntegrationFlows
.from(adapter)
.channel(channel)
.get();
}
有这样一种方法可以在发生某些事情后停止监听器,端点call/event
RabbitListenerEndpointRegistry
不起作用,因为我没有使用 @RabbitListener
可以设置autostart up - false
,但如何在运行时很好地操作它?
首先,请在此处为您的问题选择标签时要小心。您目前关注的确实属于 Spring Integration,与 Spring AMQP 无关。虽然你是对的:生命周期控制实际上最终进入 Spring AMQP 的 ListenerContainer
。
无论如何:您的用例的最终用户 API 是 Spring 集成逻辑的一部分。
查看 from()
的第二个参数:
.from(adapter, e -> e.id("myAmqpAdapter"))
因此,拥有 id
你可以在运行时到达你的 AmqpInboundChannelAdapter
(实现 Lifecycle
)并在你需要时停止和启动它。
在文档中查看更多信息:
https://docs.spring.io/spring-integration/docs/current/reference/html/dsl.html#java-dsl-endpoints
而且这种模式也很适合在船上使用:
我的 beans/listeners 是使用 IntegrationFlows
例如
@Bean
IntegrationFlow registerDevices() {
return IntegrationFlows
.from(adapter)
.channel(channel)
.get();
}
有这样一种方法可以在发生某些事情后停止监听器,端点call/event
RabbitListenerEndpointRegistry
不起作用,因为我没有使用 @RabbitListener
可以设置autostart up - false
,但如何在运行时很好地操作它?
首先,请在此处为您的问题选择标签时要小心。您目前关注的确实属于 Spring Integration,与 Spring AMQP 无关。虽然你是对的:生命周期控制实际上最终进入 Spring AMQP 的 ListenerContainer
。
无论如何:您的用例的最终用户 API 是 Spring 集成逻辑的一部分。
查看 from()
的第二个参数:
.from(adapter, e -> e.id("myAmqpAdapter"))
因此,拥有 id
你可以在运行时到达你的 AmqpInboundChannelAdapter
(实现 Lifecycle
)并在你需要时停止和启动它。
在文档中查看更多信息:
https://docs.spring.io/spring-integration/docs/current/reference/html/dsl.html#java-dsl-endpoints
而且这种模式也很适合在船上使用: