RocketMq消息生产消费简图

本文介绍了RocketMQ的消息生产消费过程,包括同步、异步、单向发送方式,强调了异步回调的使用。详细阐述了Broker处理消息的步骤,以及Consumer的拉取机制,特别是长轮询的实现。文章还讨论了RocketMQ消息堵塞的排查方法,包括监控消息延迟、ProcessQueue大小、consumeRequestQueue大小和单条消息处理速度。并提出了消息体增加时间戳属性以辅助排查问题的建议。
摘要由CSDN通过智能技术生成

 

1.生产消息分为:  同步,异步,单向发送。 建议使用异步回调的方式,注意这里的retryTimesWhenSendFailed是指生产者连接到broker的通信失败,连接成功后,因为broker的page cache busy,导致的生产失败,rocketmq本身不会重试(可参考DefaultMQProducerImpl.sendKernelImpl查看哪些异常是重试的)。如有必要,需要程序自行重试。 生产消息broker的处理图中是简化了的,其实broker接到消息后会先放一个SendThreadPoolQueue中,然后有一个线程不断拉取追加到MappedFile中。这里还涉及到一个快速失败,即SendThreadPoolQueue.size>10000,或者消息在SendThreadPoolQueue中存放时间过长(队头元素超过200ms),则执行快速失败逻辑。

2.如果开启trasientStorePoolEnable,RocketMQ将单独创建一个MappedByteBuffer内存缓存池,用来临时存储数据,数据先写入该内存映射中,然后由commit线程定时将数据从该内存复制到与目的物理文件(commitLog)对应的内存映射(MappedFile)中。RocketMQ引入该机制主要的原因是提供一种内存锁定,将当前堆外内存一直锁定在内存中,避免被进程将内存交换到磁盘。

3.ReputMessageService轮询CommitLog将新增的消息派发到ConsumerQueue和IndexFile中。

4. DefaultMQPushConsumerImpl其

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值