集群环境
不支持主从自动切换,但是可以使服务停止,写脚本使从节点变成主节点
同步双写,异步复制都是对应双主双从
主从模式集群环境构建与测试
同步刷盘,投递一条消息后,关闭主节点,生产者拿到消息后反应的是消息投递失败
异步刷盘,投递一条消息后,关闭主节点,生产者拿到消息后反应的是消息投递成功
主节点上线,消息同步后,consumer在拉消息的时候,不在拉取这条已经被消费的消息,会做一个标记
关闭先有的服务
# cd /usr/local/rocketmq/bin
# sh mqshutdown broker
# sh mqshutdown namesrv
# --等待停止
# rm -rf /usr/local/rocketmq/store
# mkdir /usr/local/rocketmq/store
# mkdir /usr/local/rocketmq/store/commitlog
# mkdir /usr/local/rocketmq/store/consumequeue
# mkdir /usr/local/rocketmq/store/index
启动时先启动nameserver,再启动broker,关闭时先关闭broker和关闭nameserver
从节点配置
从一个服务器复制到另外一个服务器
软链接
创建对应mq目录
创建日志
配置内存
主从配置
nameserver
broker-a.properties
broker-a-s.properties
配置复制上面的配置,对应修改
配置覆盖
82用的是从节点配置
启动
# cd /usr/local/rocketmq/bin
# nohup sh mqnamesrv &
81主节点
82从节点
控制台
配置修改
界面
故障测试
先发一条消息
msgId是唯一的
关闭主节点
启动consumer
消息已被消费
重新启动broker
总结
可以做最大努力尝试的机制,比如说重试五次失败后,直接记录日志或者数据库进行一个入库,表示这个消息最终失败,然后返回一个success,然后把失败消息进行一个人工处理