zoukankan      html  css  js  c++  java
  • 基于emq x开源版实现服务重启后主题和消息恢复的完整方案(二)

    emqx_restart_resume

    用于emqx开源版 服务重启后恢复原订阅主题和持久化数据

    问题

    1. 开源版emq在服务重启后原订阅的主题会清空,在客户端保持原clientId,保持原session未重新订阅时,接不到服务器转发的消息。
    2. 开源版持久化会模型保存主题下的最后一条消息,在重启后也会被清空。

    解决方案

    利用EMQ X Web Hook插件将时间发送到指定的请求,利用Redis 和 EMQ X自带的Web API进行扩展,可查看博文了解详情

    • 基于emqx 3.2.7版本改造
    • message_publish传输更改为采用UDP方式
    • client_connected、session_subscribed、session_unsubscribed采用HTTP方式
    • EMQX服务启动后内部11883端口用于消息持久化恢复,在持久化消息恢复完成后开启1883端口监听
    • 在clear_session=False 的客户端连接成功后,进行已订阅主题查询及未订阅主题恢复
    • redis使用源码编译,采用RDB和AOP并行持久化

    安装说明

    • 生成镜像
      cd emqx_restart_resume
      docker build -t ubuntu18.04:emqx_restart_resume .

      说明:
      ubuntu18.04表示镜像名称,emqx_restart_resume表示标签

    • 启动容器
      docker ru
  • 相关阅读:
    Hadoop集群搭建-虚拟机安装(转)(一)
    集群环境搭建-SSH免密码登陆(二)
    Disruptor 极速体验
    Nexus3.0.0+Maven的使用(三)
    Nexus3.0.0+Maven的使用(二)
    Nexus3.0.0+Maven的使用(一)
    Spark读取Hbase的数据
    Java计算上下基线
    Spark算上下基线
    获取 iOS模拟器 里的安装包
  • 原文地址:https://www.cnblogs.com/gmhappy/p/13457039.html
Copyright © 2011-2022 走看看