# 消息桥接

EMQ X 企业版桥接转发 MQTT 消息到 Kafka、RabbitMQ、Pulsar、RocketMQ、MQTT Broker 或其他 EMQ X 节点。

桥接是一种连接多个 EMQ X 或者其他 MQTT 消息中间件的方式。不同于集群,工作在桥接模式下的节点之间不会复制主题树和路由表。桥接模式所做的是:

按照规则把消息转发至桥接节点; 从桥接节点订阅主题,并在收到消息后在本节点/集群中转发该消息。

              ---------                     ---------                     ---------
Publisher --> | Node1 | --Bridge Forward--> | Node2 | --Bridge Forward--> | Node3 | --> Subscriber
              ---------                     ---------                     ---------
1
2
3

工作在桥接模式下和工作在集群模式下有不同的应用场景,桥接可以完成一些单纯使用集群无法实现的功能:

  • 跨 VPC 部署。由于桥接不需要复制主题树和路由表,对于网络稳定性和延迟的要求相对于集群更低,桥接模式下不同的节点可以部署在不同的 VPC 上,客户端可以选择物理上比较近的节点连接,提高整个应用的覆盖能力。
  • 支持异构节点。由于桥接的本质是对消息的转发和订阅,所以理论上凡是支持 MQTT 协议的消息中间件都可以被桥接到 EMQ X,甚至一些使用其他协议的消息服务,如果有协议适配器,也可以通过桥接转发消息过去。
  • 提高单个应用的服务上限。由于内部的系统开销,单个的 EMQ X 有节点数上限。如果将多个集群桥接起来,按照业务需求设计桥接规则,可以将应用的服务上限再提高一个等级。 在具体应用中,一个桥接的发起节点可以被近似的看作一个远程节点的客户端。

# 桥接插件列表

存储插件配置文件说明
emqx_bridge_mqttemqx_bridge_mqtt.confMQTT Broker 消息转发
emqx_bridge_kafkaemqx_bridge_kafka.confKafka 消息队列
emqx_bridge_rabbitemqx_bridge_rabbit.confRabbitMQ 消息队列
emqx_bridge_pulsaremqx_bridge_pulsar.confPulsar 消息队列
emqx_bridge_rocketemqx_bridge_rocket.confRocketMQ 消息队列

WARNING

EMQ X Broker 中仅适用以下操作:

  • MQTT 桥接
  • RPC 桥接

其余均是 EMQ X Enterprise 专属功能,推荐使用规则引擎 以实现更灵活的桥接功能。