【RocketMQ】 消息队列作用以及带来的问题

消息队列的作用

  1. 流量削峰
  2. 应用解耦
  3. 数据分发

带来的问题

  1. 消息的重复消费
  2. 消息丢失
  3. 消息的消费顺序
  4. 一致性问题。 B,C,D三台服务器消费同一个消息,BC成功,D失败

 

RocketMQ 创建消息队列的过程涉及几个关键步骤。首先,需要理解 RocketMQ 的基本架构组件包括 NameServer、Broker、Producer 和 Consumer。 ### 1. 名词解释 - **NameServer**:负责路由管理和服务发现。 - **Broker**:存储消息的地方,分为 Master Broker 和 Slave Broker。 - **Topic**:消息主题,类似于传统 MQ 中的消息类型。 - **Message Queue (消息队列)**:每个 Topic 可以有多个 Message Queue 来分散负载并提高并发处理能力。 ### 2. 消息队列的创建过程 通常情况下,在使用 RocketMQ 发送或消费消息之前,并不需要显式地去 "创建" message queue消息队列)。因为当 Producer 第一次发送某个特定 topic 的消息到 broker 端时,如果该 topic 尚未存在,则会自动触发其初始化流程: #### 步骤一:配置文件设置 确保 `broker.conf` 配置文件中有合理的默认值设定给新生成的主题及相应的队列数等属性;例如: ```properties # 默认主题的最大队列数目 defaultTopicMaxQueueNum=4 ``` #### 步骤二:动态添加 Topic 或者预先定义好 Topics 通过命令行工具如 `mqadmin updateTopic -n nameserverAddr -t mytopicname -q 8` 可以手动增加指定数量queue的新topic; 也可以是在应用启动前就在namesrv集群上静态注册好一批常用topics及其queues信息。 一旦应用程序开始工作并向选定的主题发布数据点,那么就会依据上述规则自动生成相应数量的消息队列供后续操作使用了。 #### 注意事项: * 生产环境中建议提前规划好所需的 topics 数量以及各自关联的 queue 容量大小,避免因频繁变更而带来的性能损耗风险。 * 如果对吞吐率要求较高的话,适当增大单个 topic 下面所包含的 queues 总计能有效提升整体系统的水平扩展性和事务处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值