javaDEMO
Java 基础 Demo 站: https://www.javastudy.cloud
Java 中高级开发博客: https://www.lixiang.red
Java 学习公众号: java 技术大本营
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 类
代码如下:
@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);
}
}
结果测试
我们分别运行提供者和消费者,可在消费者的控制台看到如下消息:
可见消息已正常发送和接收
DEMO 总评
RocketMq 的坑很多,即使按着文档走也会报错, 如上的配置超时时间,brokerip 等,网上有很多排雷的博客,有真有假,还需要多实践! 加油吧!
DEMO 下载
欢迎关注公众号: 程序员学习大本营, 更多精彩文章,博主编程的心路历程,和你不见不散
demospringbootrocketmq.zip
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于