Spring集成ActiveMQ配置 --转
转自:http://suhuanzheng7784877.iteye.com/blog/969865
- 集成环境
Spring采用2.5.6版本,ActiveMQ使用的是5.4.2,从apache站点可以下载。本文是将Spring集成ActiveMQ来发送和接收JMS消息。
- 集成步骤
将下载的ActiveMQ解压缩后文件夹如下
activemq-all-5.4.2.jar是activemq的所有的类jar包。lib下面是模块分解后的jar包。将lib下面的
- /lib/activation-1.1.jar
- /lib/activemq-camel-5.4.2.jar
- /lib/activemq-console-5.4.2.jar
- /lib/activemq-core-5.4.2.jar
- /lib/activemq-jaas-5.4.2.jar
- /lib/activemq-pool-5.4.2.jar
- /lib/activemq-protobuf-1.1.jar
- /lib/activemq-spring-5.4.2.jar
- /lib/activemq-web-5.4.2.jar
文件全部拷贝到项目中。
而Spring项目所需要的jar包如下
- /lib/spring-beans-2.5.6.jar
- /lib/spring-context-2.5.6.jar
- /lib/spring-context-support-2.5.6.jar
- /lib/spring-core-2.5.6.jar
- /lib/spring-jms-2.5.6.jar
- /lib/spring-tx.jar
当然还需要一些其他的jar文件
- /lib/geronimo-j2ee-management_1.1_spec-1.0.1.jar
- /lib/jms-1.1.jar
- /lib/log4j-1.2.15.jar
- /lib/slf4j-api-1.6.1.jar
- /lib/slf4j-nop-1.6.1.jar
项目的依赖jar都准备好后就可以写配置文件了。
Spring配置文件
配置文件内容如下
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-2.5.xsd"
- default-autowire="byName">
- <!-- 配置connectionFactory -->
- <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
- destroy-method="stop">
- <property name="connectionFactory">
- <bean class="org.apache.activemq.ActiveMQConnectionFactory">
- <property name="brokerURL">
- <value>tcp://127.0.0.1:61616</value>
- </property>
- </bean>
- </property>
- <property name="maxConnections" value="100"></property>
- </bean>
- <!-- Spring JMS Template -->
- <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
- <property name="connectionFactory">
- <ref local="jmsFactory" />
- </property>
- <property name="defaultDestinationName" value="subject" />
- <!-- 区别它采用的模式为false是p2p为true是订阅 -->
- <property name="pubSubDomain" value="true" />
- </bean>
- <!-- 发送消息的目的地(一个队列) -->
- <bean id="destination" class="org.apache.activemq.command.ActiveMQTopic">
- <!-- 设置消息队列的名字 -->
- <constructor-arg index="0" value="subject" />
- </bean>
- <!-- 消息监听 -->
- <bean id="listenerContainer"
- class="org.springframework.jms.listener.DefaultMessageListenerContainer">
- <property name="concurrentConsumers" value="10" />
- <property name="connectionFactory" ref="jmsFactory" />
- <property name="destinationName" value="subject" />
- <property name="messageListener" ref="messageReceiver" />
- <property name="pubSubNoLocal" value="false"></property>
- </bean>
- <bean id="messageReceiver"
- class="com.liuyan.jms.consumer.ProxyJMSConsumer">
- <property name="jmsTemplate" ref="jmsTemplate"></property>
- </bean>
- </beans>
编写代码
消息发送者:这里面消息生产者并没有在Spring配置文件中进行配置,这里仅仅使用了Spring中的JMS模板和消息目的而已。
- public class HelloSender {
- /**
- * @param args
- */
- public static void main(String[] args) {
- ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
- new String[] { "classpath:/spring/applicationContext-jms.xml" });
- JmsTemplate template = (JmsTemplate) applicationContext
- .getBean("jmsTemplate");
- Destination destination = (Destination) applicationContext
- .getBean("destination");
- template.send(destination, new MessageCreator() {
- public Message createMessage(Session session) throws JMSException {
- return session
- .createTextMessage("发送消息:Hello ActiveMQ Text Message!");
- }
- });
- System.out.println("成功发送了一条JMS消息");
- }
- }
消息接收
- /**
- * JMS消费者
- *
- *
- * <p>
- * 消息题的内容定义
- * <p>
- * 消息对象 接收消息对象后: 接收到的消息体* <p>
- */
- public class ProxyJMSConsumer {
- public ProxyJMSConsumer() {
- }
- private JmsTemplate jmsTemplate;
- public JmsTemplate getJmsTemplate() {
- return jmsTemplate;
- }
- public void setJmsTemplate(JmsTemplate jmsTemplate) {
- this.jmsTemplate = jmsTemplate;
- }
- /**
- * 监听到消息目的有消息后自动调用onMessage(Message message)方法
- */
- public void recive() {
- ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
- new String[] { "classpath:/spring/applicationContext-jms.xml" });
- Destination destination = (Destination) applicationContext
- .getBean("destination");
- while (true) {
- try {
- TextMessage txtmsg = (TextMessage) jmsTemplate
- .receive(destination);
- if (null != txtmsg) {
- System.out.println("[DB Proxy] " + txtmsg);
- System.out.println("[DB Proxy] 收到消息内容为: "
- + txtmsg.getText());
- } else
- break;
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
这里边也是并不是直接使用Spring来初始化建立消息消费者实例,而是在此消费者注入了JMS模板而已。
写一个main入口,初始化消息消费者
- public class JMSTest {
- /**
- * @param args
- */
- public static void main(String[] args) {
- ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
- new String[] { "classpath:/spring/applicationContext-jms.xml" });
- ProxyJMSConsumer proxyJMSConsumer = (ProxyJMSConsumer) applicationContext
- .getBean("messageReceiver");
- System.out.println("初始化消息消费者");
- }
- }
使用的时候先开启ActiveMQ服务,默认是占用了61616端口。之后开启测试程序,开启2个消息消费者监听。之后再运行消息生产者的代码后,消息就可以被消息消费者接收到了。
Spring集成ActiveMQ配置 --转的更多相关文章
- 从零开始学 Java - Spring 集成 ActiveMQ 配置(一)
你家小区下面有没有快递柜 近两年来,我们收取快递的方式好像变了,变得我们其实并不需要见到快递小哥也能拿到自己的快递了.对,我说的就是类似快递柜.菜鸟驿站这类的代收点的出现,把我们原来快递小哥必须拿着快 ...
- 从零开始学 Java - Spring 集成 ActiveMQ 配置(二)
从上一篇开始说起 上一篇从零开始学 Java - Spring 集成 ActiveMQ 配置(一)文章中讲了我关于消息队列的思考过程,现在这一篇会讲到 ActivMQ 与 Spring 框架的整合配置 ...
- spring集成mybatis配置多个数据源,通过aop自动切换
spring集成mybatis,配置多个数据源并自动切换. spring-mybatis.xml如下: <?xml version="1.0" encoding=" ...
- spring 集成mongo配置
spring继承Mongo使用的是spring-data. 如果需要加入两个mongo与spring集成的包,spring-data-commons-1.7.0.RELEASE.jar,spring- ...
- spring集成ActiveMQ居然要依赖这么多包
做spring和ActiveMQ的集成,作maven依赖的时候有感(以前都不在乎,现在不一样了........省略) <!-- https://mvnrepository.com/artifac ...
- SPRING 集成 activemq 的 topic 模式
概要 activemq 支持两种模式: 1.队列模式 2. 发布订阅者模式,topic有一个主题可以有多个订阅者.这种情况可以将一个消息,分发到多个消费者. 比如我有这样一个案例,用户需要同步,而且需 ...
- 160530、memcached集群(spring集成的配置)
第一步:在linux机或windows机上安装memcached服务端(server) linux中安装memcached:centos中命令 yum -y install memcached 如果没 ...
- spring集成activeMQ
1.安装activehttp://activemq.apache.org/activemq-5140-release.html2.运行D:\apache-activemq-5.14.0\bin\win ...
- spring 集成 log4j 配置
在web.xml中增加如下代码: <context-param> <param-name>log4jConfigLocation</param-name> < ...
随机推荐
- Linux下python版本的升级步骤
1.先下载,你要升级的python版本(我升级的是python3.3.0) 可使用系统自带下载工具wget下载: wget http://www.python.org/ftp/python/3.3.0 ...
- Luogu P3178 树上操作(树链剖分+线段树)
题意 见原题 题解 重链剖分模板题 #include <cstdio> #include <algorithm> using std::swap; typedef long l ...
- python strip() 函数和 split() 函数的详解及实例
strip是删除的意思:split则是分割的意思.strip可以删除字符串的某些字符,split则是根据规定的字符将字符串进行分割. 1.Python strip()函数 介绍 函数原型 声明:s为字 ...
- Codeforces 500 E. New Year Domino
\(>Codeforces \space 500 E. New Year Domino<\) 题目大意 : 数轴上有序排列着 \(n\) 块多米诺骨牌, 第 \(i\) 块骨牌坐标为 \( ...
- 【后缀自动机】hdu6194 string string string
题意:给你一个字符串和一个正整数K,让你输出恰好出现K次的子串的数量. 对后缀链接树进行dp预处理后,SAM每个点的endpos大小就是该点结尾的子串出现的次数,maxlen-minlen+1就是子串 ...
- 【判断解是否可行-二分】POJ1064-Cable master
http://poj.org/problem?id=1064 [题目大意] 给出几条绳子的长度,问如果要切出k条长度相等的绳子,这k条绳子最常多长? [思路] 二分.把下界设为0,上界设为所有绳子长度 ...
- 用GDB 调试Java程序
陈皓 http://blog.csdn.net/haoel 背景 想要使用GDB调试程序,就需要用GNU的编译器编译程序.如:用GCC编译的C/C++的程序,才能用GDB调试.对于Java程序也是 ...
- winform WebBrowser如何修改使用默认的IE浏览器版本
在搜了一些相关资料原来WebBrowser使用的是IE的兼容模式进行浏览(IE7模式). 建议:先添加注册表中,然后使用注册表编辑器导出功能,产生reg注册文件:方便日后使用. Winform We ...
- 黑莓10开发101:Native平台
为黑莓10开发游戏或应用程序有多种方法.这是件好事,不过如果你不是在黑莓平台下进行开发,或者你仅熟悉基于旧的Java的开发平台,也许你会感到无所适从.你将作何选择?从哪里着手? 促成你做出决定的因素有 ...
- 关于muse-ui 图片不显示的办法。
直接使用框架提供的例子不能显示图片.需要npm安装 才可以直接使用. npm install --save material-design-icons