Web项目容器集成ActiveMQ & SpringBoot整合ActiveMQ
集成tomcat就是随项目启动而启动tomcat,最简单的方法就是监听器监听容器创建之后以Broker的方式启动ActiveMQ。
1.web项目中Broker启动的方式进行集成
在这里采用Listener监听ServletContext创建和销毁进行Broker的启动和销毁。
0.需要的jar包:

1.listener实现ServletContextListener接口
package cn.qlq.listener; import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; import org.apache.activemq.broker.BrokerService; public class ActiveMQListener implements ServletContextListener { private static final BrokerService brokerService = new BrokerService(); @Override
public void contextDestroyed(ServletContextEvent arg0) {
try {
brokerService.stop();
System.out.println("broker 停止");
} catch (Exception e) { }
} @Override
public void contextInitialized(ServletContextEvent arg0) {
try {
brokerService.setUseJmx(true);
brokerService.addConnector("tcp://localhost:61616");
brokerService.start();
System.out.println("broker 启动");
} catch (Exception e) {
e.printStackTrace();
}
} }
web.xml进行监听器的配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>MyWeb</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <listener>
<listener-class>cn.qlq.listener.ActiveMQListener</listener-class>
</listener> </web-app>
测试方法:向容器中发送和接收消息,成功证明整合成功。
2.SpringBoot中以Broker方式启动ActiveMQ
1.maven中增加如下配置:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.5.1</version>
</dependency>
2.编写Listener
package cn.qlq.listener; import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; import org.apache.activemq.broker.BrokerService; public class ActiveMQListener implements ServletContextListener {
private static final BrokerService brokerService = new BrokerService(); @Override
public void contextDestroyed(ServletContextEvent arg0) {
try {
brokerService.stop();
System.out.println("broker 停止");
} catch (Exception e) { }
} @Override
public void contextInitialized(ServletContextEvent arg0) {
try {
brokerService.setUseJmx(true);
brokerService.addConnector("tcp://localhost:61616");
brokerService.start();
System.out.println("broker 启动");
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.注册Listener到容器中:
package cn.qlq.config; import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import cn.qlq.listener.ActiveMQListener;/**
*
* @author Administrator
*
*/
@Configuration
public class ListenerConfig { @Bean
public ServletListenerRegistrationBean<ActiveMQListener> listenerRegist3() {
ServletListenerRegistrationBean<ActiveMQListener> srb = new ServletListenerRegistrationBean<ActiveMQListener>();
srb.setListener(new ActiveMQListener());
return srb;
} }
测试方法:向容器中发送和接收消息,成功证明整合成功。
3.SpringBoot整合ActiveMQ进行开发
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<!-- <version>5.7.0</version> -->
</dependency>
application.properties增加activeMQ配置
spring.activemq.brokerUrl=tcp://127.0.0.1:61616 #spring.activemq.user=admin
#spring.activemq.password=123456
#spring.activemq.in-memory=true
#spring.activemq.pool.enabled=false
编写生产者代码:
package cn.qlq.activemq; import javax.jms.Destination; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Component; @Component("producer")
public class Producer {
// 也可以注入JmsTemplate,JmsMessagingTemplate对JmsTemplate进行了封装
@Autowired
private JmsMessagingTemplate jmsTemplate; // 发送消息,destination是发送到的队列,message是待发送的消息
public void sendMessage(Destination destination, final String message) {
jmsTemplate.convertAndSend(destination, message);
}
}
消费者代码:
package cn.qlq.activemq; import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component; @Component
public class Consumer { // 使用JmsListener配置消费者监听的队列,其中text是接收到的消息
@JmsListener(destination = "myQueue")
public void receiveQueue(String text) {
System.out.println("Consumer收到的报文为:" + text);
} }
测试代码:
import javax.jms.Destination; import org.apache.activemq.command.ActiveMQQueue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import cn.qlq.MySpringBootApplication;
import cn.qlq.activemq.Producer; @RunWith(SpringRunner.class)
@SpringBootTest(classes = MySpringBootApplication.class)
public class PlainTest {
@Autowired
private Producer producer; @Test
public void contextLoads() throws InterruptedException {
Destination destination = new ActiveMQQueue("myQueue"); for (int i = 0; i < 5; i++) {
producer.sendMessage(destination, "message" + i);
}
}
}
当然了这种方式也可以使用外部的ActiveMQ,也就是不用Broker方式启动ActiveMQ,以bat文件启动ActiveMQ之后整合方式同上。
git地址:https://github.com/qiao-zhi/springboot-ssm.git
Web项目容器集成ActiveMQ & SpringBoot整合ActiveMQ的更多相关文章
- SpringBoot系列八:SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合消息服务 2.具体内容 对于异步消息组件在实际的应用之中会有两类: · JMS:代表作就是 ...
- SpringBoot整合ActiveMQ快速入门
Spring Boot 具有如下特性: 为基于 Spring 的开发提供更快的入门体验 开箱即用,没有代码生成,也无需 XML 配置.同时也可以修改默认值来满足特定的需求. 提供了一些大型项目中常见的 ...
- 解决Springboot整合ActiveMQ发送和接收topic消息的问题
环境搭建 1.创建maven项目(jar) 2.pom.xml添加依赖 <parent> <groupId>org.springframework.boot</group ...
- SpringBoot整合ActiveMQ和开启持久化
一.点对点 1.提供者目录展示 2.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> &l ...
- ActiveMQ 笔记(四)Spring\SpringBoot 整合 Activemq
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.Spring 整合Activemq 1.所需jar包 <dependencies> &l ...
- 06_在web项目中集成Spring
在web项目中集成Spring 一.使用Servlet进行集成测试 1.直接在Servlet 加载Spring 配置文件 ApplicationContext applicationContext = ...
- Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问
本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...
- Springboot整合activemq
今天呢心血来潮,也有很多以前的学弟问到我关于消息队列的一些问题,有个刚入门,有的有问题都来问我,那么今天来说说如何快速入门mq. 一.首先说下什么是消息队列? 1.消息队列是在消息的传输过程中保存消息 ...
- SpringBoot整合ActiveMQ发送邮件
虽然ActiveMQ以被其他MQ所替代,但仍有学习的意义,本文采用邮件发送的例子展示ActiveMQ 1. 生产者1.1 引入maven依赖1.2 application.yml配置1.3 创建配置类 ...
随机推荐
- 序言 - PHP零基础快速入门
我为什么要写<PHP零基础快速入门>? 原因: PHP 真心简单,适合零基础的人快速入门掌握,身边的人学习一两周上手开发的比比皆是: 市面上的文章或书籍对初学者并不友好,多半枯燥乏味,我相 ...
- 【刷题】【LeetCode】007-整数反转-easy
[刷题][LeetCode]总 用动画的形式呈现解LeetCode题目的思路 参考链接-空 007-整数反转 方法: 弹出和推入数字 & 溢出前进行检查 思路: 我们可以一次构建反转整数的一位 ...
- Centos6.5-dnsmasq安装
1.使用yum install dnsmasq -y 安装dns(含dns server和dns代理功能) 2.查询dnsmasq已经安装成功 [root@localhost ~]# rpm -q d ...
- 前端知识之Ajax
Asynchronous JavaScript and XML 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.是在不重新加载整个页面的情况下,与服务器交换数据并异步更新部分网页 ...
- Vs2015 当前不会命中断点,没有与此关联的可执行代码
在学习Civil 3D本地化包程序的过程中, 使用.Net Reflector调试本地化包的主程序CountryKits.dll, .Net Reflector创建了相应的pdb文件等, 在我反编译并 ...
- P1462 通往奥格瑞玛的道路
P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...
- 自动化测试框架【windows版】:JMeter + Ant + Jenkins
前提条件:windows安装了jmeter.ant.jenkins 安装方法参考汇总目录中对应的博文 截图看不清的,可以调大浏览器倍数看 jenkins驱动ant执行,ant驱动jmeter执行 an ...
- MATLAB模型预测控制(MPC,Model Predictive Control)
模型预测控制是一种基于模型的闭环优化控制策略. 预测控制算法的三要素:内部(预测)模型.参考轨迹.控制算法.现在一般则更清楚地表述为内部(预测)模型.滚动优化.反馈控制. 大量的预测控制权威性文献都无 ...
- package.json 中script脚本传入参数问题
"build:test": "cross-env BUILD_ENV=dev nuxt build", 最近项目中通过传入自定义参数区分测试和正式环境,但是发现 ...
- Django基础(路由、视图、模板)
目录导航 Django 路由控制 Django 视图层 Django 模版层 Django 路由控制 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用 ...