配置 RabbitMQ 桥接规则

    1. bridge.rabbit.hook.client.subscribe.1 = {"action": "on_client_subscribe", "rabbit": 1, "exchange": "direct:emq.subscription"}
    2. bridge.rabbit.hook.message.publish.1 = {"topic": "$SYS/#", "action": "on_message_publish", "rabbit": 1, "exchange": "topic:emq.$sys"}
    3. bridge.rabbit.hook.message.publish.2 = {"topic": "#", "action": "on_message_publish", "rabbit": 1, "exchange": "topic:emq.pub"}
    1. routing_key = subscribe
    2. exchange = emq.subscription
    3. headers = [{<<"x-emq-client-id">>, binary, ClientId}]
    4. payload = jsx:encode([{Topic, proplists:get_value(qos, Opts)} || {Topic, Opts} <- TopicTable])

    客户端取消订阅事件转发 RabbitMQ

    1. routing_key = binary:replace(binary:replace(Topic, <<"/">>, <<".">>, [global]),<<"+">>, <<"*">>, [global])
    2. headers = [{<<"x-emq-publish-qos">>, byte, Qos},
    3. {<<"x-emq-client-id">>, binary, pub_from(From)},
    4. {<<"x-emqx-topic">>, binary, Topic}]
    5. payload = Payload

    MQTT 消息确认 (Ack) 事件转发 RabbitMQ

    1. routing_key = puback
    2. exchange = emq.acked
    3. headers = [{<<"x-emq-msg-acked">>, binary, ClientId}],
    4. payload = emqx_base62:encode(Id)
    1. https://github.com/rabbitmq/rabbitmq-tutorials

    启用 RabbitMQ 桥接插件

    1. ./bin/emqx_ctl plugins load emqx_bridge_rabbit