当前位置:首页 > 开发 > 编程语言 > 消息中间件 > 正文

spring jms异步消息处理

发表于: 2015-03-25   作者:510888780   来源:转载   浏览:
jms
摘要: spring JMS对于异步消息处理基本上只需配置下就能进行高效的处理。其核心就是消息侦听器容器,常用的类就是DefaultMessageListenerContainer。该容器可配置侦听器的并发数量,以及配合MessageListenerAdapter使用消息驱动POJO进行消息处理。且消息驱动POJO是放入TaskExecutor中进行处理,进一步提高性能,减少侦听器的阻塞。具体配置如下:
spring JMS对于异步消息处理基本上只需配置下就能进行高效的处理。其核心就是消息侦听器容器,常用的类就是DefaultMessageListenerContainer。该容器可配置侦听器的并发数量,以及配合MessageListenerAdapter使用消息驱动POJO进行消息处理。且消息驱动POJO是放入TaskExecutor中进行处理,进一步提高性能,减少侦听器的阻塞。具体配置如下:
<?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:jms="http://www.springframework.org/schema/jms"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
						   http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd">

	<bean id="connectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
		<property name="connectionFactory">
			<bean class="org.apache.activemq.ActiveMQConnectionFactory">
				<property name="brokerURL">
					<value>failover:(tcp://192.168.6.2:61616)</value>
				</property>
			</bean>
		</property>
	</bean>
	
	<bean id="threadPoolTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
		<property name="corePoolSize" value="5"/>
		<property name="maxPoolSize" value="20"/>
		<property name="queueCapacity" value="1000"/>
		<property name="threadNamePrefix" value="jmsTaskExecutor-"/>
		<property name="allowCoreThreadTimeOut" value="true"></property>
	</bean>
	
	<bean id ="testMessageListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
		<constructor-arg>
			<bean class="com.test.jms.TestMessageListener"/>
		</constructor-arg>
	</bean>

	<jms:listener-container concurrency="5-20" task-executor="threadPoolTaskExecutor" >
		<jms:listener destination="testqueue" ref="testMessageListener"/>
	</jms:listener-container>
	
	
	<bean id="jmsDestination" class="org.apache.activemq.command.ActiveMQQueue">
		<constructor-arg index="0" value="testqueue"></constructor-arg>
	</bean>
	
	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
		<property name="connectionFactory" ref="connectionFactory"></property>
		<property name="defaultDestination" ref="jmsDestination"></property>
	</bean>
	
</beans>

而开发人员只要实现com.test.jms.TestMessageListener即可,且TestMessageListener可以是一个POJO(不过方法名参照MessageListener接口)。代码如下:
public class TestMessageListener {
	public void handleMessage(String message){
		System.out.println("text message:"+message);
	}
	
	public void handleMessage(Object message){
		System.out.println("object message:"+message+","+Thread.currentThread().getName());
	}
}

spring jms异步消息处理

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在分布式企业级应用程序中,异步消息机制用于有效地协调各个部分的工作。   J2EE为我们提供了JMS
本文主要参考Java Message Service(2nd)by Marc Ricbard。 在Spring框架中使用JMS传递消息有两种
异步处理通信是面向服务架构(SOA)的重要部分,因为企业中的许多系统通信,尤其是跟外部系统通信本
  异步进程通信是面向服务架构(SOA)一个重要的组成部分,因为企业里很多系统通信,特别是与外部组
异步处理通信是面向服务架构(SOA)的重要部分,因为企业中的许多系统通信,尤其是跟外部系统通信本
转载自:http://blog.csdn.net/moonsheep_liu/article/details/6684948 本文主要参考Java Message S
本文主要参考Java Message Service(2nd)by Marc Ricbard。 在Spring框架中使用JMS传递消息有两种
异步进程通信是面向服务架构(SOA)一个重要的组成部分,因为企业里很多系统通信,特别是与外部组织间
快速了解使用 Spring JMS 框架和 IBM WebSphere MQ 5.3 进行 JMS 消息处理的基础知识。 <!--STAR
Spring JMS 把企业消息处理变得轻而易举 Naveen Balani ( naveenb@webifysolutions.com), 技术架构
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号