Spring对JMS进行封装,使用起来更简单。以下给出范例代码供参考!
在Spring中可以用JmsTemplate对象来发送、接收消息。
1、连接工厂
<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="failover://(tcp://127.0.0.1:61616?tcpNoDelay=true)" /> <!-- 重连 --> <property name="useAsyncSend" value="true" /> <!-- 异步发送 --> <property name="copyMessageOnSend" value="false"/> </bean> <bean id="jmsCachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <property name="targetConnectionFactory" ref="jmsConnectionFactory" /> <property name="sessionCacheSize" value="100" /> </bean>
在非web/EJB容器中使用pool时,要手动stop,spring不会为你执行destroy-method的方法。
如果使用了PooledConnectionFactory要把 apache-activemq-5.3.0\lib\optional\activemq-pool-5.3.0.jar 加到 classpath中。
2、目的地
<bean id="smsDestination" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg value="sms_queue?consumer.prefetchSize=100"/> <!-- 消费者使用预取 --> </bean>
3、JmsTemplate
<bean id="smsJmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="jmsConnectionFactory"/> <property name="defaultDestination" ref="smsDestination"/> </bean>
用JmsTemplate时不用自己提交session.commit()。
用JmsTemplate发送消息:
jmsTemplate.send(new MessageCreator() { @Override public Message createMessage(Session session) throws JMSException { MapMessage map = session.createMapMessage(); map.setString("mobile", mobile); map.setString("content", content); return map; } });
4、消息监听器
<bean id="smsMessageListener" class="com.travelsky.bravo.components.communication.sms.SmsMessageListener" />
消息监听器类源码:
消息监听器类必须实现MessageListener接口类
public class SmsMessageListener implements MessageListener { @Override public void onMessage(Message message) { try{ if(message!=null && message instanceof MapMessage){ MapMessage map = (MapMessage) message; String mobile = map.getString("mobile"); String content = map.getString("content"); send(mobile, content); } }catch(JMSException ex){ logger.error(ex); } } }
5、任务执行器
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"/>
6、消息监听器容器
<bean id="smsListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer" lazy-init="false"> <property name="connectionFactory" ref="smsConnectionFactory" /> <property name="destination" ref="smsDestination" /> <property name="messageListener" ref="smsMessageListener" /> <property name="taskExecutor" ref="taskExecutor"/> <property name="sessionTransacted" value="true"/> <!-- 应该只是在Destination为Queue的时候才使用多个MessageConsumer --> <property name="concurrentConsumers" value="1"/> <property name="maxConcurrentConsumers" value="50" /> <property name="idleTaskExecutionLimit" value="2" /> <property name="receiveTimeout" value="10000" /> <!-- 0:CACHE_NONE,1:CACHE_CONNECTION,2:CACHE_SESSION,3:CACHE_CONSUMER,4:CACHE_AUTO --> <property name="cacheLevel" value="0"/> </bean>
lazy-init参数值必须设置为false,否则监听不起作用。
相关推荐
将JMS与Spring整合,可以更加便捷地在Spring应用中使用消息队列。 本项目"jms整合spring工程"是一个已经准备就绪的Java工程,它展示了如何在Spring框架中集成JMS,以便利用消息队列进行通信。主要依赖的是Apache ...
org.springframework.jms.core 包提供了在 Spring 中使用 JMS 的核心功能。JMS 模板类提供了执行公共操作的 helper 方法,在需要更复杂应用的情况下,类把处理任务的核心委托给用户实现的回调接口。 Spring JMS 还...
在本项目中,Spring与WebLogic JMS(Java消息服务)的集成展示了如何在Spring环境中使用消息队列进行通信。 WebLogic JMS是Oracle WebLogic Server提供的消息中间件,它遵循JMS规范,用于在分布式环境中传递消息,...
1) 本工程主要演示在SPRING BOOT工程中怎样使用JMS集成IBM-MQ及TLQ两种消息中间件产品 2) 使用SPRING BOOT Conditional机制实现了两种产品按需加载,工程会根据配置文件开关动态加载 3) 实现了普通队列消息发送与...
在本文中,我们将探讨如何在Spring中使用JMS进行异步传输,以及与ActiveMQ的结合实例。 首先,我们需要配置Spring的JMS支持。在Spring 2.0及更高版本中,Spring不仅支持消息的生产,还支持消息的异步消费。配置主要...
总结起来,这个"spring_jms"实例旨在帮助初学者了解如何在Spring应用中使用JMS进行异步通信。通过结合Maven、Spring框架和ActiveMQ,我们可以构建一个高效、可靠的分布式消息系统,提升应用的性能和灵活性。通过深入...
Spring的JMS支持使得在应用中使用消息传递变得简单且灵活。通过配置`ConnectionFactory`、`JmsTemplate`和消息监听器,我们可以方便地实现消息的发送和接收,从而提高系统的可扩展性和解耦性。同时,Spring提供的...
它提供了一个简单的API,使得开发者能够方便地在应用中使用消息传递功能。本文将深入探讨Spring-JMS的基础知识,包括它的核心概念、配置以及如何与ActiveMQ这样的消息中间件进行集成。 **1. JMS简介** Java消息服务...
在本文中,我们将深入探讨SpringJMS的基本概念、如何与ActiveMQ集成,以及如何通过示例代码理解其工作原理。 1. **SpringJMS简介** SpringJMS是Spring框架对JMS API的包装,它简化了生产者和消费者之间的消息通信...
spring-jmsspring-jmsspring-jmsspring-jmsspring-jmsspring-jms
文件"基于Spring的JMS编程-1"可能包含了关于如何在Spring环境中配置和使用JMS的详细步骤,包括XML配置、代码示例以及可能的实战项目案例。进一步学习这些内容,你将能够熟练掌握Spring框架下的JMS编程技巧,从而在...
在IT行业中,Spring框架是Java领域最广泛应用的轻量级框架之一,而JMS(Java Message Service)则是一种标准接口,用于在分布式系统中进行异步消息传递。ActivemQ是Apache软件基金会的一个项目,它实现了JMS规范,...
在Spring框架中,我们可以使用`org.springframework.jms`包中的类和接口来处理JMS相关的任务。下面将详细介绍如何整合JMS与Spring,以及一个简单的实例。 ### 1. 添加依赖 首先,你需要在项目的构建文件(如Maven...
3. **配置JMS配置文件**: 在Spring的配置文件中,你需要定义JMS相关的bean,如ConnectionFactory和Destination。例如,你可以使用`<jee:jndi-lookup>`标签来查找在WebLogic中创建的JMS资源。 ```xml ...
在Spring JMS中,`JmsTemplate`是核心组件,它有两种实现:JmsTemplate(基于JMS 1.1 API)和JmsTemplate102(基于JMS 1.0.2 API)。在示例应用程序中,通常会选择与目标JMS提供者兼容的版本。`JmsTemplate`通过回调...
赠送jar包:spring-jms-4.3.12.RELEASE.jar; 赠送原API文档:spring-jms-4.3.12.RELEASE-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
在JMS中,事务有两种类型:Local事务和XAJMS事务。Local事务仅在JMS提供者内部进行,适用于简单场景。XAJMS事务则涉及到JMS和JTA(Java Transaction API)的交互,能实现跨资源的分布式事务,更适用于复杂的系统集成...
赠送jar包:spring-jms-4.3.20.RELEASE.jar; 赠送原API文档:spring-jms-4.3.20.RELEASE-javadoc.jar; 赠送源代码:spring-jms-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
在Java世界中,ActiveMQ和Spring的整合是企业级应用中常见的消息中间件解决方案,用于实现JMS(Java Message Service)消息传递。本教程将深入探讨如何将这两个强大的工具结合在一起,以创建一个简单的发送JMS消息的...