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

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

3.4 邮件系统截图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHPStudy集成环境下使用laravel框架报错ERR_CONNECTION_REFUSED

环境&#xff1a;php7.2mysqlapachelaravel5.5 因为要搞个新项目&#xff0c;用了laravel&#xff0c;不是很熟悉这个框架&#xff0c;还用了laravel-admin后台系统&#xff0c;配置本地虚拟域名的时候&#xff0c;映射始终报错&#xff0c;能访问到项目跟目录&#xff0c;但是…

MQTT客户端库-Paho GO

为了加深理解&#xff0c;本文是翻译文章。原文地址 Paho GO Client   语言  GO协议EPL AND EDL官网地址http://www.eclipse.org/paho/API类型Asynchronous 描述 回到2013年10月&#xff0c;我转到了关于其他Paho MQTT客户端库的编写&#xff0c;并选择了作为一种新的语言去…

RabbitMQ简单介绍+Windows环境安装

文章目录 文章目录文章目录1、RabbitMQ简介2、RabbitMQ与其他MQ有什么不同3、RabbitMQ环境安装3.1 安装erlang3.2 安装rabbitmq-server4. RabbitMQ管理平台介绍1、RabbitMQ简介 RabbitMQ 是一个由 erlang 开发的 AMQP&#xff08;Advanced Message Queue &#xff09;的开源实…

intellij idea 在Java控制台报java: 错误: 无效的源发行版:16

一共有三个地方要设置 第一个地方File->Project Structure->Project,全部修改为对应的JDK版本&#xff0c;例如如果是1.8&#xff0c;language level就选择8对应的包&#xff0c; 第二个地方File->Project Structure->Modules 也有个language level&#xff0c;一…

RabbitMQ六种队列模式-主题模式

前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列模式-主题模式 [本文] 从前面的几篇我们依次经历了 exchange 模式从 fanout > direct 的转变过程&#xff0c;在 fanout …

exe4j打包jar包生成exe文件BUG日记

参考了很多资料,生成需要的包以及设置文件目录: 不过我用的是IntelliJ IDEA 2021.3.3,所以java打包成jar的步骤以及配置有点不同; 首先设置导出配置:File->Project Strure->Artifacts MANIFEST.MF最好保存在src目录下,避免生成的jar包再打包成Exe时找不到主类: …

RabbitMQ六种队列模式-路由模式

前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 [本文] RabbitMQ六种队列模式-主题模式 本文带大家了解 RabbitMQ 队列模式中的路由模式。 其实只要看过上篇发布模式后&#xff0c;相信路由…

已经改成UTF-8了,git提交properties还是乱码

原因idea的File Encoding勾选了Transparent native-to-ascii conversion 如果团队中都勾选了则无所谓、如果有的勾选、有的没勾选合并代码会出现乱码。

RabbitMQ六种队列模式-发布订阅模式

前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 [本文] RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列模式-主题模式 上文的工作队列模式是直接在生产者与消费者里声明好一个队列&#xff0c;这种情况下消息只会对应同类…

javafx HBOX按钮右对齐

<HBox spacing"20" alignment"CENTER_LEFT"> <!---关键在这里----><HBox HBox.hgrow"ALWAYS"></HBox><JFXButton prefWidth"100" fx:id"dialogCommitButton" prefHeight"40" textAlig…

景山公园

转载于:https://www.cnblogs.com/optor/p/8928938.html

RabbitMQ六种队列模式-工作队列模式

前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 [本文] RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列模式-主题模式 上文我们了解了 RabbitMQ 六种队列模式中的简单队列&#xff0c;代码也是非常的简单&#xff0c;比较…

RabbitMQ六种队列模式-简单队列模式

前言 RabbitMQ六种队列模式-简单队列 [本文] RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列模式-主题模式 在官网的教程中&#xff0c;描述了如上六类工作队列模式&#xff1a; 简单队列模式&#xff1a;最简…

工作290:重置新增的mode

/*4 GY定义 找到该组件下面的add方法*/add() {/* 5GY定义 给当前属性下面的title赋值*/this.title "新增";/*重置新增的mode*/this.mode[]this.show();this.IsShowtrue;this.attrthis.viewMode false;this.approveMode false/* 7GY定义 给当前的form赋值 并进行对…

串口数据字节位的理解

# STM32F4xx系列的MCU的UART数据字节组成如下图 # 发送数据做如下图示&#xff0c;data byte MSB 与 Parity 重合 # 先刨去 Parity bit&#xff0c;分析 LSB ~ MSB 的纯数据&#xff1a; > 假定数据中的 ‘1’ 个数为奇数&#xff0c;偶校验&#xff1a;Parity ‘1’&#…

RabbitMQ消息确认机制

文章目录1. 事务机制2. Confirm模式2.1 生产者2.1.1 普通Confirm模式2.1.2 批量Confirm模式2.1.3 异步Confirm模式2.2 消费者3. 其他消费者如何确保消息一定能够消费成功呢&#xff1f;由于在前面工作队列模式里面我们了解了应答模式&#xff0c;所以我们可以很自信的回答如上题…

RabbitMQ消息幂等性问题

文章目录1. 什么是幂等性&#xff1f;1.1 消息队列的幂等性1.2 模拟重试机制1.2.1 生产者代码1.2.2 消费者代码1.2.3 消费者 application.yml 配置2. 如何保证消息幂等性&#xff0c;不被重复消费&#xff1f;解决方法1. 什么是幂等性&#xff1f; 在编程中一个幂等操作的特点是…

Centos安装JDK(java环境)

王小私下问我 centos 中 jdk 怎么安装呀&#xff0c;所以再次整理了这篇基础环境搭建的文章。 1、创建java目录2、下载上传jdk3、解压jdk4、配置环境变量 1、创建java目录 首先我们创建java的安装目录 cd /usrmkdir javacd java 2、下载上传jdk 我们如上在 usr 目录下创建了 ja…

工作288:根据时间戳处理接口

<template><div class"table-list-page"><div class"query-area"><el-date-pickerv-model"value1"type"daterange"range-separator"至"start-placeholder"开始日期"end-placeholder"结…

Centos7安装MySQL(多图)

文章目录一、在线安装1、替换网易yum源2、清理缓存3、下载rpm文件4、安装MySQL数据库二、本地安装1、上传MySQL安装包2、安装依赖的程序包3、卸载mariadb程序包4、安装MySQL程序包5、修改MySQL目录权限6、初始化MySQL三、启动MySQL1.1、在线安装方式启动MySQL1.2、本地安装方式…