无题
无题
John DoeRocketMQ
RocketMQ5.0中的几个角色NameServer、Broker 和 Proxy,它们的作用如下:
- NameServer: NameServer 是 RocketMQ 的名称服务器,负责管理消息队列和消费者组。
- Broker:Broker 是 RocketMQ 的消息代理服务器,负责接收、处理和存储消息。
- Proxy: Proxy 是 RocketMQ 的代理服务器,用于扩展消息代理服务器的性能和容量。Proxy 可以将消息路由 到多个 Broker 上,以实现负载均衡和容错。Proxy 还提供了一些接口,如队列管理、消费者管理、配置管理 等,供客户端使用。
总之,NameServer、Broker 和 Proxy 都是 RocketMQ 分布式消息代理服务器的重要组成部分,它们共同协作,实现消息的传输和处理。
在5.0版本中 Proxy 和 Broker 可以根据实际诉求可以分为 Local 模式和 Cluster 模式。
没有特殊的需求或者遵循从早期版本平滑升级的思路,可以选用Local模式。I
在 Local 模式下,Broker 和 Proxy 是同进程部署,只是在原有 Broker 的配置基础上新增 Proxy 的简易配置就可以运行。
在 Cluster 模式下,Broker 和 Proxy 分别部署,即在原有的集群基础上,额外再部署 Proxy 即可。
2. 消息的顺序保障
如何保证消息的顺序性,比如创建订单、修改订单、取消订单三个消息,如果不按照正常流程进行,最后订单的状态将是未知的,这就是消息的顺序性
要保证a、b、c三个消息的熟悉女为 a → b → c 该如何实现
- 消息顺序投递
- 消息顺序存储
- 消息顺序接收
要保证1成立,那么消息生产者应该有序保证顺序投递消息,避免多线程下产生并发问题
在rocketmq中,要保证2的成立,那么投递的消息应该在相同主题的同一个队列里面
要保证3成立,那么对于消费者就需要保证消息消费的有序进行
1. V5以下版本
- 生产消息的顺序性
发送消息的时候可以 MessageQueueSelector来实现消息存储的顺序性,可以选择相同的队列
- 消费消息的顺序性
消息的顺序消费可以使用MessageListenerOrderly保证消费的顺序性
2. V5及以上版本
- 生产消息的顺序性
创建顺序主题
mqadmin updateTopic -c DefaultCluster -t FIFOTopic -o true -n 127.0.0.1:9876 -a +message.type=FIFO
发送消息是利用消息分组来路由相同的队列 MessageBuilder#setMessageGroup
- 消费消息的顺序性
创建顺序消息消费者分组
mqadmin updateSubGroup -c DefaultCluster -g FIFOGroup -o true -n 127.0.0.1:9876



