在java中使用RabbitMQ的步骤

embedded/2025/3/13 7:49:55/

一.引入RabbitMQ依赖

        <!--AMQP依赖,包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><!--        jackson消息转换器--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency>

消息发送方和消费方都需要这个依赖

二.完成RabbitMQ相关配置

地址配置在yaml文件中,或者nacos中

同样,发送方和消费方都需要配置

三.消息转换器配置

消息转换器在发送方和消费方都需要,可以直接在共同的父类包中配置,

 这个配置需要被扫描到,如果抽取出来配置在父类包中,包名不一样,微服务程序启动时候无法正常扫描到;可以采用springboot自动装配的原理,在spring.factories文件里添加MQ的配置文件所在包

 四.编写消息消费者

新建listener包,使用@RabbitListener注解监听消息,而其中的业务代码,是从原来的程序中,将同步调用,修改为基于MQ发消息的模式调用

交换机默认类型是direct,默认持久化,这两个参数为设置,采用默认值; 

orderService通过构造函数注解@RequiredArgsConstructor注入

此处的Long orderId对应的就是消息发送者发送过来的message;

五.编写消息生产者

将直接调用微服务,修改为向微服务发送消息,发送的消息需要带有必要的参数,参数包含在message中.

在PayController对应的serciveImpl中:

基于构造函数注入RabbitTemplate,不再需要远程调用

将需要发送到RabbitMQ的代码用try-catch包起来,防止因为发消息失败影响到核心业务 

六.运行

程序重新启动后,队列和交换机就自动创建完成,并可以完成相应操作


http://www.ppmy.cn/embedded/172181.html

相关文章

FreeRTOS之队列集

文章目录 用途创建队列集把队列加入队列集读取队列集 用途 一个任务可能需要从多个不同的数据源接收数据&#xff0c;如果没有队列集&#xff0c;任务需要在多个队列之间进行轮询&#xff0c;可能导致任务在某些情况下无法及时响应。使用队列集&#xff0c;任务可以以阻塞的方…

在 Windows 11 上使用 PyCharm 创建一个 Flask 项目,并使用 `pipenv` 进行虚拟环境管理

在 Windows 11 上使用 PyCharm 创建一个 Flask 项目&#xff0c;并使用 pipenv 进行虚拟环境管理&#xff0c;可以按照以下步骤进行&#xff1a; 1. 安装必要的软件 确保已安装 Python &#xff08;建议 3.8 及以上版本&#xff09;。 在终端&#xff08;Win R 输入 cmd&#…

苍穹外卖实战附源码-DAY1

一、打开项目的Nginx 1.通过nginx成功打开包装后的前端网页 二、导入sky的数据库 sky.sql 数据 CREATE DATABASE IF NOT EXISTS sky_take_out ; USE sky_take_out;DROP TABLE IF EXISTS address_book; CREATE TABLE address_book (id bigint NOT NULL AUTO_INCREMENT COMMEN…

智慧公交救助系统科创发明课后总结

一、深入社会调研&#xff0c;洞察出行难题 在日常生活的出行场景中&#xff0c;我们深刻地体会到城市交通面临的严峻挑战&#xff0c;尤其是早高峰与晚高峰时段&#xff0c;道路拥堵成为了常态。大量车辆在道路上缓慢蠕动&#xff0c;公交的行驶速度也受到极大影响。传统的公…

wpf label 内容绑定界面不显示

<Label Content"{Binding LabelText}" /> ... public string LabelText {get;set;}后端改变值后,界面内容并不显示 查看资料后改动如下 private string _labelText; public string LabelText{get { return _labelText; }set { _labelText value; OnPropertyCh…

JAVA实现好看的俄罗斯方块小游戏(附源码)

文章目录 一、设计来源俄罗斯方块小游戏讲解1.1 主界面1.2 游戏中界面1.3 游戏结束界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载更多优质源码分享 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/146156297 JAVA…

MATLAB 控制系统设计与仿真 - 22

稳定裕度 幅值裕度 & 相角裕度 幅值裕度 - Gain Margin 当相角为-180时,使开环增益为1的增益量,为幅值裕度GM。 GM=0-20log|GH|=20log1-20log|GH|=20log|1/GH|=-20log|GH| 相角裕度 - Phase Margin 当开环增益为1时,开环相角与180的和,为相角裕度 PM。 其几何图示…

MongoDB中的游标(Cursor)

游标&#xff08;Cursor&#xff09;在MongoDB中是一个重要的概念&#xff0c;它用于逐条遍历查询结果集&#xff0c;特别适用于处理大量数据时。 一、游标的定义与作用 定义&#xff1a; 游标是一种能从数据记录的结果集中每次提取一条记录的机制。在MongoDB中&#xff0c;游…