Springboot整合ActiveMQ发送邮件
虽然ActiveMQ以被其他MQ所替代,但仍有学习的意义,本文采用邮件发送的例子展示ActiveMQ
文章目录
- 1. 生产者
- 1.1 引入maven依赖
- 1.2 application.yml配置
- 1.3 创建配置类ConfigQueue
- 1.4 创建生产者类Producer
- 1.5 启动类AppProducer
- 2. 消费者
- 2.1 引入maven依赖
- 2.2 application.yml配置
- 2.3 创建消费者类Consumer
- 2.4 启动类AppConsumer
- 3. 启动截图
- 3.1 生产者截图
- 3.2 消费者截图
- 3.3 ActiveMQ后台截图
- 3.4 邮件系统截图
1. 生产者
1.1 引入maven依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.itmayiedu</groupId><artifactId>springboot-p2p-roducer</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.1.RELEASE</version></parent><!-- 管理依赖 --><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.M7</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- SpringBoot整合Web组件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SpringBoot Activemq --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-activemq</artifactId></dependency><!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.49</version></dependency></dependencies><!-- 注意: 这里必须要添加, 否者各种依赖有问题 --><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/libs-milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>
1.2 application.yml配置
spring:activemq:###MQ连接通讯地址broker-url: tcp://127.0.0.1:61616###账号user: admin###密码 password: admin###自定义队列
my_queue: springboot2.0-queueserver:port: 8089
1.3 创建配置类ConfigQueue
@Component
public class ConfigQueue {@Value("${my_queue}")private String myQueue;/*** 1.首先需要将队列注入springboot容器中** @return*/@Beanpublic Queue queue() {return new ActiveMQQueue(myQueue);}}
1.4 创建生产者类Producer
@Component
public class Producer {@Autowiredprivate JmsMessagingTemplate jmsMessagingTemplate;@Autowiredprivate Queue queue;/*** 每隔5秒种时间向队列中发送消息*/@Scheduled(fixedDelay = 5000)public void send() {String userName = System.currentTimeMillis() + "";JSONObject jsonObject = new JSONObject();jsonObject.put("userName", userName);jsonObject.put("email", "apkdream@163.com");String msg = jsonObject.toJSONString();jmsMessagingTemplate.convertAndSend(queue, msg);System.out.println("采用点对点通讯模式,msg:" + msg);}
}
1.5 启动类AppProducer
@SpringBootApplication
@EnableScheduling
public class AppProducer {public static void main(String[] args) {SpringApplication.run(AppProducer.class, args);}}
2. 消费者
2.1 引入maven依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.itmayiedu</groupId><artifactId>springboot-p2p-consumer</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.1.RELEASE</version></parent><!-- 管理依赖 --><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.M7</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- SpringBoot整合Web组件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SpringBoot Activemq --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-activemq</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.49</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency></dependencies><!-- 注意: 这里必须要添加, 否者各种依赖有问题 --><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/libs-milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories>
</project>
2.2 application.yml配置
spring:activemq:###MQ连接通讯地址broker-url: tcp://127.0.0.1:61616###账号user: admin###密码 password: adminmail:###163邮件服务host: smtp.163.com###发送邮件账号username: apkdream@163.com###pop协议授权码 password: xxxxxxenable: truesmtp:auth: truestarttls:enable: truerequired: true###自定义队列
my_queue: springboot2.0-queueserver:port: 8088
2.3 创建消费者类Consumer
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;/*** 消费者*/
@Component
public class Consumer {@Autowiredprivate JavaMailSender javaMailSender;/*** 幂等性* @param msg* @throws Exception*/@JmsListener(destination = "${my_queue}")public void receive(String msg) throws Exception {if (StringUtils.isEmpty(msg)) {return;}/** 1.解析json **/JSONObject parseObject = JSONObject.parseObject(msg);String userName = parseObject.getString("userName");String email = parseObject.getString("email");sendSimpleMail(email, userName);System.out.println("采用点对点模式,消费者成功获取到生产者的消息,msg:" + msg);}public void sendSimpleMail(String eamil, String userName) throws Exception {SimpleMailMessage message = new SimpleMailMessage();/** 邮件来自 自己发自己 **/message.setFrom(eamil);/** 发送给谁 **/message.setTo(eamil);/** 邮件标题 **/message.setSubject("niceyoo 新邮件提醒");/** 邮件内容 **/message.setText("收到一批新的" + userName + "邮件!");/** 发送邮件 **/javaMailSender.send(message);System.out.println("邮件发送完成," + JSONObject.toJSONString(message));}}
2.4 启动类AppConsumer
@SpringBootApplication
public class AppConsumer {public static void main(String[] args) {SpringApplication.run(AppConsumer.class, args);}}
3. 启动截图
3.1 生产者截图
3.2 消费者截图
3.3 ActiveMQ后台截图
- Number Of Consumers 消费者 这个是消费者端的消费者数量 ;
- Number Of Pending Messages 等待消费的消息 这个是当前未出队列的数量。可以理解为总接收数-总出队列数;
- Messages Enqueued 进入队列的消息 进入队列的总数量,包括出队列的。 这个数量只增不减 ;
- Messages Dequeued 出了队列的消息 可以理解为是消费这消费掉的数量 ;
3.4 邮件系统截图
Springboot整合ActiveMQ发送邮件相关推荐
- SpringBoot整合activeMQ消息队列手动签收(Session.CLIENT_ACKNOWLEDGE)为什么失效啊?
今天在家隔离办公,不太忙,然后就琢磨起来消息队列activeMQ的消息事务来解决分布式事务,但是奈何在SpringBoot整合activeMQ时,其消费者手动签收消息时出现了问题-->当acti ...
- activeMQ基础学习和SpringBoot整合activeMQ案例
昨天仔细研究了activeMQ消息队列,也遇到了些坑,昨天晚上也写了篇文章记录坑的内容,其实上篇文章(SpringBoot整合activeMQ消息队列手动签收(Session.CLIENT_ACKNO ...
- springboot整合ActiveMQ(点对点和发布订阅)
springboot整合ActiveMQ(点对点和发布订阅) ActiveMQ是什么,为什么使用MQ 是基于 Java 中的 JMS 消息服务规范实现的一个消息中间件. 1.系统解耦 采用中间件之后, ...
- SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.21 SpringBoot 整合 ActiveMQ
SpringBoot [黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)] SpringBoot 开发实用篇 文章目录 Spring ...
- 详细的springboot整合activeMq安装与使用(上)
最近在学习activeMQ消息中间件,特此记录一下,方便以后使用. 如果有不严谨的地方,欢迎大家提出,共同进步呀. 本章,会先讲解activeMq的基本介绍.安装.和更改用户名.端口号.下节会仔细讲解 ...
- SpringBoot整合 ActiveMQ、SpringBoot整合RabbitMQ、SpringBoot整合Kafka
1.概念:SpringBoot 整合消息服务2.具体内容对于异步消息组件在实际的应用之中会有两类:· JMS:代表作就是 ActiveMQ,但是其性能不高,因为其是用 java 程序实现的:· AMQ ...
- springboot整合activemq加入会签,自动重发机制,持久化
消费者客户端成功接收一条消息的标志是:这条消息被签收. 消费者客户端成功接收一条消息一般包括三个阶段: 1.消费者接收消息,也即从MessageConsumer的receive方法返 ...
- SpringBoot整合第三方技术学习笔记(自用)
SpringBoot整合第三方技术学习笔记 搬运黑马视频配套笔记 KF-4.数据层解决方案 KF-4-1.SQL 回忆一下之前做SSMP整合的时候数据层解决方案涉及到了哪些技术?MySQL数据库与My ...
- SpringBoot集成ActiveMq消息队列实现即时和延迟处理
原文链接:https://blog.csdn.net/My_harbor/article/details/81328727 一.安装ActiveMq 具体安装步骤:自己谷歌去 二.新建springbo ...
最新文章
- 【OpenCV】将图像数据由YUV格式转换成JPG格式直接使用,而不保存成文件
- Python学习笔记(十一)
- 如何为网站增加索引,促进网站SEO优化?
- preg_grep用法
- 用BusyBox制作Linux根文件系统
- 滴滴 AI Labs 负责人叶杰平因个人原因即将离职!CTO 张博接任
- 安全公司本意告警用户,不料先遭攻击并泄露超50亿个人数据
- 系统学习深度学习(十三)--Batch Normalization
- android卡片式通知,原子通知+超级卡包,OriginOS比传统安卓更懂用户的需求
- delphi2007不使用msbuild的方法
- Java常见设计模式面试题及答案
- 使用x264压制视频简介
- 分享几个写英文论文的网页和软件
- 礼金记账本安卓_礼金记账本
- CF1144C - Two Shuffled Sequences
- 小米微信自动加好友appium
- 【算法设计与分析】7、0/1背包问题,动态规划
- 《人月神话》(P10)必须有文档
- 《JavaScript_DOM编程艺术》Chapter05 最佳实践,Chapter06 图片库改进版---20210427
- 嵌入式入门学习笔记1
热门文章
- [html] 如何放大点击的区域?
- [css] 如何写高效的CSS?
- 前端学习(2696):重读vue电商网站17之监听图片上传成功事件
- 前端学习(2667):退出编辑状态
- 前端学习(1935)vue之电商管理系统电商系统之实现权限的默认勾选功能
- 前端学习(583):在console中访问节点
- html:(23):css代码语法和css注释语法
- java学习(34):巩固练习
- labview在2048中添加时间滚动条_Chrome优化深色模式:滚动条颜色也能跟随变化 使上网更具沉浸感...
- 正则不等于一个字符串_乳饮料不等于酸奶,记住一个关键词,花最少的钱买到真正的好酸奶...