关于RocketMQ的性能优化

Kafka也是一款高性能的消息中间件,在大数据的场景中经常会使用,但是因为Kafka不支持消息失败重试,定时消息,事物消息,它的顺序消息也有明显的缺陷的,在复杂的业务场景下难以支撑。为了方便大家去阅读源码,我简单的跟大家说一下。在分布式服务(SOA)的架构中,我们是不允许任何中间件是单点的,服务发现机制也是必备的。:消息队列,组成Topic的最小单元,一个Topic可以有多个消息队列,Topic是逻辑上的概念,而Queue是物理存储,在Consumer消费Topic时底层实际拉取的是Queue的消息。
摘要由CSDN通过智能技术生成

RocketMQ Binder集成

上回书说到Spring Cloud Stream,一个Spring提供的简单易用的消息编程模型,也算是一种规范吧,其内部是基于发布/订阅模型实现。如果不熟悉,咱可以翻翻上回书哈。

RocketMQ也是根据我们上面说的Spring Cloud Stream的规范做了相应的自己的实现,这里咱们就不展开细说了,有兴趣大家可以去翻翻源码。RocketMQ 由于对应的Binder类实现,可以说是集成了消息发送,消息订阅。为了方便大家去阅读源码,我简单的跟大家说一下。

集成消息发送

RocketMQMessageChannelBinder类根据规范完成RocketMQMessageHandler的创建和初始化,RocketMQMessageHandler 是消息处理器MessageHandler(上期有提到)的具体实现,其主要作用是转化消息格式并且发送消息,此类中持有RocketMQTemplate对象,RocketMQTemplate是对RocketMQ客户端API的封装。

是不是已经开始有点晕了?

简单来说,这个handler是一个很关键的类,它就是包含消息发送的逻辑处理,解析Message对象头中的参数,调用上面说的RocketMQTemplate中不同的消息发送接口。无论你是发送的顺序消息,事物消息,定时消息还是普通消息,都是由Message对象头(Header)中的属性决定,在我们业务代码创建Message的时候去设置。

划重点咯,如果大家有兴趣,可以把RocketMQMessageHandler这个类当作一个入口,就可以很轻松看到整个消息发送的流程。

集成消息订阅

同样,由RocketMQMessageChannelBinder类根据协议完成RocketMQInboundChannelAdapter(简称adapter)的创建和初始化,顾名思义,这个adapter适配器需要适配Spring Framework中的重试和回调机制ÿ

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值