RocketMQ-5个常见问题

一、如何保证顺序消费

        解决方案:同一语义的消息放入同一个队列。

        实现方式:重写MessageQueueSelector中send方法。将消息放入同一个队列,来保证顺序消费。

        如何放入同一队列:例如,同一订单的N个消息需要保证顺序,则可以根据订单号,Hash取模确定发送到同一个队列。

二、如何避免重复消费

        保证消费幂等,即消费多次对各方无影响

三、如何实现分布式事务

        方案一:两阶段提交和事务状态回查

        

  • Half Message,半消息

        暂时不能被 Consumer消费的消息。Producer已经把消息发送到 Broker端,但是此消息的状态被标记为不能投递,处于这种状态下的消息称为半消息。事实上,该状态下的消息会被放在一个叫做 RMQ_SYS_TRANS_HALF_TOPIC的主题下。

        当 Producer端对它二次确认后,也就是 Commit之后,Consumer端才可以消费到;那么如果是Rollback,该消息则会被删除,永远不会被消费到。

  • 事务状态回查

        我们想,可能会因为网络原因、应用问题等&#

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1. RocketMQ的架构是怎样的? RocketMQ的架构主要包括Producer、Broker、Consumer三个组件,其中Producer负责消息的生产,Broker负责消息的存储和转发,Consumer负责消息的消费。 2. 如何保证消息的可靠性? RocketMQ采用了多种方式保证消息的可靠性,比如消息的持久化存储、消息的冗余备份、消息的重试机制、消息的顺序保证等。 3. RocketMQ的消息模型有哪些? RocketMQ的消息模型主要分为点对点模型和发布订阅模型两种。点对点模型中一个消息只能被一个消费者消费,发布订阅模型中一个消息可以被多个消费者消费。 4. RocketMQ的消息存储方式是怎样的? RocketMQ的消息存储方式采用了基于文件的存储方式,将消息存储在磁盘上,同时采用了内存映射的方式提高读写效率。 5. RocketMQ的消息发送流程是怎样的? RocketMQ的消息发送流程主要包括消息的生产、消息的发送、消息的存储和消息的消费四个步骤。其中消息的生产和消费由应用程序完成,消息的发送和存储由RocketMQ的Broker完成。 6. 如何保证消息的顺序性? RocketMQ可以通过设置消息的顺序关键字和消息的队列选择策略来保证消息的顺序性,保证同一个顺序关键字的消息只会被同一个消费者消费,从而保证消息的顺序性。 7. 如何保证消息的高可用性? RocketMQ可以通过Broker的冗余备份、Master-Slave模式、自动故障转移等方式保证消息的高可用性,从而保证系统的稳定性和可靠性。 8. RocketMQ的消息堆积如何处理? RocketMQ可以通过设置消息的存储时间、消息的过期时间、消息的重试机制等方式避免消息的堆积问题,从而保证系统的正常运行。同时也可以通过监控系统对消息的堆积情况进行实时监控和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值