从rabbitmq 3.8开始.rabbitmq已经包含了mqtt插件,但是默认不启动.
进入rabbitmq主机执行 rabbitmq-plugins enable rabbitmq_mqtt:

root@50f42796527f:/# rabbitmq-plugins enable rabbitmq_mqtt
Enabling plugins on node rabbit@50f42796527f:
rabbitmq_mqtt
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_mqtt
  rabbitmq_prometheus
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@50f42796527f...
The following plugins have been enabled:
  rabbitmq_mqtt

started 1 plugins.

此时启动了,注意mqtt默认启动1883端口.此时主机应该要对外开放1883端口.
这里就多了端口

需要注意的是:

  • 从3.8版本开始,该插件要求存在一定数量的群集节点。这意味着三分之二,五分之三,依此类推。
    该插件也可以在单个节点上使用,但不支持两个节点的集群。
    如果大多数群集节点都关闭,则其余群集节点将无法接受新的MQTT客户端连接。
  • 应当额外创建与mqtt相关的账户,下面命令创建了mqtt-test/123456.并且赋予虚拟机/ 且权限是***,并且赋予management的角色
# username and password are both "mqtt-test"
rabbitmqctl add_user mqtt-test 123456
rabbitmqctl set_permissions -p / mqtt-test ".*" ".*" ".*"
rabbitmqctl set_user_tags mqtt-test management
  • rabbitmq的mqtt插件的topic的原理是:
    默认topic交换机:amq.topic
    每消费者对应每一个queue,消息来后,循环发放到所有的queue,下图有3个消费者
    在这里插入图片描述
    在这里插入图片描述
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐