邮件配置准备工作
配置邮件服务
#配置邮件
spring.mail.host=smtp.qq.com
spring.mail.username = 1261349543@qq.com
spring.mail.password = 授权码
spring.mail.port = 587
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.debug=true
RabbitMQ准备工作
配置RabbitMQ服务
#连接RabbitMQ服务端
spring.rabbitmq.host=远程服务器IP
spring.rabbitmq.username=root
spring.rabbitmq.password=root
spring.rabbitmq.port=5672
多模块测试
创建多模块SpringBoot工程emailmessage
- 邮件模块 email-service
引入spring-boot-starter-mail依赖、spring-boot-starter-amqp依赖
同时有emailmessgae这个parent
//创建通道
@Bean
Queue queue(){
return new Queue("panlijie.mail");
}
再提供监听组件
@Component
public class RabbitMQListener {
@Autowired
JavaMailSender javaMailSender;
@Autowired
MailProperties mailProperties;
@RabbitListener(queues = "panlijie.mail")
public void handler(String msg){
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
try {
helper.setSubject("这是一封测试邮件");
helper.setFrom(mailProperties.getUsername());
helper.setTo("1261349543@qq.com");
helper.setText(msg);
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
这里注入MailProperties配置类,获取在配置文件中的配置
- 通信模块 message-service
引入spring-boot-starter-amqp依赖
这里同样要配置RabbtiMQ的服务
导入依赖是为了向信道发送信息
在测试类测试:
@Autowired
RabbitTemplate rabbitTemplate;
@Test
void contextLoads() {
String msg = "你好!";
rabbitTemplate.convertAndSend("panlijie.mail",msg);
}
总的来说
当监听信道的组件检测到有代发的信息时,会自动获取(消费),直到Queue不存在信息为止,而测试模块可以向指定Queue生产信息.