Spring Cloud Alibaba学习笔记(10) - Spring消息编程模型下,使用RocketMQ收发消息
编写生产者
集成
添加依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
PS:由于默认引入的rocketmq-spring-boot-starter版本为2.0.2,rocketmq-spring-boot-starter对应的RocketMQ相关依赖为4.0.0,与前文中提交的4.5.1不能完全兼容,所以需要指定rocketmq-spring-boot-starter版本为2.0.3。
添加配置
rocketmq:
name-server: 127.0.0.1:9876
producer:
group: test-group
若代码中用到了RocketMQTemplate类,则group是必填的,否则会导致应用启动失败,无法初始化RocketMQTemplate
代码实现
首先,注入RocketMQTemplate:
private final RocketMQTemplate rocketMQTemplate;
编写代码,使用convertAndSend方法:
rocketMQTemplate.convertAndSend("test-topic", Demo.builder().demoId(1).remark("哈哈哈").build());
test-topic为topic名称;Demo是我随便建立的一个实体类,为消息体
启动项目,调用请求,然后会RocketMQ控制台,消息页面,可以从主题下拉框中找到刚刚新建的 test-topic,点击搜索,就可以看见这条消息
如果使用的是其他的MQ的话,将RocketMQTemplate退换以下类:
ActiveMQ/Artemis:JmsTemplate
RabbitMQ:AmpqTemplate
Kaka:KafkaTemplate
编写消费者
集成
同生产者集成
代码实现
新建DemoListener类【类名根据自己的业务】,实现RocketMQListener接口,RocketMQListener是一个泛型类,泛型就是生产者发出的消息体。
加上@Service注解,让DemoListener给Spring管理。
加上@RocketMQMessageListener注解,表明这个RocketMQ的Listener,配置topic属性,必须与生产者的属性相一致,否则接受不到生产者发出的消息;配置consumerGroup属性,值任意。
代码如下:
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Service;
@Slf4j
@Service
@RocketMQMessageListener(topic = "test-topic", consumerGroup = "test-consumer")
public class DemoListener implements RocketMQListener<Demo> {
@Override
public void onMessage(Demo demo) {
log.info("---->我收到了消息了!");
log.info("---->" + demo.getDemoId());
log.info("---->" + demo.getRemark());
}
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
class Demo{
private Integer demoId;
private String remark;
}
测试结果:
如果使用的是其他的MQ的话,将@RocketMQMessageListener退换以下注解,实现接口相应改变:
ActiveMQ/Artemis:JmsListener
RabbitMQ:RabbitListener
Kaka:KafkaListener
Spring Cloud Alibaba学习笔记(10) - Spring消息编程模型下,使用RocketMQ收发消息的更多相关文章
- Spring 源码学习笔记10——Spring AOP
Spring 源码学习笔记10--Spring AOP 参考书籍<Spring技术内幕>Spring AOP的实现章节 书有点老,但是里面一些概念还是总结比较到位 源码基于Spring-a ...
- Spring Cloud Alibaba学习笔记(1) - 整合Spring Cloud Alibaba
Spring Cloud Alibaba从孵化器版本毕业:https://github.com/alibaba/spring-cloud-alibaba,记录一下自己学习Spring Cloud Al ...
- Spring Cloud Alibaba学习笔记(14) - Spring Cloud Stream + RocketMQ实现分布式事务
发送消息 在Spring消息编程模型下,使用RocketMQ收发消息 一文中,发送消息使用的是RocketMQTemplate类. 在集成了Spring Cloud Stream之后,我们可以使用So ...
- Spring Cloud Alibaba学习笔记
引自B站楠哥:https://space.bilibili.com/434617924 一.创建父工程 创建父工程hello-spring-cloud-alibaba Spring Cloud Ali ...
- Spring Cloud Alibaba学习笔记(15) - 整合Spring Cloud Gateway
Spring Cloud Gateway 概述 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于Netty.Reactor以及WEbFlux构建,它 ...
- Spring Cloud Alibaba学习笔记(3) - Ribbon
1.手写一个客户端负载均衡器 在了解什么是Ribbon之前,首先通过代码的方式手写一个负载均衡器 RestTemplate restTemplate = new RestTemplate(); // ...
- Spring Cloud Alibaba学习笔记(22) - Nacos配置管理
目前业界流行的统一配置管理中心组件有Spring Cloud Config.Spring Cloud Alibaba的Nacos及携程开源的Apollo,本文将介绍Nacos作为统一配置管理中心的使用 ...
- Spring Cloud Alibaba学习笔记(2) - Nacos服务发现
1.什么是Nacos Nacos的官网对这一问题进行了详细的介绍,通俗的来说: Nacos是一个服务发现组件,同时也是一个配置服务器,它解决了两个问题: 1.服务A如何发现服务B 2.管理微服务的配置 ...
- Spring Cloud Alibaba学习笔记(12) - 使用Spring Cloud Stream 构建消息驱动微服务
什么是Spring Cloud Stream 一个用于构建消息驱动的微服务的框架 应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream 中binder 交互, ...
- Spring Cloud Alibaba学习笔记(11) - RocketMQ事务消息
在Spring中,我们要实现事务,一般通过@Transactional注解实现.这在引入RocketMQ之前没有问题,但是在引入了RocketMQ之后,如果消息发送之后的业务逻辑处理发生了异常的话,这 ...
随机推荐
- Mosquitto--webServer应用测试结果
https://blog.csdn.net/u012377333/article/details/71123671 Mosquitto--webServer应用测试结果 一.测试环境介绍 二.测试流程 ...
- socat管理haproxy配置 ssh-keygen -N '' -t rsa -q -b 2048
socat管理haproxy配置 haproxy是可以通过socat命令管理haproxy.cfg文件的:1.安装socat yum install socat -y 2.配置haproxy.cf ...
- C++11使用make_shared的优势和劣势
Why Make_shared ? C++11 中引入了智能指针, 同时还有一个模板函数 std::make_shared 可以返回一个指定类型的 std::shared_ptr, 那与 std::s ...
- 【Java】Spring之Resource(三)
Java的各种URL前缀的标准类和标准处理程序不足以完全访问低级资源.例如,没有URL可用于访问需要从类路径或相对于a获取的资源的标准化实现 ServletContext.虽然可以为专用URL 前缀注 ...
- 报错:Error starting Jetty. JSON Metrics may not be available.java.net.BindException:地址已在使用
报错背景: 刚在CDH中集成Flume插件,启动报错 报错现象: Error starting Jetty. JSON Metrics may not be available. java.net.B ...
- Spring MVC 保存并获取属性参数
在开发控制器的时候,有时也需要保存对应的数据到这些对象中去,或者从中获取数据.而Spring MVC给予了支持,它的主要注解有3个:@RequestAttribute.@SessionAttribut ...
- Navicat Premium教程
介绍 Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL.SQLite.Oracle 及 PostgreSQL 资料库,让 ...
- Selenium2+python自动化2.7-火狐44版本环境搭建(转)
转载地址:https://www.cnblogs.com/yoyoketang/p/selenium.html 前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以 ...
- 继400G后,QSFP-DD800G会是下一个风口吗?
数据中心市场作为光通信企业的主要战场,近三年400G的热度一直都在持续,虽有Facebook F16继续选用100G架构给市场泼了一些冷水等插曲存在,但近日随着阿里巴巴硅光400G QSFP-DD D ...
- Appium移动自动化测试-----(十二)appium API 之 TouchAction 操作
Appium的辅助类,主要针对手势操作,比如滑动.长按.拖动等. 1.按压控件 方法: press() 开始按压一个元素或坐标点(x,y).通过手指按压手机屏幕的某个位置. press(WebElem ...