通過RabbitMQ實現郵箱的傳送訂閱功能
阿新 • • 發佈:2020-12-13
郵件配置準備工作
配置郵件服務
#配置郵件 spring.mail.host=smtp.qq.com spring.mail.username = [email protected] 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("[email protected]");
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生產資訊.