离了大谱 2023-02-07 17:46 采纳率: 33.3%
浏览 22

rocketmq二主二从异步集群高可用测试过程中的问题

rocketmq二主二从异步集群高可用测试
broke-a、broke-b-s在同一条服务器
broke-b、broke-a-s在同一台服务器
编写一个简单的同步消息生产、消费springboot程序,生产消息300条,进入rocketmq控制台可以查看300条消息大概是均分给了broke-a和broke-b,然后kill停掉broke-b,调用消费逻辑,发现只有一半的信息被消费。
重启broke-b后剩下一半再被消费。
即集群测试高可用性有问题,不知道问题是出在broke-b未向broke-b-s复制消息,还是消费程序不能自动切换从broke-b-s读取消息

  • 写回答

2条回答 默认 最新

  • 北海 2023-02-07 18:07
    关注

    这个问题可能是由于 RocketMQ 的异步复制导致的。当主节点 broke-b 停止工作时,从节点 broke-b-s 可能还未完成消息的复制,因此消费者只能读取到一半的消息。而在 broke-b 重启后,从节点 broke-b-s 完成了消息的复制,消费者才能读取到剩下一半的消息。

    为了解决这个问题,可以通过以下方法:

    • 调整 RocketMQ 集群的同步配置,以确保从节点完成消息复制后主节点才停止工作。

    • 在消费者程序中,使用自动切换的功能,以确保消费者可以在主节点停止工作时从从节点读取消息。

    • 可以改用同步复制,以保证消息完整的复制和消费。

    希望以上内容对你有帮助

    评论

报告相同问题?

问题事件

  • 创建了问题 2月7日

悬赏问题

  • ¥15 Opencv(C++)异常
  • ¥15 VScode上配置C语言环境
  • ¥15 汇编语言没有主程序吗?
  • ¥15 这个函数为什么会爆内存
  • ¥15 无法装系统,grub成了顽固拦路虎
  • ¥15 springboot aop 应用启动异常
  • ¥15 matlab有关债券凸性久期的代码
  • ¥15 lvgl v8.2定时器提前到来
  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错