RocketMQListener监听器的使用思考

本文深入解析了Spring RocketMQ如何通过实现RocketMQListener接口消费消息的内部机制。通过分析源码,发现Spring RocketMQ底层使用DefaultRocketMQListenerContainer封装原生Consumer,该容器在bean初始化后调用initRocketMQPushConsumer方法设置消息监听器。监听器根据业务逻辑决定是否ack消息。此外,文章还提供了官方源码链接及一系列消息中间件的演示demo供学习参考。

前言

刚开始用Spring-rocketmq时,好奇怎么只需要一个实现了RocketMQListener接口的自定义监听器就可以消费消息了:

这个自定义的消息监听器里,并没有如rocketmq原生Consumer那样对消息进行ack或者nack,那他到底是怎么控制的?为此专门看了下源码,全局搜了@RocketMQMessageListener注解,搜到一些东西,分享下:

源码

核心类:ListenerContainerConfiguration/DefaultRocketMQListenerContainer

首先ListenerContainerConfiguration实现了SmartInitializingSingleton接口,会在bean都实例化完之后,触发afterSingletonsInstantiated方法:

上面从Spring上下文中拿到了所有加了@RocketMQMessageListener的bean,咱们自定义的这个CommonMessageListener也就拿到了,接着执行registerContainer方法,其中的关键代码:

上面通过createRocketMQListenerContainer方法创建了一个DefaultRocketMQListene

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值