使用Rabbitmq作为MQTT Broker搭建高可用集群方案

2024-01-26  本文已影响0人  Messix_1102

一. 集群搭建 参照这里

二. 开启MQTT插件

每台服务都需要进入rabbitmq控制台, 执行下面命令

// 开启mqtt支持
rabbitmq-plugins enable rabbitmq_mqtt
rabbitmq-plugins enable rabbitmq_web_mqtt
// 开启web管理端支持(这一步一般在集群搭建前都设置成了)
rabbitmq-plugins enable rabbitmq_management

路径: D:\A1_application\Rabbitmq\rabbitmq_server-3.12.11\sbin>, 要以管理员身份运行

三. 配置MQTT协议的Nginx代理, 参照这里

四. 设置镜像策略

为配合镜像队列使用, 客户端连接需要设置 WithCleanSession(false), 并且以Qo1的策略订阅
C#客户端代码 参照这里

  1. 进入任意一台服务管理界面选择Admin > Policies, 创建User Policies
  1. 填写完成点击提交, 策略会自动同步到其他节点
  2. 这时候进入交换机和队列界面, 会看到交换机或队列表格 Features 列都有个 ha-all, Node列后面有个 +2


    截图

ha-all意味着当前交换机或者队列数据都会复制到集群的其他服务上, 其中一台挂了或者网络断了, 客户端连上其他服务节点可以继续消费, 数据不会丢失
+2 意味着数据会被复制到其他几台服务上, 数字取决于在线集群的服务数量
开启镜像模式意味着RabbitMQ服务开销增大, 因为任何一条消息都需要复制到其他服务上, 集群越大, 开销越大. 可以通过调整第1步策略设置消息的复制范围.

五. 添加配置文件

  1. 进入安装目录\rabbitmq_server-3.12.11\etc, 创建rabbitmq.conf, 配置内容如下:
# 设置queue类型
# mqtt.durable_queue_type = quorum
# 设置默认监听端口
# mqtt.listeners.tcp.default = 1883
# 设置vhost
# mqtt.vhost            = /
# 设置交换机
# mqtt.exchange         = amq.topic

# 是否允许匿名访问
# mqtt.allow_anonymous  = true
# 默认用户名密码
# mqtt.default_user     = guest
# mqtt.default_pass     = guest
# ...

# 以上配置按需开启, 不知道怎么用就不要开启, 全部使用默认
  1. 把配置文件路劲配到系统环境变量, 告诉RabbitMQ去读取我们上一步添加的配置文件
变量名: RABBITMQ_CONFIG_FILE
变量值: D:\A1_application\Rabbitmq\rabbitmq_server-3.12.11\etc\rabbitmq
上一篇下一篇

猜你喜欢

热点阅读