`
yaozhiqiang109
  • 浏览: 119500 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jms Spring+ActiveMQ 5.4.2

阅读更多

 

 

Java Message Service(JMS)是 SUN 提出的旨在统一各种 MOM 系统接口的规范,它包含点对点(Point to Point,PTP)和发布/订阅(Publish/Subscribe,pub/sub)两种消息模型,提供可靠消息传输、事务和消息过滤等机制。 

 

JMS 支持两种截然不同的消息传送模型:PTP(即点对点模型)和Pub/Sub(即发布/订阅模型),分别称作:PTP Domain 和Pub/Sub Domain.

 

PTP(使用Queue 即队列目标)     消息从一个生产者传送至一个消费者.在此传送模型中,目标是一个队列。

 

每条消息只能发送至、并由一个消费者成功使用。如果没有已经向队列目标注册的消费者,队列将保留它收到的消息,并在某个消费者向该队列进行注册时将消息传送给该消费者.

 

Pub/Sub(使用 Topic即主题目标)消息从一个生产者传送至任意数量的消费者。在此传送模型中,目标是一个主题。每个消息可以发送至任意数量的订阅消费者。主题目标也支持持久订阅的概念。持久订阅表示消费者已向主题目标进行注册,

但在消息传送时此消费者可以处于非活动状态。当此消费者再次处于活动状态时,它将接收此信息。如果没有已经向主题目标注册的消费者,主题不保留其接收到的消息,除非有非活动消费者注册了持久订阅。

 

贴下发送和接收消息的xml配置,完整的代码从附件下载

 

发送消息xml配置

 

<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"
	xmlns:amq="http://activemq.apache.org/schema/core"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://activemq.apache.org/schema/core
		http://activemq.apache.org/schema/core/activemq-core-5.4.2.xsd" default-autowire="byName">

	<!-- 连接ActiveMQ -->
	<amq:connectionFactory id="defaultFactory" brokerURL="tcp://127.0.0.1:61616"></amq:connectionFactory>

	<bean id="cachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
		<property name="targetConnectionFactory" ref="defaultFactory"></property>
		<property name="sessionCacheSize" value="10"></property>
	</bean>
		
	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
		<property name="connectionFactory" ref="cachingConnectionFactory"></property>
		<property name="explicitQosEnabled" value="true" /><!-- 使 deliveryMode, priority, timeToLive设置生效-->
		<property name="deliveryPersistent" value="false" />
	</bean>
	<!-- 队列发送消息 -->
	<bean id="ptpMessageProducer" class="com.jms.producer.PtpMessageProducer">
		<property name="jmsTemplate" ref="jmsTemplate"></property>
		<property name="queue" ref="ptpQueue"></property>
	</bean>
	<!-- 主题发送消息 -->
	<bean id="publisherMessageProducer" class="com.jms.producer.PublisherMessageProducer">
		<property name="jmsTemplate" ref="jmsTemplate"></property>
		<property name="topic" ref="topicQueue"></property>
	</bean>
	
	<amq:queue name="ptpQueue" physicalName="ptp.queue.message"></amq:queue>
	
	<amq:topic name="topicQueue" physicalName="topic.queue.message"></amq:topic>
	
</beans>

 接收消息xml配置

 

<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"
	xmlns:amq="http://activemq.apache.org/schema/core"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://activemq.apache.org/schema/core
		http://activemq.apache.org/schema/core/activemq-core-5.4.2.xsd" default-autowire="byName">
	<description>jms 配置</description>

	<amq:connectionFactory id="defaultFactory" brokerURL="tcp://127.0.0.1:61616"></amq:connectionFactory>
											 
	<bean id="cacheConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
		<property name="targetConnectionFactory" ref="defaultFactory"></property>
		<property name="sessionCacheSize" value="10"></property>
	</bean>
	   <!--异步调用消息 -->
	<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="connectionFactory" ref="cacheConnectionFactory"></property>
		<property name="destination" ref="ptpQueue"></property>
		<!--<property name="destination" ref="topicQueue"></property>-->
		<property name="messageListener" ref="jmsReciveListener"></property>
		<property name="sessionAcknowledgeModeName" value="AUTO_ACKNOWLEDGE"/>
	</bean>
	<!-- 主题 -->
	<amq:topic id="topicQueue" physicalName="topic.queue.message"></amq:topic>
	<!-- 队列 -->
	<amq:queue id="ptpQueue" physicalName="ptp.queue.message"></amq:queue>														
	
	<bean id="jmsReciveListener" class="com.jms.receive.JmsReceiveListener"></bean>
	
</beans>

 

 

 private Destination queue ;
 private final ExecutorService threadPool = Executors.newFixedThreadPool(2);

public void sendMessage(final Object obj){
		Runnable task=new Runnable(){

			@Override
			public void run() {
				try {
					jmsTemplate.send(queue,  new MessageCreator(){

						@Override
						public Message createMessage(Session session) throws JMSException {
							ObjectMessage message = session.createObjectMessage();
				                	message.setObject(obj);
								return message;
						}
						
					});
				}catch(Exception e){
					logger.error("异常",e);
				}
			}
			
		};
		threadPool.execute(task);
	}

       public Destination getQueue() {
		return queue;
	}


	public void setQueue(Destination queue) {
		this.queue = queue;
	}

 

 

1
0
分享到:
评论
1 楼 solomon 2012-03-12  
  学习了。。。

相关推荐

    Spring集成ActiveMQ配置

    Spring框架与ActiveMQ的集成,为开发者提供了一种高效、可靠的JMS消息处理机制。在企业级应用中,这种集成能够极大地提升系统的响应速度和容错能力,特别是在需要异步通信和分布式事务处理的场景下。下面,我们将...

    Spring集成ActiveMQ配置.docx

    Spring 集成 ActiveMQ 配置是指将 Spring 框架与 ActiveMQ 消息队列集成,以实现基于 JMS(Java Message Service)的消息传递。ActiveMQ 是 Apache 软件基金会的一个开源的消息队列系统,提供了高性能、可靠的消息...

    Spring集成ActiveMQ

    Spring通过其提供的模块spring-jms,简化了使用ActiveMQ时的配置和开发过程。开发者可以利用Spring框架的依赖注入、事件传播、事务管理等特性,结合ActiveMQ的异步消息处理能力,构建出高效且松耦合的分布式应用程序...

    activemq-pool-5.4.2.jar.zip

    在实际应用中,ActiveMQ Pool 可以与多种 JMS 客户端一起工作,如 Spring Framework 中的 JmsTemplate 或者 Apache Camel。通过配置这些框架来使用 ActiveMQ Pool,开发者可以充分利用连接池的优势,提高系统的响应...

    Linux安装ActiveMQ.doc

    在开发环境中,ActiveMQ通常在Windows上通过命令行或集成于Spring框架内以嵌入式方式运行。然而,对于生产环境,部署在Linux服务器上是更稳定的选择。以下是一个在Linux系统上安装ActiveMQ的详细步骤。 首先,安装...

    Spring in Action(第二版 中文高清版).part2

    10.1.3 在Spring中安装ActiveMQ 10.2 协同使用JMS和Spring 10.2.1 处理冗长失控的JMS代码 10.2.2 使用JMS模板 10.2.3 转换消息 10.2.4 将Spring的网关支持类应用于JMS 10.3 创建消息驱动POJO 10.3.1 创建...

    Spring in Action(第二版 中文高清版).part1

    10.1.3 在Spring中安装ActiveMQ 10.2 协同使用JMS和Spring 10.2.1 处理冗长失控的JMS代码 10.2.2 使用JMS模板 10.2.3 转换消息 10.2.4 将Spring的网关支持类应用于JMS 10.3 创建消息驱动POJO 10.3.1 创建...

    Spring in Action(第2版)中文版

    10.1.3在spring中安装activemq 10.2协同使用jms和spring 10.2.1处理冗长失控的jms代码 10.2.2使用jms模板 10.2.3转换消息 10.2.4将spring的网关支持类应用于jms 10.3创建消息驱动pojo 10.3.1创建消息监听器 ...

    Fuse ESB 4.3.1使用笔记

    mvn:org.apache.activemq/activemq-karaf/5.4.2-fuse-01-00/xml/features valid mvn:org.apache.servicemix/apache-servicemix/4.3.1-fuse-00-00/xml/features valid mvn:org.apache.servicemix.nmr/apache-...

Global site tag (gtag.js) - Google Analytics