OPFUN Talk萌课堂,专注青少在线语言启蒙!——寰宇咨询中心资讯网

上海 18761612306

首页 > 资讯列表 > 资讯详情

ket一对一app:rocktmq-spring

来源:小编 编辑:小编 日期:2023-01-22 12:11:10

简介:本文将 rocktmq-spring-boot 简单介绍一下设计实现,读者可以通过这篇文章了解一下。 RocketMQ Client 端集变成 spring-boot-starter 开发框架的细节,通过一个简单的例子,我们将一步一步地解释如何使用这个例子 spring-boot-starter 配备工具包,发送和消费 RocketMQ 消息。

在 Spring 生态中玩转 RocketMQ 系列文章:

《怎样在 Spring 生态中玩转 RocketMQ?》

关于罗美琪和春波特的故事...》

《RocketMQ-Spring 毕业两周年,为什么会变成? Spring 最受欢迎的生态学 messaging 实现?》

通过这篇文章,你会知道:

Spring 新闻框架介绍

rocketmq-spring-boot 具体实现

使用示例

前言

上世纪 90 年底,随之而来 Java EE(Enterprise Edition) 出现,特别是 Enterprise Java Beans 应用程序需要复杂的描述符配置和复杂的代码实现,增加了许多开发者的学习曲线和开发成本,这是建立在简单基础上的 XML 配置和一般 Java 目标(Plain Old Java Objects)的 Spring 技术应时而生,依赖注入(Dependency Injection), 控制反转(Inversion of Control)并且面向切面编程(AOP)技术更敏捷地解决了传统问题 Java 公司和版本不足。

随着 Spring 根据注释的不断演变,(Annotation)配置逐渐被取代 XML 文档配备,2014 年 4 月 1 日,Spring Boot 1.0.0 正式发布,以“约定大于配置”为基础(Convention over configuration)这个概念可以快速地开发、检测、运行和部署 Spring 应用程序,并且可以简单地与各种启动器(例如 spring-boot-web-starter)结合起来,让应用程序直接以命令行的形式运行,不再需要部署到单个容器中。这是一个简单、直接、快速地构建和开发应用的过程,可以通过协议配置和简化布局,受到越来越多开发者的欢迎。

为了运用 Spring Boot 快速发展,使用户能更加灵活地使用。 RocketMQ 消息客户端,Apache RocketMQ 社区推出了 spring-boot-starter 实现。伴随着分布式事务消息功能 RocketMQ 4.3.0 最近版本发布,相关版本升级。 spring-boot 代码,支持分布式事务的回查和通过注释发送事务信息。

本论文将简要介绍当前的设计实现情况,读者可以通过本文了解到 RocketMQ Client 端集变成 spring-boot-starter 开发框架的细节,然后通过一个简单的例子,一步一步地解释如何使用这个例子。 spring-boot-starter 配备工具包,发送和消费 RocketMQ 消息。

Spring 里面的新闻框架

1. Spring Messaging

2. Spring Cloud Stream

Spring Cloud Stream 融合了 Spring Integration 注释及功能,其应用模型如下:

通过这种方式,开发者可以很容易地将不同类型的中间件应用到相同的代码中:只需在构建过程中包含不同的内容。 Binder。在更复杂的使用场景中,还可以在使用中包装多个。 Binder 并且让它自己选择 Binder,甚至在运行过程中使用不同的通道。 Binder。

spring-boot-starter的实现

1. spring-boot-starter 的实现步骤

对于一个 spring-boot-starter 实现需要包括以下几个方面:

1)在 pom.xml 的概念

定义最终会产生 starter 部件信息

<groupId>org.apache.rocketmq</groupId><artifactId>spring-boot-starter-rocketmq</artifactId><version>1.0.0-SNAPSHOT</version>

定义依赖包

分为两部分:Spring 自己的依赖包和 RocketMQ 的依赖包。

二是环境变量类

应用特性环境变量类型的定义 RocketMQProperties,这个 Bean 定义一组默认属性值。用户正在使用最后一个 starter 当然,取值可以根据该类定义的属性进行修改,而不是直接修改该类配置,而是修改该类配置。 spring-boot 应用中对应的环境变量:src/main/resources/application.properties。

定义自动加载类

定义 src/resources/META-INF/spring.factories 文件中的自动加载类, 其目的是让 spring boot 根据本文所指定的自动配置类别,自动初始化相关 Bean、Component 或 Service,其内容如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.apache.rocketmq.spring.starter.RocketMQAutoConfiguration

在 RocketMQAutoConfiguration 在类的具体实现中,对客户直接使用的开放性定义 Bean 目标包含:

RocketMQProperties 加载应用特性环境变量的处理类;

RocketMQTemplate 发送方用户发送消息的发送模板类;

四是最后具体进行 RpcketMQ 有关的封装

2. 实现了消息发送端

一般的发送端

发送代码封装在发送端 RocketMQTemplate POJO 下图是发送端相关代码的调用关系图:

为了与 Spring Messaging 发送模板兼容,现在 RocketMQTemplate 集成了 AbstractMessageSendingTemplate 抽象类,支持相关消息转换和发送方式,最终,这些方法将代理给予代理。 doSend() 方法、doSend() 以及 RocoketMQ 一些独特的方法,如异步、单向和顺序等,直接添加到其中 RoketMQTempalte 其中,这些方法直接被代理调用。 RocketMQ 的 Producer API 发送消息。

2)事务消息发送端

对事务消息的处理,在消息发送端进行了部分扩展,参照上面的调用关系类图。

3. 实现消息消费端

DefaultRocketMQListenerContainer 在器皿目标中,器皿目标将根据消费方式(并发或顺序)进行, RocketMQListener 包装到具体的 RocketMQ 实现内部并发或顺序接口。建立在容器中 RocketMQ Consumer 定制的目标、启动和监控 Topic 消息,如果有消费消息,则回调至回调。 Listener 的 onMessage() 方法。

使用示例

上面一章已经介绍过了 RocketMQ 在 spring-boot-starter 在这里,我们将通过一个最简单的消息发送和消费的例子来介绍如何使这种方法。 rocketmq-spring-boot-starter。

1)启动 NameServer 和 Broker

二是在实例中创建所需要的 Topics

执行以下命令行操作,在执行启动命令的目录下执行:

bash bin/mqadmin updateTopic -c DefaultCluster -t string-topic

2. 编译 rocketmq-spring-boot-starter

目前的 spring-boot-starter 依赖于尚未提交的东西 Maven 核心数据库,用户需要自行下载 git 源代码,然后执行 mvn clean install 安装在当地仓库。

git clone https://github.com/apache/rocketmq-externals.gitcd rocketmq-spring-boot-startermvn clean install

3. 编写客户端代码

顾客若使用,则需在消息发布及消费者端使用。 maven 环境变量 pom.xml 加入以下依赖:

特性 spring-boot-starter-rocketmq-version 的取值为:1.0.0-SNAPSHOT, 它与上一步安装在本地仓库的版本一致。

1)消息发送端代码

发送端环境变量 application.properties:

发送端 Java 代码:

二是消息消费端代码

消费环境变量 application.properties:

消费端 Java 代码:

在此简单介绍一下使用情况。 spring-boot 为了编写最基本的信息发送和接收代码,如果需要了解更多的调用方法,例如: 异步发送,目标信息体,指定 tag 请参考标签和指定事务信息。 github 描述文档和详细代码。这些高级功能将在后续陆续介绍。

  1. 联系我们

  2. 在线客服:(9:00-23:00)
  3. 服务热线:18761612306
  4. (9:00-23:00)
苏ICP备2022034778号-2