使用注解的方式进行配置RabbitMQ

引入依赖:

        <dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-rabbit-test</artifactId><scope>test</scope></dependency>

配置application.yml 

server:port: 8082
spring:rabbitmq:host: 192.168.37.105port: 5672username: adminpassword: adminvirtual-host: /shop:exchange: shop.exchange.directqueue: shop.queueroutingKey: shop.routingKey

 编写配置类消息转化器:

@Configuration
public class RabbitmqConfig {/*** 消息转化器* 将对象转化为 Json 字符串*/@Beanpublic MessageConverter messageConverter(){return new Jackson2JsonMessageConverter();}
}

创建生产者:

@RestController
@RequiredArgsConstructor
@RequestMapping("producer03")
public class Producer03Controller {private final RabbitTemplate rabbitTemplate;@GetMapping("/send01")public String sendMsgFanout(){rabbitTemplate.convertAndSend("exchange2.fanout","",new Student(2,"Alice","178",20));return "Producer02==>发送成功!";}@GetMapping("/send02")public String sendFanout(){rabbitTemplate.convertAndSend("exchange2.fanout","","Fanout发送消息!");return "Producer02==>发送成功!";}@GetMapping("/send03")public String sendMsgDirect(){rabbitTemplate.convertAndSend("exchange2.DIRECT","monian",new Student(2,"Alice","178",20));return "Producer02==>发送成功!";}@GetMapping("/send04")public String sendMsgDirectMsg(){rabbitTemplate.convertAndSend("exchange2.DIRECT","monian","发送的数据Direct!");return "Producer02==>发送成功!";}
}

创建消费者:

@Component
public class MsgListener02 {/*** 使用注解的方式,对交换机和队列进行装配* 如果存在就不创建** @param msg*/@RabbitListener(bindings = @QueueBinding(value = @Queue(value = "queue02"),exchange = @Exchange(value = "exchange2.fanout", type = ExchangeTypes.FANOUT)))public void readMsg(Student stu) {System.out.println("annotationListener::Fanout => :" + stu);}@RabbitListener(bindings = @QueueBinding(value = @Queue(value = "queue02"),exchange = @Exchange(value = "exchange2.fanout", type = ExchangeTypes.FANOUT)))public void readMsg(String msg) {System.out.println("annotationListener::Fanout => :" + msg);}@RabbitListener(bindings = @QueueBinding(value = @Queue(value = "queue03"),exchange = @Exchange(value = "exchange2.DIRECT", type = ExchangeTypes.DIRECT),key = "monian"))public void readMsgDirect(Student stu) {System.out.println("annotationListener::Direct => :" + stu);}@RabbitListener(bindings = @QueueBinding(value = @Queue(value = "queue03"),exchange = @Exchange(value = "exchange2.DIRECT", type = ExchangeTypes.DIRECT),key = "monian"))public void readMsgDirect(String msg) {System.out.println("annotationListener::Direct => :" + msg);}}

编写Student:

@AllArgsConstructor
@NoArgsConstructor
@Data
public class Student implements Serializable {private Integer id;private String name;private String phone;private Integer age;
}

测试结果: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/690311.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

堆排序 之实现最小的K个数

目录 1、方式一&#xff1a;通过自定义实现建堆和堆化操作 2、方式二&#xff1a;借助模块heapq实现 2.1、模块heapq的基本使用 2.2、使用heapq实现最小的k个数 3、堆在实际项目的应用 实现语言&#xff1a;Python 3.9 题目来源&#xff1a;牛客 分析&#xff1a; 要找…

Tiff文件解析和PackBits解压缩

实现了Tiff图片文件格式的解析&#xff0c;对Tiff文件中的PackBits压缩格式进行解压缩&#xff0c;对Tiff文件中每一个Frame转换成BufferedImage显示。 Java语言实现&#xff0c;Eclipse下开发&#xff0c;AWT显示图片。 public static TIFF Parse(final byte[] bytes) throw…

es6语法总结

【1】语法 &#xff08;1&#xff09;声明变量(let-var-const) 变量提升&#xff1a; 是JavaScript引擎在代码执行前将变量的声明部分提升到作用域顶部的行为。尽管变量的声明被提升了&#xff0c;变量的赋值&#xff08;即初始化&#xff09;仍然保留在原来的位置。因此&…

原型模式类图与代码

现要求实现一个能够自动生成求职简历的程序&#xff0c;简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同&#xff0c;并尽量减少程序中的重复代码。 采用原型模式(Prototype)来实现上述要求&#xff0c;得到如图 7.25 所示的类图。 原…

达梦数据库连接失败:Connect Failure! “Encryption module failed to load“

初次安装达梦数据库&#xff1a;V7 QT5.12.12版本开发调用数据库&#xff0c;最基础的原型调用&#xff1a; { //执行查询语句或则执行sql语句 QSqlDatabase qDb; QSqlDatabase db QSqlDatabase::addDatabase("QDM"); db.setHostName("192.168.2…

PX4 路径规划 航点规划 轨迹跟踪 Matlab/Simulink

一、无人机轨迹算法和仿真 matlab下载和安装 PX4实战之旅_超维空间科技的博客-CSDN博客 查了很多资料。无人机二次开发设计的目标是实现喷涂路径程序设计。决定使用simulink在ubuntu系统上结合jmavsim进行算法设计和仿真。 1.如果安装在ubuntu系统上面&#xff0c;MATLAB占…

基于单片机的直流电机检测与控制系统

摘要&#xff1a; 文章设计一款流电机控制系统&#xff0c;以 STC89C51 作为直流电机控制系统的主控制器&#xff0c;采用 LM293 做为驱动器实现 对直流电机的驱动&#xff0c;采用霍尔实现对直流电机速度的检测&#xff1b;本文对直流电机控制系统功能分析&#xff0c;选择确…

工业中常见大数据技术组件

随着大数据技术在各行各业的广泛应用&#xff0c;数据产品经理的角色也变得越来越重要。了解常见的大数据技术组件对于数据产品经理来说至关重要&#xff0c;因为这有助于他们更好地设计产品架构和功能模块&#xff0c;满足数据处理和分析的需求。在处理海量数据的产品中&#…

计算机视觉——OpenCV实现Lucas-Kanade 光流追踪

1.光流 光流法是计算机视觉中用于估计图像序列中物体运动的关键技术。它类似于观察夜空中的彗星&#xff0c;通过其在天空中的运动轨迹来追踪它的路径。在图像处理中&#xff0c;光流帮助我们理解像素点如何在连续的帧之间移动。 1.1 稀疏光流法 稀疏光流法关注于图像中的关…

OpenCV 入门(二)—— 车牌定位

OpenCV 入门系列&#xff1a; OpenCV 入门&#xff08;一&#xff09;—— OpenCV 基础 OpenCV 入门&#xff08;二&#xff09;—— 车牌定位 OpenCV 入门&#xff08;三&#xff09;—— 车牌筛选 OpenCV 入门&#xff08;四&#xff09;—— 车牌号识别 OpenCV 入门&#xf…

HCIP综合实验

1.拓扑 2.需求分析 1、R4为ISP&#xff0c;其上只能配置IP地址&#xff1b;R4与其他所有直连设备间均使用公有IP。 2、R3、R5、R6、R7为MGRE环境&#xff0c;R3为中心站点。 3、整个OSPF环境IP地址基于172.16.0.0/16划分。 4、减少LSA的更新量&#xff0c;加快收敛&#xf…

antd vue pro (vue 2.x) 多页签详细操作

antd vue pro 多页签配置操作&#xff0c;具体操作如下。 1.引入 tagviews文件 在 store/modules 中创建 tagviews.js &#xff0c;复制一下代码到文件中保存 const state {visitedViews: [],cachedViews: [] }const mutations {ADD_VISITED_VIEW: (state, view) > {if …