ActiveMQ嵌入Tomcat

tomcat下activemq之http配置 NULL 博文链接:https://belinda407.iteye.com/blog/986652 立即下载

在一些项目中,单独开启一个ActiveMQ,对于项目实施来说有时略显繁琐。所以我们将ActiveMQ内嵌到Tomcat,Tomcat启动同时就顺带启动了ActiveMQ。由此我们需要掌握三个个重要的知识点

ActiveMQ中的BrokerService

自启动Servlet配置

使用jconsole了解嵌入ActiveMQ运行状态

一、开启BrokerService

在pom.xml添加ActiveMQ依赖,本次代码实例采用5.7版本,记住只需要activemq-core就行。

org.apache.activemq

activemq-core

5.7.0

在编写BrokerService代码部分,主要注意三个点

是否需要在jconsole中显示监控信息 broker.setUseJmx(true)

设置连接用户名和密码,如何使用验证插件

是否持久化,存储位置设置,持久化配置

所以需要启动一个连接地址 tcp://localhost:61616,用户名为admin,密码为admin,需要持久化,持久化数据文件存储地址为 /activemq ,需要启动jconsole监控的BrokerService的代码如下:

1 // author:herbert qq:464884492

2 BrokerService broker = new BrokerService();

3 broker.setUseJmx(true); // 开启监控

4 broker.setPersistent(true); // 持久化

5 broker.setBrokerName("Test");

6 SimpleAuthenticationPlugin sap = new SimpleAuthenticationPlugin();

7 AuthenticationUser au = new AuthenticationUser("admin", "admin","users");

8 ArrayList d = new ArrayList();

9 d.add(au);

10 sap.setUsers(d); // 用户验证

11 broker.setPlugins(new BrokerPlugin[] { sap });

12 String mqDataPath = "/activemq"; // 存储位置

13 broker.getPersistenceAdapter().setDirectory(new File(mqDataPath));

14 broker.addConnector("tcp://localhost:61616"); // 连接地址

15 broker.start();

二、生产者和消费者

ActiveMQ中,通用的消息传递方式有两种

队列,支持消息持久化,未消费的消息,在重启后依然存在。若有多个消费者,在每次提取一条消息的前提下,所有消费均分队列中的消息

主题,不支持消息持久化,未消费的消息,在重启后消息丢失。若有多个消费,每个消费者依次消费主题中所有消息

不管是生产者还是消费者代码编写,主要是4个步骤

建立连接,采用failover:()方式,自动断线重连

建立Session,获取发送或接收目标Destination ,指定是队列(session.createQueue(queueName)),还是主题(session.createTopic(topicName))

通过Session获取生产者或消费者

生产或消费消息

我们现在编写一个生产者的代码,并循环产生10条消息

1 // author:herbert qq:464884492

2 String mqConnUrl = "tcp://localhost:61616";

3 String connUrl = "failover:(" + mqConnUrl.trim()+ ")?initialReconnectDelay=1000&maxReconnectDelay=30000";

4 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("admin","admin", connUrl);

5 javax.jms.Connection connection = connectionFactory.createConnection();

6 connection.start();

7 Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

8 Destination destination = session.createQueue("system");

9 MessageProducer messageProducer = session.createProducer(destination);

10 

11 for (int i = 0; i < 10; i++) {

12 javax.jms.TextMessage message = session.createTextMessage("ActiveMQ 发送的消息" + i);

13 System.out.println("发送消息:" + "ActiveMQ 发送的消息" + i);

14 messageProducer.send(message);

15 }

编写一个消费,消费上边的10条消息

// author:herbert qq:464884492

String mqConnUrl = "tcp://localhost:61616";

String connUrl = "failover:(" + mqConnUrl.trim()+ ")?initialReconnectDelay=1000&maxReconnectDelay=30000";

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("admin", "admin", connUrl);

javax.jms.Connection connection = connectionFactory.createConnection();

connection.start();

Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

Destination destination = session.createQueue("system");

MessageConsumer messageConsumer = session.createConsumer(destination);

messageConsumer.setMessageListener(new MessageListener() {br/>  @Override

public void onMessage(javax.jms.Message message) {

ActiveMQTextMessage m = (ActiveMQTextMessage) message;

try {

System.out.println("接收到:" + m.getText());

} catch (JMSException e) {

e.printStackTrace();

}

}

});

运行效果

13467292-8c9467eb773c3da9

可见,我们生产者,产生的10条消息,已成功被消费者处理了。

三、监控嵌入的ActiveMQ

对于嵌入的ActiveMQ,在BrokerService启动前需要设置 broker.setUseJmx(true);然后找到你的JAVA_HOME,切换到bin,输入jconsole命令。

13467292-f4e81ad23c58996c

待jconsole启动后,选择ActiveMQ所在的进程。连接后选择Mbean页签

13467292-bf8a72c591911ae3

红框的地方分别为已消费和已进入MQ中的消息的条数。选择操作,找到那个SendTextMessage还可以想此队列发送消息。

四、Selvelt跟随Tomcat启动

对于Tomcat7.x版本之后Tomcat,Selvelt都可以通过直接在代码中通过注解的方式配置URl连接,一起是否自启动loadOnStartup这个值>=0表示需要自启动,值越小优先级越高

1 // author:herbert qq:464884492

2 @WebServlet(urlPatterns = "/initmq", loadOnStartup = 1)

3 public class InitMqServlet extends HttpServlet {

4 @Override

5 public void init(ServletConfig config) throws ServletException {

6 super.init(config);

7 // 这里编写启动ActiveMQ代码

8 }

9 }

五、总结

这次以ActiveMQ作为消息队列使用切入点,总体上说还比较顺利。其中唯一出现问题的地方就是对于activeMQ依赖过多,多依赖了jaractivemq-broker,导致消息能连接,但不能发送消息。后边直接换成 activemq-all,有出现slf4j日志冲突,使用exclusions依然不能解决问题。最终只依赖 activemq-core,完美解决所有问题。

进群:可以领取免费的架构师学习资料。

进群:了解最新的学习动态

进群:了解最新的阿里,京东招聘资讯

进群:获取更多的面试资料

1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术

瓶颈的可以加群。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修

、跳槽拿高薪的可以加群。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想

,常用java开发框架掌握熟练的,可以加群。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很

难在技术领域继续突破的可以加群。

5. 群号:835638062 点击链接加入群:https://jq.qq.com/?

_wv=1027&k=5S3kL3v

6.阿里Java高级大牛直播讲解知识点,分享知识,上面五大专题都是各位老

师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系

和技术认知!

JDK+Tomcat+ActiveMQ安装环境配置详细说明 JDK Tomcat ActiveMQ 安装环境配置详细说明 立即下载

相关推荐

JMS教程+activemq以及activemq和tomcat的整合

JMS教程+activemq以及activemq和tomcat的整合+整合实例代码+持久化消息配置以及工程+tomcat服务器的配置

tomcat集成activeMq 简单例子

使用spring 的jms发送和接收消息 新建工程 导入spring的jar包, spring-aop-4.0.6.RELEASE.jar spring-aspects-4.0.6.RELEASE.jar spring-beans-4.0.6.RELEASE.jar spring-build-src-4.0.6.RELEASE.jar spring-co...

weixin_30566063的博客 245

一种导弹追踪算法的MATLAB仿真实现

以下是一个用于模拟机动变轨导弹和防空导弹追踪过程的 MATLAB 代码,同时会提供 3D 效果展示。你可以运行这段代码,从而观察机动变轨导弹和防空导弹的速度与位置变化。

SmartGridequation的博客 936

activemq 在tomcat上部署

1.下载activemq-all-5.9.jar 和activemq-web-console-5.9.0.war.地址:http://pan.baidu.com/s/1CxMUi。 2.将activemq-web-console-5.9.0.war放入tomcat 的webapps目录下面。activemq-all-5.9.jar 放入tomcat的lib下面。jstl.jar和standard

zhangpengju123456的博客 2187

Penpot自托管全攻略:5分钟搞定私有化部署(附Docker配置详解)

本文详细介绍了Penpot开源原型设计工具的私有化部署全流程,从Docker基础配置到企业级优化方案。通过分步指南和实战技巧,帮助设计团队快速搭建安全高效的自托管环境,实现数据自主可控。内容涵盖LDAP集成、性能监控、备份策略等关键企业需求,是Penpot私有化部署的完整参考手册。

sugar的博客 1137

ABP多租户实现

abp会调用ITenantStore.Find(Guid)方法去查tenant是否存在。要骗过abp就得自己实现ITenantStore并替换原来的实现。abp会自动解jwt里的tenant id,并且尝试验证它。这时候我们之前实现的ITenantStore就可以骗过abp。你要不想骗它也成,反正这个类是可以依赖注入的,你爱咋验证就咋验证。不用open id dict,只用jwt,让abp轻起来。在原来生成jwt的地方加入tenantId。module上也要加DependsOn。

m0_46704355的博客 473

Tomcat与Apache ActiveMQ整合:消息代理部署方案

在分布式系统架构中,服务间通信面临三大核心挑战:**同步调用导致的系统耦合**、**峰值流量下的服务雪崩**以及**跨语言服务间的协议差异**。以电商订单系统为例,当用户支付完成后,需要同步更新库存、通知物流、发送短信等操作,传统的同步调用方式会导致订单服务响应时间长达数百毫秒,且任一下游服务故障都会导致整个交易流程失败。 Apache Tomcat作为Java Web应用容器(Web Cont...

gitblog_00629的博客 879

EMC案例:解决千兆网口RTL8211F EMI问题

摘要:本文分析了Amlogic S812平台OEM项目中RTL8211F-CG千兆网卡EMI辐射超标问题。发现百兆测试时25MHz时钟有3dB余量,但千兆125MHz时钟导致超标。问题根源包括:未关闭PHY芯片悬空CLKOUT引脚、TX/RXCLK端RC位置错误、包地不完整及参考地缺失。解决方案涉及软件关闭无用时钟、优化RC布局、加强包地与打孔、调整共模电感位置,并在HDMI 3.3V加磁珠。关键结论指出千兆网125MHz时钟需严格包地打孔,且RC取值需平衡EMI与通信性能。

电子绿洲的博客 1285

在tomcat上部署activemq

1 相关链接 1.1 将activemq部署在tomcat上 http://tomee.apache.org/installation-drop-in-war.html http://tomee.apache.org/tomee-webapp.html 1.2 在tomcat上设置activemq http://tomee.apache.org/jms-resources-and...

机器看世界 2037

《Linux运维总结:etcd 3.5.15集群数据备份与恢复》

《Linux运维总结:etcd 3.5.15集群数据备份与恢复》

东城绝神 1080

ORB-SLAM3编程实践指南

它基于特征点的立体视觉和视觉惯性里程计技术,能够在没有先验知识的情况下,从单目、双目或RGB-D摄像头的输入中实时构建稠密三维地图,并实现相机的定位。通过正确配置环境、准备数据集和运行ORB-SLAM3,您可以实现高效的视觉SLAM系统,并获取相机在三维空间中的位姿。其中,[path_to_vocabulary]是ORB-SLAM3的词汇文件路径,[path_to_settings]是相机参数配置文件路径,[path_to_sequence]是输入图像的路径。运行ORB-SLAM3。

ByteNinja的博客 552

ActiveMQ 嵌入Tomcat

ActiveMQ 嵌入Tomcat 在一些项目中,单独开启一个ActiveMQ,对于项目实施来说有时略显繁琐。所以我们将ActiveMQ内嵌到Tomcat,Tomcat启动同时就顺带启动了ActiveMQ。由此我们需要掌握三个个重要的知识点 ActiveMQ中的BrokerService 自启动Servlet配置 使用jconsole了...

weixin_33694172的博客 290

2021年全网最细 VirtualBox 虚拟机安装 Ubuntu 20.04.2.0 LTS及Ubuntu的相关配置

目录一、VirtualBox 虚拟机的安装1. VirtualBox 的下载和安装2. 设置 VirtualBox 存储文件夹3. 在 VirtualBox 创建虚拟机二、Linux 操作系统(Ubuntu)的安装1. Linux 操作系统(Ubuntu)的下载2. 安装 Ubuntu3. 启动 Ubuntu三、配置 Ubuntu1. 设置终端2. 设置共享剪贴板3. 设置共享文件夹 一、VirtualBox 虚拟机的安装 VirtualBox 是由德国 Innotek 公司开发,由 Sun Microsy

XAMO Lab|代码、调试与复盘笔记 2万+

Activemq控制台的独立部署

Apache Activemq是一个高性能的开源消息队列。在启动它的时候,会自动启动一个自带的Web控制台,通过控制台可以查看当前Activemq服务器的情况,包括队列、主题、连接、订阅者等。这个控制台是通过嵌入式的Jetty容器启动的。 不过有时候我们可能需要独立部署Web控制台,比如在Tomcat中通过插件形式启动Activemq,此时无法通过嵌入Jetty容器的方式启动Web控制台(因为To...

dbqb007的专栏 474

Python 爬虫实战:爬取电商平台商品信息(价格 / 销量 / 评价)

摘要:本文详细介绍基于Python的电商商品信息爬取技术方案,以京东商品详情页为例,对比分析静态(BeautifulSoup)和动态(Selenium)两种爬取方式的实现逻辑。静态爬取适合获取基础信息,而动态爬取可解决JS渲染数据的获取问题。文章包含完整的代码实现、反爬规避策略及数据存储方案,涵盖商品名称、价格、销量、评价等核心数据提取。同时强调爬虫的合规使用,提供扩展方向建议,为电商数据采集提供实用技术参考。

2503_91057718的博客 2025

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ActiveMQ专题6 ——ActiveMQ的Broker

是什么? 相当于一个内嵌式ActiveMQ服务器实例。其实就是实现了用代码的形式启动ActiveMQ将MQ嵌入到Java代码中,以便随时用随时启动,在用的时候再去启动这样能节省了资源,也保证了可用性。 用ActiveMQ Broker作为独立的消息服务器来构建Java应用。ActiveMQ也支持在vm中通信基于嵌入的broker,能够无缝的集成其他java应用。 换言之,类似SpringBoot内嵌了一个Tomcat服务器。 怎么用? POM依赖如下: <!-- https://mvnreposito

xiaozhegaa的博客 635

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Tomcat Spring ActiveMQ MySQL JMX Integration

You are here: Documentation » Integrating TransactionsEssentials » Tomcat Spring ActiveMQ MySQL JMX Integration Tomcat Spring ActiveMQ MySQL JMX Integration It is possible to fully int

Jackia的专栏 1407

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

spring集成activemq的时候Tomcat无法启动

之前一个完好的项目,突然奇怪Tomcat启动报错,这个错百度了半天都没有找出问题,坚信记住的代码的是没有问题, 但是百思不得其解,就想最近没写什么代码就研究activeMq,然后把所有涉及到的代码一行行都删除,还原了,maven仓库也删除了,重新下载,但是这个错还是没有得到解决: Caused by: org.springframework.beans.factory.BeanCreationE...

qq_21124159的博客 958

ActiveMQ视频课程

出处:http://www.tuicool.com/articles/mEzqQzR 本人打算利用业余时间录制一套ActiveMQ的视频,如果有对ActiveMQ感兴趣的童鞋,可以加入技术讨论群346336999,一起来学习研究;视频课程提纲如下:一、基础篇第一讲:ActiveMQ的介绍与安装(视频录制完成)介绍什么是ActiveMQ,为什么需要它,在什么场景下使用...

weixin_33682719的博客 105

使用Atomikos处理ActiveMQ在Spring环境的XA事务

ActiveMQ完全遵循jms规范,而jms是支持事务的,即要么全部成功,要么全部失败。很多时间,我们的JMS操作需要和数据库操作的事务一致,即要么jms和数据库操作都成功,要么jms和数据库操作都失败,这就是分布式事务(xa事务, 也就是所谓的两段式提交事务,在java中的编程接口为JTA)的用武之地。完美实现j2ee规范的web server是提供对JTA的实现的,但是tomcat,jet...

xiaomin1991222的专栏 194

ActiveMQ集成到Spring

【http://wentao365.iteye.com/blog/1560934】 spring配置文件applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springfram...

weixin_30363817的博客 94

activeMQ+spring+tomcat简单配置

activeMQ与spring集成,将activeMQ的配置写到applicationContext.xml中,注意头引用要添加:xmlns:amq="http://activemq.apache.org/schema/core" xsi:schemaLocation="http://activemq.apache.org/schema/core    http://activemq.apach

a_b_a_b_a_b_a_b的专栏 3119

ActiveMQ使用与部署

1 JMS与MQ  1.1 JMS JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,中文称Java消息服务。JMS是一种与厂商无关的 API,用来访问消息收发系统消息;就像JDBC(Java Database Connec

阿智的专栏 5959
上一篇: Java面试题大全(流行的框架部分)
下一篇: Java 8 中的 Streams API 详解
普通网友
博客等级 码龄8年 55粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值