RabbitMQ学习-Seven

devtools/2024/11/30 13:41:34/

再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.ppmy.cn/devtools/138210.html

相关文章

DRM(数字权限管理技术)防截屏录屏----解密org.w3.clearkey视频并播放

提示:解密org.w3.clearkey视频并播放 帮助:未实现clearkey加密,如有大神,请指导一下 文章目录 [TOC](文章目录) 前言一、教程二、org.w3.clearkey视频播放三、效果四、问题总结 前言 ‌‌ClearKey‌是一种基于JSON Web Key (JWK)格…

网络安全构成要素

一、防火墙 组织机构内部的网络与互联网相连时,为了避免域内受到非法访问的威胁,往往会设置防火墙。 使用NAT(NAPT)的情况下,由于限定了可以从外部访问的地址,因此也能起到防火墙的作用。 二、IDS入侵检…

网络安全(1)_对称加密和非对称加密

1 网络安全概述 1.1 计算机网络面临的安全威协 (1)截获:攻击者从网络上窃听他人的通信内容,通常把这类攻击称为“截获”。在被动攻击中,攻击者只是观察和分析某一个协议数据单元(PDU)而不干扰信…

[Python/网络安全] Git漏洞之Githack工具基本安装及使用详析

前言 本文仅分享Githack工具基本安装及使用相关知识,不承担任何法律责任。 Git是一个非常流行的开源分布式版本控制系统,它被广泛用于协同开发和代码管理。许多网站和应用程序都使用Git作为其代码管理系统,并将其部署到生产环境中以维护其代…

基于单片机的智能药箱设计

本设计主要由红外检测传感器、显示、独立按键、舵机、语音以及短信等模块组成。红外传感器模块主要对药仓中的药物数据进行采集,采集完毕由主控制器进行数据加工,之后可传送至显示模块上进行显示,在显示模块也可对显示时间、吃药倒计时、吃药…

《软件项目管理》期末-复习题及参考答案

(1)赶工一个任务时,你应该关注( C ) A. 尽可能多的任务 B. 非关键任务 C. 加速执行关键路径上的任务 D. 通过成本最低化加速执行任务 (2)下列哪个不是项目管理计划的一部分?&#x…

Vue.js 指令详解:v-bind, v-html, v-once, v-on, v-if, v-else-if, v-else 和 v-model

Vue.js 是一个用于构建用户界面的渐进式框架,它通过一系列的指令来实现数据与 DOM 的绑定。在本篇博客中,我们将通过一个示例来介绍 Vue 3 中的一些常用指令:v-bind, v-html, v-once, v-on, v-if, v-else-if, v-else 和 v-model。 1. v-bind…

【机器学习】机器学习的基本分类-监督学习-逻辑回归(Logistic Regression)

逻辑回归是一种分类算法,尽管名字中包含“回归”,但其主要用于解决二分类和多分类问题。它通过学习一个逻辑函数,预测输入属于某个类别的概率。 1. 逻辑回归的基本概念 目标 逻辑回归的目标是找到一个函数 h(x),输出一个概率值 …