RocketMq-RocketMQMessageListener标签解析

这篇具有很好参考价值的文章主要介绍了RocketMq-RocketMQMessageListener标签解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        rocketmq结合springboot使用起来十分方便,只要我们将实现类添加注解RocketMQMessageListener,并且实现接口RocketMQListener<MessageExt>,就可以轻松实现某topic的消费侧消费消息的功能。

springboot是如何使用这两点实现rocketmq消费功能的呢?

首先我们查看ListenerContainerConfiguration

ListenerContainerConfiguration是springboot注入到spring得类

该类实现了三个接口 ApplicationContextAware, SmartInitializingSingleton

ApplicationContextAware可以让该类感知spring容器SmartInitializingSingleton接口可以让该类bean单利初始化之后再加工bean类。该类的接口afterSingletonsInstantiated实现了实现RocketMQMessageListener注解各个类的,rocketmq容器注入工作。

@Override
    public void afterSingletonsInstantiated() {
        Map<String, Object> beans = this.applicationContext.getBeansWithAnnotation(RocketMQMessageListener.class)
            .entrySet().stream().filter(entry -> !ScopedProxyUtils.isScopedTarget(entry.getKey()))
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

        beans.forEach(this::registerContainer);
    }

registerContainer方法的含义是在注册rocket的容器。

1、获取容器名称,容器的名称是按照顺序编写的,举个例子

org.apache.rocketmq.spring.support.DefaultRocketMQListenerContainer_2文章来源地址https://www.toymoban.com/news/detail-581011.html

这是第二个注入到容器的mq容器。

2、生成DefaultRocketMQListenerContainer实例

2.1、解析RocketMQMessageListener标签的参数参数并注入容器字段中。

2.2、将我们的RocketMQMessageListener注入到字段rocketMQListener当中

3、将2生成的DefaultRocketMQListenerContainer实例注入到spring容器当中。

4、启动DefaultRocketMQListenerContainer容器。

container.start();

container内部启动consumer,rocketmq的客户端。

consumer类型为DefaultMQPushConsumer

        接下来就是为该监听器启动了一个DefaultMQPushConsumerImpl实现。DefaultMQPushConsumerImpl到此就是启动rocketmq客户端流程。springboot的标签RocketMQMessageListener解析就告一段落。

小结

        springboot实现了RocketMQMessageListener可以很轻松的实现客户端监听topic,并接收远程broker发送来的请求。springboot通过配置@Configuration给ListenerContainerConfiguration,实现解析@RocketMQMessageListener的过程。具体的,通过将我们的业务类首先包装成DefaultRocketMQListenerContainer,并注入spring容器当中。启动DefaultRocketMQListenerContainer的过程就是为该group,topic启动一个客户端,这样才能够获取远程broker信息。通过代码可以发现RocketMQMessageListener底层使用了DefaultMQPushConsumer类实现。也就是说RocketMQMessageListener使用的是推的模式获取远程broker信息。另外,推送模式是通过自动同步offset实现,拉模式可以手动设置offset同步时机相对灵活。

org.apache.rocketmq.spring.support.DefaultRocketMQListenerContainer_2

到了这里,关于RocketMq-RocketMQMessageListener标签解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【RocketMQ】CentOS8安装RocketMQ

    检查jdk环境 RocketMQ是基于java开发的,安装之前请先查看是否有jdk环境 如果没有请去官网(https://www.oracle.com/java/technologies/downloads/#java8)下载 下载RocketMQ安装包 前往官网(https://rocketmq.apache.org/download)下载,选择二进制文件 在Linux环境中安装 把下载好的文件传入Linux系统中,

    2024年02月12日
    浏览(48)
  • 08-Linux安装RocketMQ、RocketMQ控制台

    下载RocketMQ         http://rocketmq.apache.org/release_notes/release-notes-4.4.0/ 环境要求         Linux 64位操作系统         64bit JDK 1.8+ 1 上传文件到Linux系统         /usr/local/rocketMQ 2 解压到安装目录         unzip rocketmq-all-4.4.0-bin-release.zip 3 解压后的文件夹名为 rocketmq-4

    2024年02月05日
    浏览(39)
  • RocketMQ 学习教程——(二)SpringBoot 集成 RocketMQ

    在 Maven 仓库【https://mvnrepository.com/】中搜索 RocketMQ 依赖: 在 SpringBoot 项目的 Pom.xml 文件中添加对应 MQ 版本的依赖: YAML 配置 在 SpringBoot 项目的 yml 配置文件中添加以下配置: 创建监听器 创建一个 MQMsgListener 类用于监听 RocketMQ 的消息,类上标注注解: @Component 、 @RocketMQMe

    2024年02月03日
    浏览(44)
  • Springbootg整合RocketMQ ——使用 rocketmq-spring-boot-starter 来配置发送和消费 RocketMQ 消息

           本文解析将 RocketMQ Client 端集成为 spring-boot-starter 框架的开发细节,然后通过一个简单的示例来一步一步的讲解如何使用这个 spring-boot-starter 工具包来配置,发送和消费 RocketMQ 消息。 添加maven依赖: 修改application.properties 注意: 请将上述示例配置中的 127.0.0.1:9876 替换

    2024年03月22日
    浏览(43)
  • 【RocketMQ】RocketMQ 5.0新特性(三)- Controller模式

    在RocketMQ 5.0以前,有两种集群部署模式,分别为主从模式(Master-Slave模式)和Dledger模式。 主从模式 主从模式中分为Master和Slave两个角色,集群中可以有多个Master节点,一个Master节点可以有多个Slave节点。Master节点负责接收生产者发送的写入请求,将消息写入CommitLog文件,Sl

    2024年02月08日
    浏览(36)
  • 【RocketMQ】RocketMQ5.0新特性(一)- Proxy

    为了向云原生演进,提高资源利用和弹性能力,RocketMQ在5.0进行了架构的调整与升级,先来看新特性之一,增加了Proxy层。 计算存储分离 计算存储分离是一种分层架构,将计算层与存储层分开。 计算层指的是一些消耗计算资源的功能模块比如协议解析、消费管理等,存储指的

    2024年02月08日
    浏览(35)
  • 使用 Docker 安装 RocketMQ 使用 docker 安装 rocketmq

    Docker常用命令大全 RocketMQ 是一个分布式的消息中间件,由 NameServer 和Broker两个角色组成,是一种典型的基于发布/订阅模式的消息通信解决方案。 NameServer 是 RocketMQ 的命名服务,可以理解为类似于 DNS 的服务,它主要负责记录 Topic 的路由信息和 Broker 的地址信息。每个 Rocket

    2024年02月13日
    浏览(38)
  • 【RocketMQ】RocketMQ 5.0新特性(二)- Pop消费模式

    在RocketMQ 5.0之前,消费有两种方式可以从Broker获取消息,分别为Pull模式和Push模式。 Pull模式 :消费需要不断的从阻塞队列中获取数据,如果没有数据就等待,这个阻塞队列中的数据由消息拉取线程从Broker拉取消息之后加入的,所以Pull模式下消费需要不断主动从Broker拉取消息

    2024年02月08日
    浏览(42)
  • 动力节点RocketMQ笔记第三章RocketMQ集成SpringBoot

    22.1.1 创建项目,完整的pom.xml 22.1.2 修改配置文件application.yml 22.1.3 我们在测试类里面测试发送消息 往powernode主题里面发送一个简单的字符串消息 运行后查看控制台 22.1.4 查看rocketMq的控制台 查看消息细节

    2024年02月04日
    浏览(43)
  • rocketMq消息队列原生api使用以及rocketMq整合springboot

    使用RocketMQ的原生API开发是最简单也是目前看来最牢靠的方式。这里用SpringBoot来搭建一系列消息生产者和消息消费者,来访问之前搭建的RocketMQ集群。 首先创建一个基于Maven的SpringBoot工程,引入如下依赖: RocketMQ的官网上有很多经典的测试代码,这些代码虽然依赖的版本比较

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包