做网站有什么注意事项,网站开发vs设计报告,购物网页模板,营销网站建设哪个平台好虽然ActiveMQ以被其他MQ所替代#xff0c;但仍有学习的意义#xff0c;本文采用邮件发送的例子展示ActiveMQ 文章目录1. 生产者1.1 引入maven依赖1.2 application.yml配置1.3 创建配置类ConfigQueue1.4 创建生产者类Producer1.5 启动类AppProducer2. 消费者2.1 引入maven依赖… 虽然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 xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.itmayiedu/groupIdartifactIdspringboot-p2p-roducer/artifactIdversion0.0.1-SNAPSHOT/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.0.1.RELEASE/version/parent!-- 管理依赖 --dependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversionFinchley.M7/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependencies!-- SpringBoot整合Web组件 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- SpringBoot Activemq --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-activemq/artifactId/dependency!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.49/version/dependency/dependencies!-- 注意 这里必须要添加 否者各种依赖有问题 --repositoriesrepositoryidspring-milestones/idnameSpring Milestones/nameurlhttps://repo.spring.io/libs-milestone/urlsnapshotsenabledfalse/enabled/snapshots/repository/repositories/project1.2 application.yml配置
spring:activemq:###MQ连接通讯地址broker-url: tcp://127.0.0.1:61616###账号user: admin###密码 password: admin###自定义队列
my_queue: springboot2.0-queueserver:port: 80891.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, apkdream163.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 xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.itmayiedu/groupIdartifactIdspringboot-p2p-consumer/artifactIdversion0.0.1-SNAPSHOT/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.0.1.RELEASE/version/parent!-- 管理依赖 --dependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversionFinchley.M7/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependencies!-- SpringBoot整合Web组件 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- SpringBoot Activemq --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-activemq/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.49/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-mail/artifactId/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactId/dependency/dependencies!-- 注意 这里必须要添加 否者各种依赖有问题 --repositoriesrepositoryidspring-milestones/idnameSpring Milestones/nameurlhttps://repo.spring.io/libs-milestone/urlsnapshotsenabledfalse/enabled/snapshots/repository/repositories
/project2.2 application.yml配置
spring:activemq:###MQ连接通讯地址broker-url: tcp://127.0.0.1:61616###账号user: admin###密码 password: adminmail:###163邮件服务host: smtp.163.com###发送邮件账号username: apkdream163.com###pop协议授权码 password: xxxxxxenable: truesmtp:auth: truestarttls:enable: truerequired: true###自定义队列
my_queue: springboot2.0-queueserver:port: 80882.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 邮件系统截图