- 浏览: 186002 次
- 性别:
- 来自: 成都
最新评论
-
ls_autoction:
非常谢谢!:oops:
webservice注解 -
ganbo:
helloword
hibernate之openSession和getCurrentSession -
ganbo:
...
hibernate之openSession和getCurrentSession -
zizhengwang:
文章介绍的很全面,帮助我解决了问题,谢谢
hibernate之级联cascade和关系维持inverse -
yccn1984:
/** * 子类进行注入 * ...
DAO和Service公共抽象接口实现
ActiveMQ 是开源的JMS实现,Geronimo应用服务器就是使用的ActiveMQ提供JMS服务。ActiveMQ5.0相比以前版本提供了一些非常有用的新功能: 鉴于目前关于ActiveMQ5.0的文章比较少,故准备写一系列ActiveMQ的使用方面的文章。本篇先从安装开始。 ActiveMQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试ActiveMQ是否成功启动 ActiveMQ5.0版本默认启动时,启动了内置的jetty服务器,提供一个demo应用和用于监控ActiveMQ的admin应用。 admin:http://127.0.0.1:8161/admin/ demo:http://127.0.0.1:8161/demo/ 点击demo应用中的“ Market data publisher ”,就会发一些测试的消息。转到admin页面的topics menu下面(queue和topic的区别见 http://andyao.iteye.com/blog/153173 ),可以看到消息在增长。 ActiveMQ5.0的配置文件在/path/to/activemq/conf目录下面。主要配置文件为activemq.xml
上一篇http://www.iteye.com/topic/15317介绍了ActiveMQ5.0的安装,这一篇将介绍的配置。ActiveMQ包含了很多features(详见http://activemq.apache.org/features.html ), ActiveMQ默认使用的是XML格式配置,从4.0版本开始用MBean的方式实现XML配置,配置文件在${activemq.home}/conf目录下,文件名为activemq.xml。最新的默认配置见 关于XML配置中元素的具体信息可以参考http://activemq.apache.org/xbean-xml-reference-50.html 下面介绍本篇配置使用的一些重要元素。 ActiveMQ支持3中不同的分发策略(避免翻译了以后误解,这里用原文): ActiveMQ支持6种恢复策略,可以自行选择使用不同的策略 http://activemq.apache.org/persistence 讲解了关于persistence的信息。ActiveMQ5.0使用AMQ Message Store 持久化消息,这种方式提供了很好的性能(The AMQ Message Store is an embeddable transactional message storage solution that is extremely fast and reliable.) 默认使用该存储方式即可,如果想使用JDBC来存储,可以查找文档配置。 本篇文章只提供了基本配置信息。如果需要更多的文章,可以查看ActiveMQ的文档。 讲了安装和简单的配置.简介
安装
启动
测试
监控
配置
简介
不同的需求,不同的环境,需要不同的features,当然需要不同的配置。在这里我只写了最基本的配置,算是抛砖了,希望引出更多关于ActiveMQ的高级配置。
假设已经正确安装ActiveMQ5.0,同时及其IP地址为192.168.1.148,具体使用时可以改为自己的IP。下面讲解的配置实现的features如下:
配置
http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/release/conf/activemq.xml 。下面为本篇文章使用的配置,及重要部分的解释。
注释
DispathPolicy
SubscriptionRecoveryPolicy
PersistenceAdapter
Summary
本篇将通过一个实例介绍使用spring发送,消费topic, queue类型消息的方法. 不懂topic和queue的google 之.
TOPIC和QUEUE分别代表一个topic和一个queue消息通道.
- TopicMessageProducer向topic发送消息, TopicConsumerA和TopicConsumerB则从topic消费消息.
- QueueMessageProducer向Queue发送消息, QueueConsumer从Queue中消费消息
Spring整合JMS
就像对orm, web的支持一样, spring同样支持jms, 为整合jms到已有的项目提供了很多便利的方法. 本篇主要讲实战, 是所以先从配置开始, spring配置jms基本上需要8个部分.
- ConnectionFactory. 和jms服务器的连接, 可以是外部的jms server, 也可以使用embedded ActiveMQ Broker.
- Destination. 有topic和queue两种方式.
- JmsTemplate. spring提供的jms模板.
- MessageConverter. 消息转换器.
- MessageProducer. 消息生产者.
- MessageConsumer. 消息消费者.
- MessageListener. 消息监听器
- MessageListenerContainer. 消息监听容器
下面以实例的方式介绍上面8个部分.
1. ConnectionFactory
brokerURL是指要连接的activeMQ server的地址, activeMQ提供了多种brokerURL, 集体可参见文档.一般我们使用嵌套的ActiveMQ server. 配置如下, 这个配置使用消息的存储机制, 服务器重启也不会丢失消息.
- <!-- embedded ActiveMQ Broker -->
- <amq:broker useJmx="false" persistent="true">
- <amq:persistenceAdapter>
- <amq:amqPersistenceAdapter directory="d:/amq"/>
- </amq:persistenceAdapter>
- <amq:transportConnectors>
- <amq:transportConnector uri="tcp://localhost:61616" />
- <amq:transportConnector uri="vm://localhost:0" />
- </amq:transportConnectors>
- </amq:broker>
2. Destination
在实例中我们使用了两种destination
- <!-- ActiveMQ destinations -->
- <!-- 使用topic方式-->
- <amq:topic name="TOPIC" physicalName="JMS-TEST-TOPIC" />
- <!-- 使用Queue方式-->
- <amq:queue name="QUEUE" physicalName="JMS-TEST-QUEUE" />
3. JmsTemplate
- <!-- Spring JmsTemplate config -->
- <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
- <property name="connectionFactory">
- <!-- lets wrap in a pool to avoid creating a connection per send -->
- <bean class="org.springframework.jms.connection.SingleConnectionFactory">
- <property name="targetConnectionFactory" ref="jmsConnectionFactory" />
- </bean>
- </property>
- <!-- custom MessageConverter -->
- <property name="messageConverter" ref="defaultMessageConverter" />
- </bean>
4. MessageConverter
MessageConverter实现的是org.springframework.jms.support.converter.MessageConverter接口, 提供消息的转换功能. DefaultMessageConverter的实现见附件.
5. MessageProducer
实例拥有两个消息生产者, 消息生产者都是POJO, 实现见附件.
- <!-- POJO which send Message uses Spring JmsTemplate -->
- <bean id="topicMessageProducer" class="com.andyao.activemq.TopicMessageProducer">
- <property name="template" ref="jmsTemplate" />
- <property name="destination" ref="TOPIC" />
- </bean>
- <bean id="queueMessageProducer" class="com.andyao.activemq.QueuMessageProducer">
- <property name="template" ref="jmsTemplate" />
- <property name="destination" ref="QUEUE" />
- </bean>
6. MessageConsumer
TOPIC通道有两个消息消费者, QUEUE有一个消息消费者
- <!-- Message Driven POJO (MDP) -->
- <!-- consumer1 for topic a -->
- <bean id="topicConsumerA" class="com.andyao.activemq.TopicConsumerA" />
- <!-- consumer2 for topic a -->
- <bean id="topicConsumerB" class="com.andyao.activemq.TopicConsumerB" />
- <!-- consumer for queue -->
- <bean id="queueConsumer" class="com.andyao.activemq.QueueConsumer" />
7. MessageListener
每一个消息消费者都对应一个MessageListener
- <bean id="topicListenerA" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
- <constructor-arg ref="topicConsumerA" />
- <!-- may be other method -->
- <property name="defaultListenerMethod" value="receive" />
- <!-- custom MessageConverter define -->
- <property name="messageConverter" ref="defaultMessageConverter" />
- </bean>
- <bean id="topicListenerB" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
- <constructor-arg ref="topicConsumerB" />
- <!-- may be other method -->
- <property name="defaultListenerMethod" value="receive" />
- <!-- custom MessageConverter define -->
- <property name="messageConverter" ref="defaultMessageConverter" />
- </bean>
- <bean id="queueListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
- <constructor-arg ref="queueConsumer" />
- <!-- may be other method -->
- <property name="defaultListenerMethod" value="receive" />
- <!-- custom MessageConverter define -->
- <property name="messageConverter" ref="defaultMessageConverter" />
- </bean>
8. MessageListenerContainer
有几个MessageListener既有几个MessageListenerContainer
- <bean id="topicListenerContainerA" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
- <property name="connectionFactory" ref="jmsConnectionFactory" />
- <property name="destination" ref="TOPIC" />
- <property name="messageListener" ref="topicListenerA" />
- </bean>
- <bean id="topicListenerContainerB" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
- <property name="connectionFactory" ref="jmsConnectionFactory" />
- <property name="destination" ref="TOPIC" />
- <property name="messageListener" ref="topicListenerB" />
- </bean>
- <bean id="queueListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
- <property name="connectionFactory" ref="jmsConnectionFactory" />
- <property name="destination" ref="QUEUE" />
- <property name="messageListener" ref="queueListener" />
- </bean>
Summary
写spring配置文件的时候, 要把MessageProducer, MessageConsumer,MessageListener,MessageListenerContainer几个地方弄清楚:
- 可以有一个或者多个消息生产者向同一个destination发送消息.
- queue类型的只能有一个消息消费者.
- topic类型的可以有多个消息消费者.
- 每个消费者对应一个MessageListener和一个MessageListenerContainer.
发表评论
-
spring-mvc属性编辑器绑定和传文件
2011-10-27 09:58 1322@InitBinder public void i ... -
tomcat集群 部署rest服务
2011-10-23 13:24 4932一、软件准备 Apache 2.2 : http ... -
通过cxf提供rest服务
2011-10-23 13:10 4557rest接口 import javax.ws.rs.D ... -
hibernate+memcached一种orm+cached解决方案
2011-10-22 14:04 26851、首先配置hibernate,使之支持二级缓存: @ ... -
spring +jotm分布式数据库
2011-10-20 22:28 5963首先引入jotm和xpool包,通过maven引入 & ... -
spring通过jndi创建数据源
2011-10-20 19:43 1196<bean id="jndiDS&quo ... -
spring、hibernate源码分析二
2011-10-19 09:10 2640从上篇文章分析得出,hibernate初始化时,flushBe ... -
spring、hibernate源码分析一
2011-10-19 09:11 1998<bean id="dataSource ... -
hibernate之ManyToMany
2011-10-18 11:43 1135一个老师有多个学生,同样一个学生有多个老师,配置如下: ... -
hibernate之级联cascade和关系维持inverse
2011-10-18 11:11 21762hibernate的关联关系,重点在理解级联cascade和i ... -
持久层开发,基于lucene,hibernate-search
2011-10-17 15:19 17741、pojo类编写 import javax.pers ... -
spring和hibernate集成,基于注解的配置
2011-10-17 15:17 1066<?xml version="1.0&q ...
相关推荐
详细内容: SpringJMS整合ActiveMQ.doc 详细说明文档 apache-activemq-5.8.0-bin.zip ActiveMQ安装包 JMSTest.rar MyEclipse8.5下web工程
activeMQ和Spring集成的 SpringJMS示例代码,适合新手,老鸟勿喷请绕道。ps:为什么传个资源一定要设置下载分呢
Spring对JMS提供了很好的支持,可以通过JmsTemplate来方便地实现消息服务。本例通过activeMQ服务器模拟了消息的发送与接收。需要注意的是,activeMQ的运行依赖jdk的环境,而且对jdk的版本也有要求,我用的是jdk1.6+...
本人开发的spring jms项目,已经上线近一年了,这里是我项目jms配置文件,使用的是spring jms 整合weblogic jms。如果真的需要,请咨询我,并且附上我上传的这个配置文件,附近中没有带有这个文件,一律不作任何回答...
tomcat spring jms 异步消息传递入门实例
spring jms jar包
Spring JMS使异步消息变得简单.docSpring JMS使异步消息变得简单.doc
spring jms tomcat 异步消息传递入门实例
Spring JMS示例 该项目提供了一些使用Spring JMS进行异步和同步消息使用的示例。 异步消费 所有异步消息使用的示例都使用Spring 进行消息使用。 Spring JMS支持三种类型的消息侦听器,包括: ...
使用Spring JMS轻松实现异步消息传递.docx使用Spring JMS轻松实现异步消息传递.docx
使用Spring JMS轻松实现异步消息传递.pdf使用Spring JMS轻松实现异步消息传递.pdf
Java笔试题目类型Spring JMS 示例 该项目提供了一些使用 Spring JMS 进行异步和同步消息消费的示例。 异步消费 所有异步消息消费示例都使用 Spring 进行消息消费。 Spring JMS 支持三种类型的消息侦听器,包括: ...
spring_jms是基于Maven+Spring+JMS+Active入门级实例.
Java网络编程--基于Spring的JMS编程
本文内容包括:SpringJMSIBMWebSphereMQSpringJMS模板SpringJMS实现队列管理器的设置运行示例下载参考资料快速了解使用SpringJMS框架和IBMWebSphereMQ5.3进行JMS消息处理的基础知识。在Spring系列的第4期也是最后一...
spring-jms入门
基于Spring+JMS+ActiveMQ+Tomcat,我使用的版本情况如下所示:Spring 3.2.0,ActiveMQ 5.4.3,Tomcat 6.0.43。本例通过详细的说明和注释,实现消息服务的基本功能:发送与接收。Spring对JMS提供了很好的支持,可以...
在spring下配置jms。J2EE容器为weblogic8.1
Spring 和JMS 很好的结合介绍 并有实例模板
JMS(使用消息中介:ActiveMQ) ...JmsTemplate是Spring消除冗长和重复JMS代码的解决方案。JmsTemplate可以创建连接,获取会话,以及发送和接收消息。http://blog.csdn.net/facepp/archive/2008/11/26/3374151.aspx