ActiveMQ开发配置与用例
2019独角兽企业重金招聘Python工程师标准>>>
依赖的jar
maven的依赖
<dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>5.14.0</version> </dependency> <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-pool</artifactId><version>5.14.0</version> </dependency> <!--spring --> <dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>4.2.3.RELEASE</version> </dependency>
生产者的XML配置文件
<!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 --><bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"><!-- ActiveMQ服务地址 --><property name="brokerURL" value="${mq.brokerURL}" /><property name="userName" value="${mq.userName}"></property><property name="password" value="${mq.password}"></property> </bean><!-- ActiveMQ为我们提供了一个PooledConnectionFactory,通过往里面注入一个ActiveMQConnectionFactory可以用来将Connection、Session和MessageProducer池化,这样可以大大的减少我们的资源消耗。要依赖于 activemq-pool包--><bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"><property name="connectionFactory" ref="targetConnectionFactory" /><property name="maxConnections" value="${mq.pool.maxConnections}" /></bean><!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory --><bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"><!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory --><property name="targetConnectionFactory" ref="pooledConnectionFactory" /></bean><!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 --><!-- 队列模板 ,对JMS协议的实现--><bean id="activeMqJmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 --> <property name="connectionFactory" ref="connectionFactory"/> <property name="defaultDestinationName" value="${queueName}"></property></bean>
生产者的简单用例
import javax.annotation.Resource; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Session;import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import org.springframework.stereotype.Service;import longload.edu.demo.modal.Mail;@Service("producer") public class Producer {@Resourceprivate JmsTemplate jmsTemplate;/*** 发送消息* @param mail*/public void sendMessage(final Mail mail){jmsTemplate.send(new MessageCreator() {@Overridepublic Message createMessage(Session session) throws JMSException {/*** 创建一个消息,常用的有createObjectMessage与createTextMessage*/return session.createObjectMessage(mail);}});} }
消费者XML配置
在生产者的XML配置文件 的基础上增加下面内容
<!--这个是sessionAwareQueue目的地 --><bean id="sessionAwareQueue" class="org.apache.activemq.command.ActiveMQQueue"><constructor-arg><value>${queueName}</value></constructor-arg></bean><!-- 可以获取session的MessageListener,需要实现SessionAwareMessageListener类 --><bean id="consumerSessionMessageListener" class="longload.edu.demo.listener.ConsumerSessionMessageLister"></bean><bean id="sessionAwareListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"><property name="connectionFactory" ref="connectionFactory" /><!-- 监听的队列 --><property name="destination" ref="sessionAwareQueue" /><!-- 指定接收消息的消息监听--><property name="messageListener" ref="consumerSessionMessageListener" /> </bean>
如果需要使用下面来接收一个已序列化的对象(createTextMessage不需要)
ActiveMQObjectMessage msg = (ActiveMQObjectMessage) message;
需要增加一个可信任的包路径或者信任所有,需要对targetConnectionFactory增加一个trustAllPackages或者trustedPackages属性
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"><!-- ActiveMQ服务地址 --><property name="brokerURL" value="${mq.brokerURL}" /><property name="userName" value="${mq.userName}"></property><property name="password" value="${mq.password}"></property> <!-- 信任所有的包路径 --><!-- <property name="trustAllPackages" value="true" /> --><!-- 信任指定包路径的对象 --><property name="trustedPackages"><list><value>longload.edu.demo.modal</value></list></property> </bean>
消费者简单用例
package longload.edu.demo.listener;import javax.annotation.Resource; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Session;import org.apache.activemq.command.ActiveMQObjectMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.listener.SessionAwareMessageListener;import longload.edu.demo.modal.Mail;/*** @author longload* @date 2016年8月13日下午8:32:26*/ public class ConsumerSessionMessageLister implements SessionAwareMessageListener<Message>{private Logger LOGGER=LoggerFactory.getLogger(this.getClass());@Resourceprivate JmsTemplate jmsTemplate;@Overridepublic void onMessage(Message message, Session session) throws JMSException {LOGGER.info("==>receive message:" + message);ActiveMQObjectMessage msg = (ActiveMQObjectMessage) message;Mail mail = (Mail) msg.getObject();LOGGER.info("subject:"+mail.getSubject());} }
配置文件
## MQ address 链接地址 mq.brokerURL=tcp\://192.168.48.129\:61616 # 用户名和密码 mq.userName=longload mq.password=test.123 mq.pool.maxConnections=10 #queueName 队列名称,指定发送或者接收的队列 queueName=longload.mq.v1
转载于:https://my.oschina.net/longload/blog/731424
ActiveMQ开发配置与用例相关推荐
- activemq主从配置_使用ActiveMQ –具有故障转移协议的“主/从”配置
activemq主从配置 介绍 ActiveMQ代理往往是企业中消息传递基础结构的核心部分. 此消息传递基础结构的高度可用性和可伸缩性至关重要. 请阅读此链接 ,以了解有关创建经纪人网络以支持各种用例 ...
- ActiveMQ安装配置
ActiveMQ安装配置 官方网站: http://activemq.apache.org 环境: CentOS7.2 apache-activemq-5.14.1 JDK安装略 一.安装active ...
- ActiveMQ开发简明教程
资源链接 ActiveMQ入门实例 activemq-5141-release下载 入门文档(英文,官方) 图解ActiveMQ 概念 ActiveMQ特性 ActiveMQ特性详细介绍 Active ...
- Go 学习笔记(1)— Ubuntu 系统 Go 环境搭建、VS Code 配置 Go 开发环境、VS Code 远程开发配置
1. 安装说明 Ubuntu 下直接安装 Go 1.11 版本编译器时需要依赖 Go 1.4 版本.所以如果在使用 apt-get install go安装时参考以下链接安装:https://blog ...
- Clion 远程开发 配置
文章目录 1. 增加远端服务工具 2. 配置远端服务器 3. 配置编译选项 4. 设置远端开发路径 Clion作为C/C++语言友好的IDE,除了高效的代码索引 以及 基本的本地开发 能力之外还需要有 ...
- idea配置jfinal_intellij idea安装与配置(Java开发配置篇)
一.maven配置 在configure->settings的搜索框中输入maven,然后入下图所示,修改maven主目录.maven配置文件.maven本地仓库地址 二.SVN设置 在搜索框中 ...
- Netbeans6.8使用手札(NetBeans6.8中Java、php、C/C++开发配置)
声明:本手札是基于Windows XP操作系统下的配置 首先当然是在Netbeans官网上下载Netbeans6.7: 下载地址:http://zh-cn.netbeans.org/,我选择的是功能最 ...
- Script Lab 续:为 Officejs 开发配置 VSCode 环境
垫场AA:深度:从 Office 365 新图标来看微软背后的设计新理念 -------------------------------------------------- 前期01:尝试:Scri ...
- 数据库连接池的选择及其开发配置
转载自 数据库连接池的选择及其开发配置 一.数据库连接池概述 数据库连接的建立是一种耗时.性能低.代价高的操作,频繁的数据库连接的建立和关闭极大的影响了系统的性能.数据库连接池是系统初始化过程中创建 ...
最新文章
- 辩证看待 iostat
- 每天一命令 git checkout
- CV08-数据预处理与数据增强
- 阿米洛键盘取消win_【机械键盘】2020年双十二那些值得购买的机械键盘推荐
- Mysql(1)——服务端与客户端建立连接
- chrome v46渲染partial html内容的一个问题
- 脚本自动定时打开链接_自动化构建系统
- Ubuntu常用软件安装(小集合)
- 【Flink】Flink检查点时间太小导致Exceeded checkpoint tolerable failure threshould
- 软件测试三种错误的是,软件测试中的三种排错方法(知识篇)
- XILINX FPGA电源设计指南
- AutoCAD.net 自定义窗体及面板与CAD交互时的焦点切换问题(C#)
- golang微信小程序爬虫教程offer秀
- xy苹果助手安装_xy苹果助手
- 【AWVS】python调AWVS接口 新建扫描并导出扫描报告 [自定义扫描报告](三)
- DataTables warning:table id = TableDate: Cannot reinitialise DataTable的解决办法
- 爬取古诗文网的推荐古诗
- Spring全家桶(四)Bean的生命周期
- CreateFont(MFC)字体设计
- DocuCentre SC2020 打印机连接
热门文章
- python图层_Python叠加矩形框图层2种方法及效果
- python基础入门笔记_Python基础入门笔记:函数
- 删除后别人的微信号变成wxid_安卓版微信更新了,微信号终于可以修改了?
- excel VB代码
- mybatis 里面concat()函数t模糊查询
- python模型预测_《Python机器学习——预测分析核心算法》——1.5 构建预测模型的流程...
- window安装python3后怎么用pyspark_pyspark:连接spark集群Windows环境搭建
- qgis 图片_QGIS教程09QGIS中如何制作萤火虫地图?
- 组件服务-计算机-我的电脑出现红色向下箭头的解决办法
- ggplot2作图4