SpringBoot整合ActiveMQ发送邮件

虽然ActiveMQ以被其他MQ所替代,但仍有学习的意义,本文采用邮件发送的例子展示ActiveMQ

1. 生产者1.1 引入maven依赖1.2 application.yml配置1.3 创建配置类ConfigQueue1.4 创建生产者类Producer1.5 启动类AppProducer2. 消费者2.1 引入maven依赖2.2 application.yml配置2.3 创建消费者类Consumer2.4 启动类AppConsumer3. 启动截图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-queue

server:  port: 8089

1.3 创建配置类ConfigQueue

@Componentpublic class ConfigQueue {

    @Value("${my_queue}")    private String myQueue;

    /**     * 1.首先需要将队列注入springboot容器中     *     * @return     */    @Bean    public Queue queue() {        return new ActiveMQQueue(myQueue);    }

}

1.4 创建生产者类Producer

@Componentpublic class Producer {

    @Autowired    private JmsMessagingTemplate jmsMessagingTemplate;    @Autowired    private Queue queue;

    /**     * 每隔5秒种时间向队列中发送消息     */    @Scheduled(fixedDelay = 5000)    public void send() {        String userName = System.currentTimeMillis() + "";        JSONObject jsonObject = new JSONObject();        jsonObject.put("userName", userName);        jsonObject.put("email", "[email protected]");        String msg = jsonObject.toJSONString();        jmsMessagingTemplate.convertAndSend(queue, msg);        System.out.println("采用点对点通讯模式,msg:" + msg);    }}

1.5 启动类AppProducer

@SpringBootApplication@EnableSchedulingpublic 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: admin  mail:  ###163邮件服务    host: smtp.163.com  ###发送邮件账号    username: [email protected]  ###pop协议授权码      password: xxxxxx    enable:  true    smtp:      auth: true    starttls:      enable: true      required: true

###自定义队列    my_queue: springboot2.0-queue

server:  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;

/** * 消费者 */@Componentpublic class Consumer {

    @Autowired    private 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

@SpringBootApplicationpublic 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 邮件系统截图

原文地址:https://www.cnblogs.com/niceyoo/p/11428381.html

时间: 2024-11-03 00:16:10

SpringBoot整合ActiveMQ发送邮件的相关文章

Web项目容器集成ActiveMQ &amp; SpringBoot整合ActiveMQ

集成tomcat就是随项目启动而启动tomcat,最简单的方法就是监听器监听容器创建之后以Broker的方式启动ActiveMQ. 1.web项目中Broker启动的方式进行集成 在这里采用Listener监听ServletContext创建和销毁进行Broker的启动和销毁. 0.需要的jar包: 1.listener实现ServletContextListener接口 package cn.qlq.listener; import javax.servlet.ServletContextEv

解决Springboot整合ActiveMQ发送和接收topic消息的问题

环境搭建 1.创建maven项目(jar) 2.pom.xml添加依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.0.RELEASE</version> </parent> <dependencies> &l

SpringBoot整合ActiveMQ

先建工程 .. .. .. .. ..先看一下最终目录结构(实际上核心就是两个类,但是其他的多写写还是没有坏处的) 消息实体类 package com.example.demo.domain; import java.io.Serializable; import java.util.Date; public class Message implements Serializable { private int id; private String from; private String to

SpringBoot整合ActiveMQ实现持久化

点对点(P2P) 结构 创建生产者和消费者两个springboot工程 导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> 生产者 步骤一:application.properties文件 spring.activemq.brok

springboot整合activemq小demo

直接上干货... 1.首先配置pom.xml文件如下: <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.

SpringBoot 整合 ActiveMq

消息队列,用来处理开发中的高并发问题,通过线程池.多线程高效的处理并发任务. 首先,需要下载一个ActiveMQ的管理端:我本地的版本是 activemq5.15.8,打开activemq5.15.8\bin\win64\wrapper.exe客户端,可以根据localhost:端口号,访问ActiveMQ的管理界面.默认的用户名.密码都是admin. (一)pom 文件中添加 ActiveMq 依赖 <dependency> <groupId>org.apache.activem

springboot 整合ActiveMq

pom.xml <!-- 配置ActiveMQ启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> 创建消息队列 //创建队列 @Bean public Queue queue(){ return new Acti

SpringBoot系列八:SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)

https://www.cnblogs.com/xuyiqing/p/10851859.html https://www.cnblogs.com/leeSmall/p/8721556.html https://www.cnblogs.com/linyufeng/p/9885645.html 原文地址:https://www.cnblogs.com/418836844qqcom/p/11540020.html

SpringBoot整合ActiveMQ开启持久化

1.开启队列持久化 只需要添加三行代码 jmsTemplate.setDeliveryMode(2); jmsTemplate.setExplicitQosEnabled(true); jmsTemplate.setDeliveryPersistent(true); 2. 开启主题持久化,启动类添加如下配置 @Bean(name = "topicListenerFactory") public JmsListenerContainerFactory<DefaultMessageL