rocketmq|springboot 集成 rocketMq 收发消息

本贴最后更新于 1564 天前,其中的信息可能已经天翻地覆

javaDEMO

Java 基础 Demo 站: https://www.javastudy.cloud
Java 中高级开发博客: https://www.lixiang.red
Java 学习公众号: java 技术大本营
java_subscribe

springboot 集成 rocketmq 总述

关于 rocketmq 的特性我们已在上文 docker 安装 rocketmq 时聊过,文章参考:
https://www.javastudy.cloud/articles/2019/11/20/1574208494673.html
有些坑一定要注意,就是上文中最后运行 broker 的命令中使用了配置文件, 还有 NameSrv 的地址,不然很容易出错.
有以下概念需要了解:

rocketmq 的四大组件

nameserve: 经常简称为 namesrv,类似于 zookeeper,提供了一个服务/消息者/broke 注册的地方,需单独部署
broker: 消息持久化,处理的地方,需单独部署
producer: 消息提供者,通常放在应用里面
comsumer: 消息消费者,通常放在应用里面

producer/consumer 的结构

topic: 消息的主题,消费者向 topic 写消息,接收者从 topic 中收消息
tag: 同一 topic 可以有多个 tag , 可以根据 tag 细分消息
producerGroup: 提供者组,提供者通过名字来标识是一个集群
consumerGroup: 消费者组,一个消费者组中可以有多个消费者,由 broker 完成负载均衡

springboot 集成 rocketmq 步骤

参考文档如下:
https://github.com/apache/rocketmq-spring
一.引入 rocketmq 相关的 jar 包
二.提供者和消息接收者分两个应用/模块
三.注册提供者/接收者
四.测试消息

引入 jar 包

在原有 jar 包的基础这上,只需要引这一个包就可以了, producer/consumer 的模块都要引

compile group: 'org.apache.rocketmq', name: 'rocketmq-spring-boot-starter', version: '2.0.4'

配置注册提供者和接收者

提供者的配置:

application.properties:

rocketmq.name-server=192.168.1.128:9876
rocketmq.producer.group=test-producer-group
rocketmq.producer.send-message-timeout=10000

在 springboot 的 man 函数中写发消息的配置

@SpringBootApplication
public class AdminApplication {

	@Resource
	private RocketMQTemplate rocketMQTemplate;

	public static void main(String[] args) {
		SpringApplication.run(AdminApplication.class, args);
	}

	@Bean
	public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
		return args -> {
			rocketMQTemplate.convertAndSend("javastudy","good good study,day day up");
		};
	}

}

接收者的配置

application.properties:

# 这里端口改成9999 是因为在同一个电脑上启动提供者和消费者,都是web 应用,端口需要错开
server.port=9999
rocketmq.name-server=192.168.1.128:9876

新建了一个 Consumer 类
image.png
代码如下:

@Component
@RocketMQMessageListener(topic = "javastudy",consumerGroup = "test-consumer-group")
public class TestConsumer implements RocketMQListener<String> {

    @Override
    public void onMessage(String message) {
        System.out.println("get message:"+message);
    }
}

结果测试

我们分别运行提供者和消费者,可在消费者的控制台看到如下消息:
image.png
可见消息已正常发送和接收

DEMO 总评

RocketMq 的坑很多,即使按着文档走也会报错, 如上的配置超时时间,brokerip 等,网上有很多排雷的博客,有真有假,还需要多实践! 加油吧!

DEMO 下载

欢迎关注公众号: 程序员学习大本营, 更多精彩文章,博主编程的心路历程,和你不见不散
demospringbootrocketmq.zip

  • RocketMQ
    22 引用 • 10 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖 • 1 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    941 引用 • 1458 回帖 • 154 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...