您的位置:首页 > 编程语言 > Java开发

SpringBoot项目使用Activemq队列做邮件异步发送

2020-06-03 06:07 411 查看
  1. 首先你需要有一个创建好的springboot项目;
  2. 搭建activemq
    这里如果没有搭建好的环境,可以参考我的另外一篇博客点击跳转
  3. 修改pom文件,添加依赖
<!--引入MQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
  1. 配置yml文件
spring:
activemq:
broker-url: tcp://127.0.0.1:61616
user: admin
password: admin

上面的IP地址需要根据实际情况修改,61616是提供的JMS服务的端口,配置连接时需要配置这个端口,默认的8186只是提供管理控制台的服务。
7. 修改启动类注解
添加:@EnableJms
意思是使用jms消息支持

5. 创建邮件发送工具类
这里可以参考使用Hutool邮件工具类
6. 创建一个消息发送类SendService

@Component
public class SendService {

@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;

/**
* 这里的queueName是指消息队列的名称,需要在调用这个方法的时候带过来
* 第二个map便是组装好的数据条
*/
public void sendQueue(String queueName, Map<String, Object> map) {
Queue queue = new ActiveMQQueue(queueName);
jmsMessagingTemplate.convertAndSend(queue, map);
}
}

简单说明队列名称queueName的带入方法:
方法一:你可以直接存一个静态变量,调用方法的时候直接填入即可
方法二:可以配置到yml文件中,然后使用的时候直接取也可以
7. 创建消息异步监听队列接收类ReceiverService

@Component
public class ReceiverService {
// 我这里是直接使用的静态变量作为消息队列名称:Constast.CODE_QUEUE_NAME
@JmsListener(destination = Constast.CODE_QUEUE_NAME)
public void receiveCodeEmail(MapMessage mapMessage) throws JMSException {
// 定义邮件类
EmailProperties emailProperties = new EmailProperties();
StringBuffer subject = new StringBuffer();
StringBuffer text = new StringBuffer();
// 组装邮件内容
subject.append("验证码");
text.append("验证码:" + mapMessage.getString("code") + ",10分钟内输入有效!\n");
text.append("提示:请勿泄露验证码给他人!");
emailProperties.setToName(mapMessage.getString("email"));
emailProperties.setSubject(subject.toString());
emailProperties.setText(text.toString());
// 这里我是调用的自己的邮件发送工具类,可以根据你的需求自行修改
this.emailUtils.sendEmail(emailProperties);
}
}

到这里就可以愉快的使用了!可以大大提高你的业务处理速度,采用异步的形式发送邮件,提高用户体验。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: