SpringBoot-RabbitMQ

RabbitMQ 是一个开源的消息中间件,它实现了 AMQP(Advanced Message Queuing Protocol)协议,并提供了可靠的消息传递机制。

Spring Boot 中使用 RabbitMQ 实现异步消息的发送和接收。

使用 Spring Boot 提供的 AmqpTemplate 和 @RabbitListener 注解进行消息的发送和接收。

可以应用于各种场景,如日志处理、实时数据传输、系统解耦等

步骤一:安装 RabbitMQ

首先,你需要在本地环境中安装 RabbitMQ。RabbitMQ 的官方网站(https://www.rabbitmq.com/)下载适用于你的操作系统的安装包,并按照官方文档进行安装和配置。

步骤二:创建 Spring Boot 项目

使用 Spring Initializr(https://start.spring.io/)创建一个新的 Spring Boot 项目。选择适当的项目元数据(如项目名称、包名等)并选择适当的依赖项,包括 RabbitMQ 的依赖项。

xml 复制代码
<dependency>
	 <groupId>org.springframework.boot</groupId>
	 <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

配置文件application.yml

yml 复制代码
spring:
	rabbitmq:
		host: localhost
		port: 5672
		username: guest
		password: guest

创建消息发送者

java 复制代码
@Component
public class MessageSender{
	
	private final AmqpTemplate amqpTemplate;

	@Autowired
	public MessageSender(AmqpTemplate amqpTemplate){
		this.amqpTemplate = amqpTemplate;
	}

	public void sendMessage(String message){
		/**
			将消息发送到名为 "myExchange" 的交换机,并使用 "myRoutingKey" 进行路由
		*/
		amqpTemplate.convertAndSend("myExchange", "myRoutingKey", message);
		System.out.println("Message sent: " + message);
	}
}

创建消息接收者

java 复制代码
@Component
public class MessageReceiver{

	/**
		使用了名为 "myQueue" 的队列来接收消息
		当有消息到达队列时,receiveMessage 方法将被自动调用,并将消息作为参数传入。
	*/	
	@RabbitListener(queues="myQueue") //将该方法标记为消息监听器
	public void receiveMessage(String message){
		System.out.println("Message received: " + message);
	}
}

发送和接收消息

java 复制代码
@Autowired
private MessageSender messageSender;

messageSender.sendMessage("Hello, RabbitMQ!");

并观察控制台输出来确认消息是否被成功接收:

=====================================================

邮件发送案例

一、创建一个消息发送者类,用于将待发送的邮件放入任务队列:

java 复制代码
@Component
public class EmailSender{
	
	@Autowired	
	private final AmqpTemplate amqpTemplate;

	 public void sendEmail(String email) {
	 
	 	//使用了名为 "emailQueue" 的队列来存储待发送的邮件
	   	amqpTemplate.convertAndSend("emailQueue", email);
	   	System.out.println("Email sent: " + email);
	}
}

二、创建消息接收者,用于从任务队列中取出待发送的邮件并进行发送操作:

java 复制代码
@Component
public class EmailReceiver{
	
	/**
		有邮件到达队列时,receiveEmail 方法将被自动调用,并将邮件作为参数传入
	*/
	@RabbitListener(queues="emailQueue") //将该方法标记为消息监听器
	public void receiveEmail(String email){
		System.out.println("Sending email to: " + email);
	}
}
相关推荐
喝杯绿茶1 小时前
springboot中的事务
java·spring boot·后端
麦兜*1 小时前
多阶段构建:打造最小化的 Spring Boot Docker 镜像
java·spring boot·后端·spring cloud·docker
shepherd1112 小时前
破局延时任务(下):Spring Boot + DelayQueue 优雅实现分布式延时队列(实战篇)
java·spring boot·后端
lang201509282 小时前
Spring Boot 核心技巧与实战指南
java·数据库·spring boot
亚林瓜子3 小时前
SpringBoot中使用tess4j进行OCR(在macos上面开发)
java·spring boot·macos·ocr·lstm·tess4j
源码站~3 小时前
基于SpringBoot+Vue的健身房管理系统
vue.js·spring boot·后端·毕业设计·前后端分离·管理系统·健身房
李慕婉学姐4 小时前
Springboot微信小程序在线考试系统w47h61gy(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·微信小程序
邂逅星河浪漫13 小时前
【RabbitMQ】消息队列·详解+实操演示+功能实现(微服务架构)
rabbitmq·springboot·springamqp·consumer·exchange·producer·queue
陈果然DeepVersion13 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(五)
java·spring boot·kafka·向量数据库·大厂面试·rag·ai智能客服
FAFU_kyp13 小时前
Spring Boot 邮件发送系统 - 从零到精通教程
java·网络·spring boot