springboot+rockermq 实现简单的消息发送与接收
普通消息的发送方式有3种:单向发送、同步发送和异步发送。
下面来介绍下 springboot+rockermq 整合实现 普通消息的发送与接收
创建Springboot项目,添加rockermq 依赖
<!--rocketMq依赖--> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.2.1</version> </dependency>
配置rocketmq
# 端口server: port: 8083# 配置 rocketmqrocketmq: name-server: 127.0.0.1:9876 #生产者 producer: #生产者组名,规定在一个应用里面必须唯一 group: group1 #消息发送的超时时间 默认3000ms send-message-timeout: 3000 #消息达到4096字节的时候,消息就会被压缩。默认 4096 compress-message-body-threshold: 4096 #最大的消息限制,默认为128K max-message-size: 4194304 #同步消息发送失败重试次数 retry-times-when-send-failed: 3 #在内部发送失败时是否重试其他代理,这个参数在有多个broker时才生效 retry-next-server: true #异步消息发送失败重试的次数 retry-times-when-send-async-failed: 3
新建一个 controller 来做消息发送:
package com.example.springbootrocketdemo.controller; import org.apache.rocketmq.client.producer.SendCallback; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 普通信息的三种方式:同步、异步、单向 * @author qzz */ @RestController public class RocketMQCOntroller { @Autowired private RocketMQTemplate rocketMQTemplate; /** * 发送普通消息 * convertAndSend(String destination, Object payload) 发送字符串比较方便 */ @RequestMapping("/send") public void send(){ rocketMQTemplate.convertAndSend("test-topic","test-message"); } /** * 发送同步消息 */ @RequestMapping("/testSyncSend") public void testSyncSend(){ //参数一:topic 如果想添加tag,可以使用"topic:tag"的写法 //参数二:消息内容 SendResult sendResult = rocketMQTemplate.syncSend("test-topic","同步消息测试"); System.out.println(sendResult); } /** * 发送异步消息 */ @RequestMapping("/testASyncSend") public void testASyncSend(){ //参数一:topic 如果想添加tag,可以使用"topic:tag"的写法 //参数二:消息内容 //参数三:回调 rocketMQTemplate.asyncSend("test-topic", "异步消息测试", new SendCallback() { @Override public void onSuccess(SendResult sendResult) { System.out.println(sendResult); } @Override public void onException(Throwable throwable) { System.out.println("消息发送异常"); throwable.printStackTrace(); } }); } /** * 发送单向消息 */ @RequestMapping("/testOneWay") public void testOneWay(){ //参数一:topic 如果想添加tag,可以使用"topic:tag"的写法 //参数二:消息内容 rocketMQTemplate.sendOneWay("test-topic","单向消息测试"); } }
SpringBoot给我们提供了RocketMQTemplate模板类,我们利用这个类可以以多种形式发送消息。
发送方法指定Topic主题test-topic。
新建消息消费者监听RocketMQConsumerListener,监听消息,消费消息
package com.example.springbootrocketdemo.config; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.stereotype.Service; /** * 消费消息 * 配置RocketMQ监听 * @author qzz */ @Service @RocketMQMessageListener(consumerGroup = "test",topic = "test-topic") public class RocketMQConsumerListener implements RocketMQListener<String> { @Override public void onMessage(String s) { System.out.println("消费消息:"+s); } }
消费者类要实现RocketMQListener接口,以及动态指定消息类型String。
类上要加上@RocketMQMessageListener注解,指定topic主题test-topic,以及消费者组test
简单的消息发送与接收搭建完毕!
启动服务,测试消息消费
测试同步消息:
测试异步消息:
测试单向消息:
以上就是Springboot中RocketMQ怎么实现消息发送与接收的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号