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());
}
}
分享到:
相关推荐
tomcat spring jms 异步消息传递入门实例
Spring JMS使异步消息变得简单.docSpring JMS使异步消息变得简单.doc
spring jms tomcat 异步消息传递入门实例
JMS(使用消息中介:ActiveMQ) ...JmsTemplate是Spring消除冗长和重复JMS代码的解决方案。JmsTemplate可以创建连接,获取会话,以及发送和接收消息。http://blog.csdn.net/facepp/archive/2008/11/26/3374151.aspx
使用Spring JMS轻松实现异步消息传递.docx使用Spring JMS轻松实现异步消息传递.docx
使用Spring JMS轻松实现异步消息传递.pdf使用Spring JMS轻松实现异步消息传递.pdf
该项目提供了一些使用Spring JMS进行异步和同步消息使用的示例。 异步消费 所有异步消息使用的示例都使用Spring 进行消息使用。 Spring JMS支持三种类型的消息侦听器,包括: [MessageListenerAdapter]( 异步...
北京火龙果软件工程技术中心异步进程通信是面向...它提供的模板机制隐藏了典型的JMS实现的细节,这样开发人员可以集中精力放在处理消息的实际工作中,而不用担心如何去创建,访问或清除JMS资源。本文将对SpringJMSAP
weblogi 整合 服务器 jms 异步消息 spring 包含weblogic的安装与配置 和在weblogic中配置jms。并有spring和jms的一个测试用例
进行异步和同步消息消费的示例。 异步消费 所有异步消息消费示例都使用 Spring 进行消息消费。 Spring JMS 支持三种类型的消息侦听器,包括: [消息监听适配器]( 这三种类型的消息侦听器都使用 async 目录中的示例...
JMS即Java消息服务应用程序接口,是一个Java平台关于面向消息中间件的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数面向消息中间件提供商...
本章我将通过spring jms和activemq实现单Web项目服务器间异步访问和多Web项目服务器间异步访问。 一. 简介 1. 什么是Apache ActiveMq Apache ActiveMq是最流行和最强大的开源消息和集成服务器。同时Apache ActiveMq...
JMS与Spring之二(用message listener container异步收发消息)
JMS 异步传输与Spring结合实例,文件传输结合spring jms
NULL 博文链接:https://ihenu.iteye.com/blog/2270078
基于Spring+JMS+ActiveMQ+Tomcat,做一个Spring4.1.0和ActiveMQ5.11.1整合实例,实现了Point-To-Point的异步队列消息和PUB/SUB(发布/订阅)模型,简单实例,不包含任何业务。
该项目提供了一些使用Spring JMS进行异步和同步消息使用的示例。 异步消费 所有异步消息使用的示例都使用Spring 进行消息使用。 Spring JMS支持三种类型的消息侦听器,包括: [MessageListenerAdapter]( 异步...
基于SPring+MQ6.0实现JMS异步通讯,
在业务逻辑的异步处理,系统解耦,分布式通信以及控制高并发的场景下,消息队列有着广泛的应用。本项目基于Spring的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ添加和读取消息的功能。并...