暂停和恢复 MQTT 入站适配器

Pausing and resuming MQTT Inbound Adapter

我们有: 一个转换器,它从 mqtt 主题获取消息,解析、处理这些消息,并在特定验证后将它们发送到其他消息系统。如果无法访问目标系统,我们将创建一个特定事件并通过 org.springframework.context.ApplicationEventPublisher 的注入实例发送该事件。

我们希望: 在目标消息传递系统不可用的情况下,能够暂停(然后稍后恢复)我们入站 MQTT 适配器的使用。

我们确实有一组对这些适配器的引用,并且想编写实现 ApplicationListener 的 "Toggler" 并根据事件暂停或恢复消耗。

作为 MessageProducerSupport 的任何实例,MqttPahoMessageDrivenChannelAdapter 具有受保护的 doStart()doStop() 方法。是否应该尝试将它们用于 pausing/resuming 目的?

MessageProducerSupport 扩展了一个 AbstractEndpoint,它实现了 SmartLifecycle 与 public start()stop()。您可以简单地调用它们来停止从 MQTT 轮询消息并在需要时重新启动。