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

RabbitMQ学习-Seven

再SpringBoot中使用MQ

1.创建SpringBoot项目

除了我们平常使用的一些工具依赖,还需要选择这个Spring for RabbitMQ依赖

2.需要在application.yml文件中进行配置

server:port :9090
spring:application:name:producerrabbitmq:host: 你的主机名port: 5672virtual-host: 虚拟主机名称username: adminpassword: admin123

3.测试使用

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;@RestController
public class TestController {@Resourceprivate TestService testService;@RequestMapping("test")public String test(String msg){testService.sendMsg(msg);return "success";}
}
@Service
public class TestService {@Resourceprivate AmqpTemplate amqpTemplate; // 注入RabbitMQ的模板对象,用于发送消息@Overridepublic void sendMsg(String msg) {// 发送消息到队列amqpTemplate.convertAndSend("queue1", msg);// 发送消息到交换机(订阅交换机,第二个参数为空)amqpTemplate.convertAndSend("wx1", "", msg);// 发送消息到交换机(路由交换机,第二个参数为路由key)amqpTemplate.convertAndSend("wx2", "a", msg);}
}

完善一下测试使用类

import javax.annotation.Resource;@Service
public class TestService {@Resourceprivate AmqpTemplate amqpTemplate;public void sendMsg(String msg) {if (msg.startsWith("q_")) {// 发送消息到队列amqpTemplate.convertAndSend("queue1", msg);} else if (msg.startsWith("f_")) {// 发送消息到交换机(订阅交换机)amqpTemplate.convertAndSend("ex1", "", msg);} else if (msg.startsWith("r_")) {// 发送消息到交换机(路由交换机)if (msg.startsWith("r_a")) {amqpTemplate.convertAndSend("ex2", "a", msg);} else if (msg.startsWith("r_b")) {amqpTemplate.convertAndSend("ex2", "b", msg);}}}
}

此时从浏览器发送请求:localhost:9090/test?msg=....就可以发送消息到队列中

4.然后创建消费者项目

前期步骤一致,只是配置文件的端口号进行变更

package com.qfedu.consumer.service;import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;@Service
//@RabbitListener(queues ={"queue1","queue2"})
// 首先通过RabbitListener注解监听队列
@RabbitListener(queues = "queue1")
public class ReceiveMsgService {// 然后通过RabbitHandler注解将队列中的数据作为入参使用@RabbitHandlerpublic void receiveMsg(String msg) {System.out.println("接收Msg:" + msg);}// 另一个可能的消息接收方法,处理字节数组类型的数据//@RabbitHandler//public void receiveMsg(byte[] bs) {//    // 处理字节数组的逻辑//}
}

此时就在SpringBoot中实现了生产者发送消息,然后消费者消费消息!!

http://www.lryc.cn/news/493844.html

相关文章:

  • 中科亿海微SoM模组——波控处理软硬一体解决方案
  • 开源法律、政策和实践
  • 【计算视觉算法与应用】金字塔,下采样Gaussian Pyramid. 上采用 Laplacian Pyramid (code: py)
  • 基于BERT的语义分析实现
  • DNS查询工具
  • ODB 框架
  • Ubuntu WiFi检测
  • QILSTE H4-108TCG高亮纯lu光LED灯珠 发光二极管LED
  • IP与“谷子”齐飞,阅文“乘势而上”?
  • Java阶段三05
  • C# yield 关键字
  • SpringBoot开发——结合Nginx实现负载均衡
  • RabbitMQ在手动消费的模式下设置失败重新投递策略
  • TsingtaoAI具身智能高校实训方案通过华为昇腾技术认证
  • 【Linux】线程池设计 + 策略模式
  • 网络原理(一):应用层自定义协议的信息组织格式 HTTP 前置知识
  • Python-链表数据结构学习(1)
  • 性能优化经验:关闭 SWAP 分区
  • SpringBoot小知识(2):日志
  • java虚拟机——jvm是怎么去找垃圾对象的
  • Macos远程连接Linux桌面教程;Ubuntu配置远程桌面;Mac端远程登陆Linux桌面;可能出现的问题
  • hadoop_HA高可用
  • 【MySQL】MySQL中的函数之JSON_ARRAY_APPEND
  • torch.is_nonzero(input)
  • 文本搜索程序(Qt)
  • 使用 Python 剪辑视频的播放速度
  • 深入理解计算机系统,源码到可执行文件翻译过程:预处理、编译,汇编和链接
  • Linux开发者的CI/CD(11)jenkins变量
  • 深度学习视频编解码开源项目介绍【持续更新】
  • Canva迁移策略深度解析:应对每日5000万素材增长,从MySQL到DynamoDB的蜕变