📑前言
本文主要是【Rabbitmq】——Rabbitmq发送邮件并消费邮件的文章,如果有什么需要改进的地方还请大佬指出⛺️
🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:CSDN主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见
目录
- 📑前言
- Rabbimq发送邮件并消费邮件
- 1.配置application.yml文件
- 2.定义消息队列的配置:RabbitConfiguration
- 运行后打开rabbitmq:我们发现已经创建了yyds队列
- 3.监听类:TestListener
- 测试类进行测试
- 📑文章末尾
Rabbimq发送邮件并消费邮件
1.配置application.yml文件
spring:rabbitmq:virtual-host: /testusername: adminpassword: adminaddresses: localhost
2.定义消息队列的配置:RabbitConfiguration
package com.rabbitmqtest.config;import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitConfiguration {/*** 导包时候注意是amqp这个包* @return*/@Bean("directExchange") //定义交换机Bean,可以很多个public Exchange exchange(){//如果没有会自动进行创建return ExchangeBuilder.directExchange("amq.direct").build();}@Bean("yydsQueue") //定义消息队列public Queue queue(){return QueueBuilder.nonDurable("yyds") //非持久化类型.build();}@Bean("binding")public Binding binding(@Qualifier("directExchange") Exchange exchange,@Qualifier("yydsQueue") Queue queue){//将我们刚刚定义的交换机和队列进行绑定return BindingBuilder.bind(queue) //绑定队列.to(exchange) //到交换机.with("my-yyds") //使用自定义的routingKey.noargs();}}
运行后打开rabbitmq:我们发现已经创建了yyds队列
3.监听类:TestListener
package com.rabbitmqtest.listener;import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;@Component
public class TestListener {@RabbitListener(queues = "yyds")public void test(Message message){System.out.println(new String(message.getBody()));}
}
测试类进行测试
package com.rabbitmqtest;import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class RabbitmqTestApplicationTests {//RabbitTemplate为我们封装了大量的RabbitMQ操作,已经由Starter提供,因此直接注入使用即可@ResourceRabbitTemplate template;@Testvoid publisher() {//使用convertAndSend方法一步到位,参数基本和之前是一样的//最后一个消息本体可以是Object类型,真是大大的方便template.convertAndSend("amq.direct", "my-yyds", "邮件信息");}}
结果:
//控制台会打印:邮件信息