RocketMq消息生产消费简图

 

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引入该机制主要的原因是提供一种内存锁定,将当前堆外内存一直锁定在内存中,避免被进程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值