RocketMQ简单介绍
RocketMQ 是阿里出品的一款MQ,现在已经捐给Apache并成为Apache顶级项目,更多介绍请 移步
在这里向大家介绍一个学习RocketMQ的好文章:
RocketMQ实战(一)
RocketMQ实战(二)
RocketMQ实战(三)
RocketMQ实战(四)
一些说明
- 本文给出的代码均为代码片段,并非完整代码
- 阅读本文前,您需要具备以下知识:
- 了解RocketMQ是什么并安装它
- 了解JUnit并会简单使用
- 了解Spring并会简单使用
- 了解 maven 并会简单使用
引入相关库
maven 引入:
<!-- junit5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit5.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>${junit5-platform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-console-standalone</artifactId>
<version>${junit5-platform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>${rocketmq-client.version}</version>
</dependency>
相关库版本:
<junit5.version>5.1.0</junit5.version>
<junit5-platform.version>1.1.0</junit5-platform.version>
<rocketmq-client.version>4.2.0</rocketmq-client.version>
<spring.version>5.0.4.RELEASE</spring.version>
创建spring配制文件
创建2个spring配制文件,一个用于生产者,一个用于消费者,相关参数含义就不再介绍
applicationContext-producer.xml 生产者
<bean id="rocketmqProduct" class="org.apache.rocketmq.client.producer.DefaultMQProducer" init-method="start" destroy-method="shutdown">
<property name="producerGroup" value="producer1"/>
<property name="namesrvAddr" value="127.0.0.1:9876"/>
</bean>
applicationContext-consumer.xml 消费者
<bean id="consumerImplTest" class="org.klw.test.rocketMqTest.spring.ConsumerTestImpl" />
<bean id="rocketmqConsumer" class="org.apache.rocketmq.client.consumer.DefaultMQPushConsumer" init-method="start" destroy-method="shutdown">
<property name="consumerGroup" value="concurrent_consumer"/>
<property name="namesrvAddr" value="127.0.0.1:9876"/>
<property name="messageListener" ref="consumerImplTest"/>
<property name="subscription">
<map>
<entry key="TopicTest">
<value>*</value>
</entry>
</map>
</property>
</bean>
大家应该注意到了消费者的配制中有一个org.klw.test.rocketMqTest.spring.ConsumerTestImpl,现在我们去实现它:
public class ConsumerImplTest implements MessageListenerConcurrently {
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
System.out.println(Thread.currentThread().getName() + " Receive New Messages: " + msgs);
//返回消费状态
//CONSUME_SUCCESS 消费成功
//RECONSUME_LATER 消费失败,需要稍后重新消费
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
}
到这里,一个简单的生产者就配制好了,一个简单的消费者也配制并实现了,下面来使用它们
接下来我们要创建2个JUnit测试类,一个是生产者一个是消费者
生产者:
@RunWith(JUnitPlatform.class) // org.junit.platform.runner.JUnitPlatform
@ExtendWith(SpringExtension.class) // org.springframework.test.context.junit.jupiter.SpringExtension
@ContextConfiguration({"classpath*:applicationContext-producer.xml"})
public class JUnitProducer {
@Autowired
private DefaultMQProducer producer;
@Test
public void producerData() throws InterruptedException {
for (int i = 0; i < 10; i++) { // 发10条消息
try {
Message msg = new Message("TopicTest", // topic
"TagA", // tag
("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET)// body
);
// 调用producer的send()方法发送消息
// 这里调用的是同步的方式,所以会有返回结果
SendResult sendResult = producer.send(msg);
// 打印返回结果,可以看到消息发送的状态以及一些相关信息
System.out.println(sendResult);
} catch (Exception e) {
e.printStackTrace();
Thread.sleep(1000);
}
}
}
}
消费者:
@RunWith(JUnitPlatform.class)
@ExtendWith(SpringExtension.class)
@ContextConfiguration({"classpath*:applicationContext-consumer.xml"})
public class JUnitConsumer {
@Test
public void runConsumer() {
System.out.println("Consumer Started.");
// 下面的代码把线程阻塞住,这样就可以先运行消费者再运行生产者.当然不要也可以,不要的化就得先运行生产者,
//再运行消费者,生产者先把消息发送到MQ上,消费者启动后从MQ上拿消息
synchronized (JUnitConsumer.class) {
while (true) {
try {
JUnitConsumer.class.wait();
} catch (Throwable e) {
e.printStackTrace();
}
}
}
}
}
代码差不多了,通过JUnit先运行消费者,再运行生产者,在消费者的控制台中能看到生产者发送的消息已经打印出来
写在结束
本文只是简单的描述了如何在spring中配制RocketMQ
作者也是初次接触RocketMQ,正在学习中,欢迎大家一起讨论学习
相关推荐
这里是SpringBoot+RocketMQ 快速入门案例. 实现了消费者 , 生产者不同模式的消息发送于消费.
一、rocketmq入门到精通视频教程目录大纲 001-001_RocketMQ_简介 002-002_RocketMQ_核心概念详解 003-003_RocketMQ_集群构建模型详解(一) 004-004_RocketMQ_集群构建模型详解(二) 005-005_RocketMQ_双主模式集群...
本教程将围绕Spring Cloud的几个关键组件进行入门讲解,包括Nacos、Sentinel、RocketMQ以及Dubbo。 **Nacos** Nacos是阿里巴巴开源的动态服务发现和配置管理平台,它可以帮助开发者快速地构建分布式应用系统。Nacos...
Spring Boot RocketMQ入门 适用于Apache RocketMQ的开源Spring Boot Starter,可轻松使用RocketMQ进行开发。 快速开始 Maven依赖 < groupId>io.github.rhwayfun < artifactId>spring-boot-rocketmq-starter ...
一、rocketmq入门到精通视频教程目录大纲 001-001_RocketMQ_简介 002-002_RocketMQ_核心概念详解 003-003_RocketMQ_集群构建模型详解(一) 004-004_RocketMQ_集群构建模型详解(二) 005-005_RocketMQ_双主模式集群...
spring boot starter for RocketMQ 项目介绍 是由阿里巴巴团队开发并捐赠给apache团队的优秀消息中间件,目前已经是apache的顶级项目之一,承受过历年双十一大促的考验。 你可以通过本项目轻松的集成Rocketmq到你的...
RocketMQ的Spring启动启动器 项目介绍 是由阿里巴巴团队开发并幸存给apache团队的优秀消息中间件,承受过历年双十一大促的考验。 你可以通过本项目轻松的集成Rocketmq到你的SpringBoot项目中。本项目主要包含以下...
### Tedu5阶段Spring Cloud Alibaba入门 #### 一、课程案例解析 在Tedu5阶段的学习过程中,关于Spring Cloud Alibaba的入门课程中提到了一系列针对`business order cart stock`四个模块的操作,具体包括: 1. **...
### Spring Cloud Alibaba 训练营知识点详解 #### 一、Spring Cloud Alibaba 的出现背景与意义 **Spring Cloud Alibaba** 的诞生并非偶然,它是在 **Spring Cloud** 原本依赖的 **Netflix** 组件不再更新的新背景...
《Spring Cloud Alibaba 从入门到实战》是一本深入解析Spring Cloud Alibaba框架的实践指南,它旨在帮助Java开发者快速掌握这一微服务生态中的重要组件。Spring Cloud Alibaba是阿里巴巴为Spring Cloud贡献的一系列...
- **Spring Boot 集成**:通过 Spring Cloud Alibaba RocketMQ 模块,轻松集成 RocketMQ 到 Spring Boot 应用。 - **Java、Python、Go 等多语言支持**:RocketMQ 提供多种语言的客户端,方便跨平台开发。 7. **...
SpringCloud构建实战、从入门到高级,包含eureka、zuul、gateway、feign、ribbon、hystrix、mq、turbine、nacos、elk、consul、zookeeper、rocketmq、kafka、分布式事务(RocketMq、LCN、Seata)、分库分表(Sharding-...
RocketMQ|[Spring Cloud Alibaba(五)RocketMQ 异步通信实现](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README5.md) ### 其它 模块名称|主要内容 ---|--- leetcode|[力扣题解...
5. **分布式消息(事件)驱动**:RocketMQ或RabbitMQ等,用于实现服务间的异步通信和事件驱动架构。 6. **分布式事务**:Seata(前身是Fescar)提供了分布式事务解决方案,确保跨服务的数据一致性。 学习Spring ...
- **RocketMQ**: 高性能的消息中间件,常用于构建异步解耦和削峰填谷的系统架构。 - **Alibaba Cloud SMS**: 阿里云短信服务,用于发送验证码、通知等。 - **Hystrix**: Netflix的断路器库,已被Sentinel取代,但...
spring boot 实践学习案例,与其它组件结合如 mybatis、jpa、dubbo、redis、mongodb、memcached、kafka、... - Spring Cloud 入门,包括 Eureka(服务注册与发现)、Config(配置中心)、Hystrix(断路器)、Bus(消息总线) 等
Spring Cloud Alibaba 是一套基于 Spring Boot 实现的微服务框架,它提供了全面的微服务解决方案,包含服务注册与发现、配置中心、全链路监控、分布式事务处理等多个关键功能。本课程源码是针对 2020 年的小滴课堂 ...
这个组件骨架可能是为了快速搭建一个使用 SpringCloud Alibaba 技术栈的应用,帮助开发者快速入门并理解各个组件的功能和用法。下面将详细介绍 SpringCloud Alibaba 的核心组件以及它们在实际开发中的应用。 1. **...
SpringCloud Alibaba是阿里巴巴集团开源的一套微服务架构解决方案。其中涵盖了非常多的内容,包括:...该文档详细介绍了Spring Cloud Alibaba服务架构、整个结构、所有组件用法详解,是一本入门和开发参考的必备手册。
这份"资料-springcloud alibaba"包含了丰富的学习资源,包括源码、笔记文档、工具以及素材,是微服务入门学习的宝贵资料库。 首先,我们来详细探讨SpringCloud Alibaba的核心组件和功能: 1. **Nacos**:Nacos是...