ActiveMQ Artemis 和 MQTT 桥接

ActiveMQ Artemis and MQTT bridging

Mosquitto MQTT 代理提供了一个功能来桥接两个 MQTT 代理以发布和订阅消息。这是描述 here.

当任何客户端向 ActiveMQ Artemis 代理发布消息时,我希望这些消息基于配置的主题映射自动发布到另一个 MQTT 代理。我想知道这是否可以通过 ActiveMQ Artemis 的内置功能或可能通过代理插件来实现。

Artemis 确实具有 "core" 协议的桥接功能以及通用的 JMS 桥接实现,但它 没有 MQTT 内置桥接功能。另外,出于两个原因,我认为通过代理插件实现它不是一个好主意。首先,插件确实应该尽可能低延迟,因为插件的任何延迟都会影响任何其他客户端。其次,插件架构的结构不适合这项任务;事实上,我完全不确定这是否可能。

也就是说,我看到了两种可能的解决方案:

  1. 创建一个 Camel 路由来完成桥接工作并将其作为 WAR 部署到 Artemis 附带的嵌入式 Jetty 实例。 Camel 路由将 运行 在与 Artemis 代理相同的 JVM 中,因此不需要额外的 processes/management。骆驼易于使用且功能极其强大。 Artemis 附带了 an example 如何做到这一点。
  2. 以桥接模式部署 Mosquitto 代理以在代理之间移动消息。