虽然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后台截图

  1. Number Of Consumers  消费者 这个是消费者端的消费者数量 ;
  2. Number Of Pending Messages 等待消费的消息 这个是当前未出队列的数量。可以理解为总接收数-总出队列数;
  3. Messages Enqueued 进入队列的消息  进入队列的总数量,包括出队列的。 这个数量只增不减 ;
  4. Messages Dequeued 出了队列的消息  可以理解为是消费这消费掉的数量 ;

3.4 邮件系统截图

Springboot整合ActiveMQ发送邮件相关推荐

  1. SpringBoot整合activeMQ消息队列手动签收(Session.CLIENT_ACKNOWLEDGE)为什么失效啊?

    今天在家隔离办公,不太忙,然后就琢磨起来消息队列activeMQ的消息事务来解决分布式事务,但是奈何在SpringBoot整合activeMQ时,其消费者手动签收消息时出现了问题-->当acti ...

  2. activeMQ基础学习和SpringBoot整合activeMQ案例

    昨天仔细研究了activeMQ消息队列,也遇到了些坑,昨天晚上也写了篇文章记录坑的内容,其实上篇文章(SpringBoot整合activeMQ消息队列手动签收(Session.CLIENT_ACKNO ...

  3. springboot整合ActiveMQ(点对点和发布订阅)

    springboot整合ActiveMQ(点对点和发布订阅) ActiveMQ是什么,为什么使用MQ 是基于 Java 中的 JMS 消息服务规范实现的一个消息中间件. 1.系统解耦 采用中间件之后, ...

  4. SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.21 SpringBoot 整合 ActiveMQ

    SpringBoot [黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)] SpringBoot 开发实用篇 文章目录 Spring ...

  5. 详细的springboot整合activeMq安装与使用(上)

    最近在学习activeMQ消息中间件,特此记录一下,方便以后使用. 如果有不严谨的地方,欢迎大家提出,共同进步呀. 本章,会先讲解activeMq的基本介绍.安装.和更改用户名.端口号.下节会仔细讲解 ...

  6. SpringBoot整合 ActiveMQ、SpringBoot整合RabbitMQ、SpringBoot整合Kafka

    1.概念:SpringBoot 整合消息服务2.具体内容对于异步消息组件在实际的应用之中会有两类:· JMS:代表作就是 ActiveMQ,但是其性能不高,因为其是用 java 程序实现的:· AMQ ...

  7. springboot整合activemq加入会签,自动重发机制,持久化

    消费者客户端成功接收一条消息的标志是:这条消息被签收. 消费者客户端成功接收一条消息一般包括三个阶段:          1.消费者接收消息,也即从MessageConsumer的receive方法返 ...

  8. SpringBoot整合第三方技术学习笔记(自用)

    SpringBoot整合第三方技术学习笔记 搬运黑马视频配套笔记 KF-4.数据层解决方案 KF-4-1.SQL 回忆一下之前做SSMP整合的时候数据层解决方案涉及到了哪些技术?MySQL数据库与My ...

  9. SpringBoot集成ActiveMq消息队列实现即时和延迟处理

    原文链接:https://blog.csdn.net/My_harbor/article/details/81328727 一.安装ActiveMq 具体安装步骤:自己谷歌去 二.新建springbo ...

最新文章

  1. 【OpenCV】将图像数据由YUV格式转换成JPG格式直接使用,而不保存成文件
  2. Python学习笔记(十一)
  3. 如何为网站增加索引,促进网站SEO优化?
  4. preg_grep用法
  5. 用BusyBox制作Linux根文件系统
  6. 滴滴 AI Labs 负责人叶杰平因个人原因即将离职!CTO 张博接任
  7. 安全公司本意告警用户,不料先遭攻击并泄露超50亿个人数据
  8. 系统学习深度学习(十三)--Batch Normalization
  9. android卡片式通知,原子通知+超级卡包,OriginOS比传统安卓更懂用户的需求
  10. delphi2007不使用msbuild的方法
  11. Java常见设计模式面试题及答案
  12. 使用x264压制视频简介
  13. 分享几个写英文论文的网页和软件
  14. 礼金记账本安卓_礼金记账本
  15. CF1144C - Two Shuffled Sequences
  16. 小米微信自动加好友appium
  17. 【算法设计与分析】7、0/1背包问题,动态规划
  18. 《人月神话》(P10)必须有文档
  19. 《JavaScript_DOM编程艺术》Chapter05 最佳实践,Chapter06 图片库改进版---20210427
  20. 嵌入式入门学习笔记1

热门文章

  1. [html] 如何放大点击的区域?
  2. [css] 如何写高效的CSS?
  3. 前端学习(2696):重读vue电商网站17之监听图片上传成功事件
  4. 前端学习(2667):退出编辑状态
  5. 前端学习(1935)vue之电商管理系统电商系统之实现权限的默认勾选功能
  6. 前端学习(583):在console中访问节点
  7. html:(23):css代码语法和css注释语法
  8. java学习(34):巩固练习
  9. labview在2048中添加时间滚动条_Chrome优化深色模式:滚动条颜色也能跟随变化 使上网更具沉浸感...
  10. 正则不等于一个字符串_乳饮料不等于酸奶,记住一个关键词,花最少的钱买到真正的好酸奶...