1. 程式人生 > 其它 >通過RabbitMQ實現郵箱的傳送訂閱功能

通過RabbitMQ實現郵箱的傳送訂閱功能

技術標籤:javaspring bootrabbitmq

郵件配置準備工作

配置郵件服務

#配置郵件
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

  1. 郵件模組 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配置類,獲取在配置檔案中的配置
Properties原始碼

  1. 通訊模組 message-service
    引入spring-boot-starter-amqp依賴
    這裡同樣要配置RabbtiMQ的服務
    匯入依賴是為了向通道傳送資訊
    在測試類測試:
    @Autowired
    RabbitTemplate rabbitTemplate;
    @Test
    void contextLoads() {
        String msg = "你好!";
        rabbitTemplate.convertAndSend("panlijie.mail",msg);
    }

總的來說

當監聽通道的元件檢測到有代發的資訊時,會自動獲取(消費),直到Queue不存在資訊為止,而測試模組可以向指定Queue生產資訊.