当前位置: 首页 > news >正文

SpringBoot整合RabbitMQ(Java注解方式配置)

1.生产端

1. 创建生产者SpringBoot工程

  2. 引入start,依赖坐标

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

  3. 编写yml配置,基本信息配置

spring:rabbitmq:host:公网ipport:5671username: password:virtual-host:

  4. 定义交换机,队列以及绑定关系的Config配置类

@Configuration
public class RabbitMqConfig {//定义交换机的名字public static final String  EXCHANGE_NAME = "boot_topic_exchange";//定义队列的名字public static final String QUEUE_NAME = "boot_queue";//1、声明交换机@Bean("bootExchange") //bean声明,加入到容器中public Exchange bootExchange(){//topicExchange: 主题交换机 durable:是否持久化//ExchangeBuilder工具类调用topicExchange的API方法创建主题交换机return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();}//2、声明队列@Bean("bootQueue")public Queue bootQueue(){return QueueBuilder.durable(QUEUE_NAME).build();}//3、队列与交换机进行绑定@Beanpublic Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue, @Qualifier("bootExchange") Exchange exchange){return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();}}

  5. 注入RabbitTemplate,调用方法,完成消息发送

@SpringBootTest
@RunWith(SpringRunner.class)
public class ProducerTest {//注入 RabbitTemplate@Autowiredprivate RabbitTemplate  rabbitTemplate;@Testpublic void send(){rabbitTemplate.convertAndSend("boot_topic_exchange","boot.haha","boot mq...");}
}

2.消费端 

1. 创建消费者SpringBoot工程

  2. 引入start,依赖坐标

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

  3. 编写yml配置,基本信息配置

spring:rabbitmq:host:公网ipport:5671username: password:virtual-host:

  4. 定义监听类,使用@RabbitListener注解完成队列监听。

@Component //声明这是一个组件
public class RabbitMQListener {//定义方法进行信息的监听   RabbitListener中的参数用于表示监听的是哪一个队列//如果有消息过来,就会执行这个方法,自动会把消息封装到Message对象中,取走消息之后会在队列里删除掉消息@RabbitListener(queues = "boot_queue")public void ListenerQueue(Message message){System.out.println("message:"+message.getBody());}
}

3.启动流程

先点击生产端的@test方法发送信息到队列中去,然后直接运行消费端的

@SpringBootApplication启动方法
http://www.xdnf.cn/news/287497.html

相关文章:

  • CMake基础介绍
  • D. Pythagorean Triples 题解
  • 手机打电话时由对方DTMF响应切换多级IVR语音应答(一)
  • \documentclass[lettersize,journal]{IEEEtran}什么意思
  • 机器人强化学习入门学习笔记(二)
  • DeepSeek-Prover-V2:数学定理证明领域的新突破
  • Dify网页版 + vllm + Qwen
  • Matlab自学笔记五十三:保存save和载入load
  • 杨校老师竞赛课之C++备战蓝桥杯初级组省赛
  • Python爬虫实战:获取优美图库各类高清图片,为用户提供设计素材
  • 洛谷 P9007 [入门赛 #9] 最澄澈的空与海 (Hard Version)
  • 【从零开始学习微服务 | 第一篇】单体项目到微服务拆分实践
  • 本地MySQL连接hive
  • ASP.NET Core 请求限速的ActionFilter
  • 算法中的数学:质数(素数)
  • 30天通过软考高项-第十一天
  • CodeBlocks25配置wxWidgets3.2
  • 004-nlohmann/json 快速认识-C++开源库108杰
  • 地埋式燃气泄漏检测装置与地下井室可燃气体检测装置有什么区别
  • 专业课复习笔记 4
  • Vue中的过滤器参数:灵活处理文本格式化
  • 5月5日日记
  • 基于 HTML5 Canvas 实现图片旋转与下载功能
  • linux tar命令详解。压缩格式对比
  • Java IO流核心处理方式详解
  • 论高并发下的高可用
  • LeetCode 热题 100 46. 全排列
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.1 描述性统计分析(均值/方差/分位数计算)
  • 代码随想录算法训练营Day45
  • 一个电商场景串联23种设计模式:创建型、结构型和行为型