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

使用RabbitMQ在Spring Boot入门实现简单的消息的发送与接收

文章目录

          • 要引入spring-boot-starter-amqp依赖才能开始后续操作
        • 1. 配置RabbitMQ地址
        • 2. 编写消息发送测试类
        • 3. 实现消息接收

在本文中,我们将介绍如何在Spring Boot应用中使用RabbitMQ实现消息的发送与接收。我们将创建两个服务,一个用于发送消息(Publisher服务),一个用于接收消息(Consumer服务)。首先,我们需要在这两个服务中配置RabbitMQ地址,接着编写发送和接收消息的代码。

要引入spring-boot-starter-amqp依赖才能开始后续操作
1. 配置RabbitMQ地址

首先,在Publisher服务的application.yml文件中添加RabbitMQ的配置:

spring:rabbitmq:host:  # 你的虚拟机IPport:  # 端口virtual-host:  # 虚拟主机username:  # 用户名password:  # 密码
2. 编写消息发送测试类

在Publisher服务中,我们需要编写一个测试类SpringAmqpTest,并利用RabbitTemplate实现消息的发送:

import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class SpringAmqpTest {@Autowiredprivate RabbitTemplate rabbitTemplate;@Testpublic void testSimpleQueue() {// 队列名称String queueName = "simple.queue";// 消息String message = "hello, spring amqp!";// 发送消息rabbitTemplate.convertAndSend(queueName, message);}
}

运行测试后,打开控制台,你将看到消息已经成功发送到队列中。

3. 实现消息接收

同样地,在Consumer服务的application.yml文件中添加RabbitMQ的配置:

spring:rabbitmq:host:  # 你的虚拟机IPport:  # 端口virtual-host:  # 虚拟主机username:  # 用户名password:  # 密码

接下来,在Consumer服务的com.itheima.consumer.listener包中新建一个类SpringRabbitListener,用于监听队列并处理消息:

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;@Component
public class SpringRabbitListener {// 利用RabbitListener来声明要监听的队列信息// 一旦监听的队列中有了消息,就会推送给当前服务,调用当前方法,处理消息。// 可以看到方法体中接收的就是消息体的内容@RabbitListener(queues = "simple.queue")public void listenSimpleQueueMessage(String msg) {System.out.println("spring 消费者接收到消息:【" + msg + "】");}
}

运行后,当队列simple.queue中有消息时,SpringRabbitListener中的listenSimpleQueueMessage方法将被调用,并输出接收到的消息内容。

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

相关文章:

  • 基于物联网的水质监测系统设计与实现:React前端、Node.js后端与TCP/IP协议的云平台集成(代码示例)
  • Vcpkg安装指定版本包或自定义安装包
  • 【C++深度探索】红黑树实现Set与Map的封装
  • 终于有人把客户成功讲明白了
  • [新械专栏] 肾动脉射频消融仪及一次性使用网状肾动脉射频消融导管获批上市
  • leetcode-119-杨辉三角II
  • 【第八节】python正则表达式
  • 三大浏览器Google Chrome、Edge、Firefox内存占用对比
  • 【wiki知识库】08.添加用户登录功能--后端SpringBoot部分
  • vue中nextTick的作用
  • 计算机网络面试-核心概念-问题理解
  • go语言创建协程
  • RabbitMQ之基于注解声明队列交换机:使用@RabbitListener实现消息监听
  • 【grafana 】mac端grafana配置的文件 grafana.ini 及login
  • 程序员如何在人工智能时代保持核心竞争力
  • 回溯排列+棋盘问题篇--代码随想录算法训练营第二十三天| 46.全排列,47.全排列 II,51. N皇后,37. 解数独
  • ESXI加入VMware现有集群提示常规性错误
  • 数字噪音计(声级计)【AR814数字噪音计】
  • 【Vue3】图片未加载成功前占位
  • AbstractQueuedSynchronizer之AQS
  • <数据集>起重机识别数据集<目标检测>
  • 04--Docker
  • MiniCPM-V: A GPT-4V Level MLLM on Your Phone 手机上的 GPT-4V 级多模态大模型
  • Unity初识
  • 【游戏引擎之路】登神长阶(九)——《3D游戏编程大师技巧》:我想成为游戏之神!
  • Linux:线程同步之信号量
  • GPT-SoVITS-文本转语音(你的声音不再是唯一)
  • C语言深度剖析(部分)--剩下随缘更新
  • 计算机毕业设计选题推荐-电缆行业生产管理系统-Java/Python项目实战
  • Linux 下查看 CPU 使用率