美文网首页
使用Rabbitmq作为MQTT Broker搭建高可用集群方案

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

作者: Messix_1102 | 来源:发表于2024-01-26 15:37 被阅读0次

    一. 集群搭建 参照这里

    二. 开启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
    • Name: ha-all (随便起)
    • Pattern: ^ (匹配哪些对象, ^ 匹配所有, 其他写法自己查阅官方文档)
    • Apply to: Exchanges and queues (应用到哪些对象)
    • Definition:
      • ha-mode:all (指明镜像队列的模式, 有效值为 all/exactly/nodes)
      • ha-sync-mode:automatic (进行队列中消息的同步方式,有效值为automatic和manual)


        截图
    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
    

    相关文章

      网友评论

          本文标题:使用Rabbitmq作为MQTT Broker搭建高可用集群方案

          本文链接:https://www.haomeiwen.com/subject/rgsbodtx.html