1、开发环境: eclipse3.2+jdk1.5+jboss4.2.2
2、使用XA实现事务。
消息接收器代码:
public class ReceiverListener implements SessionAwareMessageListener {
public void onMessage(Message message, Session session)
throws JMSException {
if (message instanceof TextMessage) {
try {
System.out.println("New Receive Message: " +
((TextMessage) message).getText());
} catch (JMSException ex) {
throw new RuntimeException(ex);
}
} else {
throw new IllegalArgumentException(
"Message must be of type TextMessage");
}
}
}
Spring配置:
<bean id="userJmsUtil" class="com.hc360.mmt.common.UserJmsTransactionUtil">
<property name="destinationJndi" value="queue/A"></property>
<property name="connectionFactoryJndi" value="UIL2ConnectionFactory"></property>
<property name="factoryInitial" value="org.jnp.interfaces.NamingContextFactory"></property>
<property name="providerUrl" value="localhost"></property>
<property name="factoryUrlPkgs" value="org.jboss.naming:org.jnp.interfaces"></property>
</bean>
<bean id="jmsQueueConnectionFactory" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="userJmsUtil"></property>
<property name="targetMethod" value="getConnectionFactory"></property>
</bean>
<bean id="destination" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="userJmsUtil"></property>
<property name="targetMethod" value="getDestination"></property>
</bean>
<!-- this is the Message Driven POJO (MDP) -->
<bean id="messageListener" class="com.hc360.jms.ReceiverListener" />
<!-- and this is the attendant message listener container -->
<bean id="listenerContainer1"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="concurrentConsumers" value="1"/>
<property name="connectionFactory" ref="jmsQueueConnectionFactory" />
<property name="destination" ref="destination" />
<property name="messageListener" ref="messageListener" />
<property name="transactionManager" ref="transactionManagerCommon" />
</bean>
<bean id="transactionManagerCommon" class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="jmsQueueConnectionFactory" />
</bean>
分享到:
相关推荐
本篇文章将深入探讨如何使用Spring进行JMS消息的发送和接收。 ### 1. JMS概述 JMS是一种中间件协议,它定义了生产、存储和消费消息的标准接口。JMS提供两种类型的消息模型:点对点(Point-to-Point, P2P)和发布/...
《Spring In Action:使用Spring发送和接收JMS消息》 在Java消息服务(Java Message Service,JMS)中,Spring框架提供了一种高效且灵活的方式来处理消息传递。JMS允许应用程序在分布式环境中发送和接收消息,它...
本文将深入探讨如何在Spring中整合JMS并实现事务管理,以确保消息传递的可靠性和一致性。 首先,我们需要理解Spring的声明式事务管理。Spring提供了一种强大的声明式事务管理机制,它允许我们在不编写任何事务控制...
- **MessageListenerContainer**:通过实现`MessageListener`接口,Spring容器会自动启动监听线程,接收到消息后调用监听器方法。 - **JmsTemplate.receive()**:阻塞式接收,调用后会等待直到有消息到达。 **7. ...
此外,它还包含了对JMS的PlatformTransactionManager实现,使得JMS能够参与到Spring的事务管理中,确保事务的一致性和可靠性。 IBM WebSphere MQ是一个强大的消息中间件,它通过队列和事务机制确保消息在网络中的...
总结起来,"JMS之Spring + ActiveMQ实现消息队列"涉及到的关键知识点包括:Spring框架的JMS支持、ActiveMQ的使用、ConnectionFactory的配置、JmsTemplate和MessageListener的实现,以及消息队列在解决系统解耦和异步...
Spring JMS框架是Spring项目的一部分,其主要目标是简化Java Message Service (JMS) API的使用,使得开发人员能够更容易地与消息中间件进行交互。通过Spring JMS,开发者可以更加专注于业务逻辑而非底层的消息传递...
在压缩包文件"shanhy-springjms"中,可能包含了以下内容: 1. `pom.xml`:Maven项目的配置文件,定义了项目依赖,包括Spring、JMS和JTA相关的库。 2. `src/main/java`:源代码目录,可能有Spring配置类、消息生产者...
在Java中,Spring框架提供了强大而灵活的支持,使得开发人员能够轻松地实现基于Java消息服务(JMS)的网络编程。JMS是一个标准接口,它允许应用程序创建、发送、接收和读取消息,这些消息可以在不同的应用之间传递,...
在本项目中,Spring与WebLogic JMS(Java消息服务)的集成展示了如何在Spring环境中使用消息队列进行通信。 WebLogic JMS是Oracle WebLogic Server提供的消息中间件,它遵循JMS规范,用于在分布式环境中传递消息,...
SpringJMS提供了事务支持,可以在发送或接收消息时启用JMS事务,确保消息传递的可靠性。 9. **错误处理和异常传播** SpringJMS允许开发者捕获和处理JMS异常,例如消息无法发送或接收时,可以通过Spring的异常处理...
3. **Message-driven POJOs (MDPs)**:Spring支持将普通的Java类转换为消息驱动的组件,只需实现MessageListener接口,即可处理由JMS消息触发的业务逻辑。 在Spring JMS 4.3.4.RELEASE中,主要的特性改进和优化包括...
本篇文章将详细探讨如何通过Spring框架整合JMS,特别是使用ActiveMQ作为消息代理来实现消息的收发功能。 首先,我们需要理解Spring对JMS的支持。Spring提供了`org.springframework.jms`包,包含了一系列接口和类,...
1. **JMS模板(JmsTemplate)**: 这是Spring提供的一个核心工具类,简化了发送和接收JMS消息的过程。它提供了同步和异步发送消息的方法,支持点对点(P2P)和发布/订阅(Pub/Sub)模型。 2. **MessageListener容器*...
Spring JMS提供了对JMS API的高度封装,简化了消息生产者和消费者的实现,同时也支持事务管理和消息确认机制,极大地提升了开发效率和代码的可维护性。 首先,我们来看看Spring JMS的核心组件。主要包括...
Java 消息服务 (JMS) API 是实现异步消息传递的标准,但其原始使用方式涉及复杂的资源管理和异常处理。 传统的 JMS 实现涉及多个步骤,包括 JNDI(Java Naming and Directory Interface)查询来查找队列连接工厂和...
- **事务**:在JMS会话中,可以使用事务确保消息的一致性。 - **消息选择器**:允许消费者只接收满足特定条件的消息。 - **JMS管理**:通过JMX(Java Management Extensions)管理JMS资源。 通过理解并熟练掌握上述...
在Java世界中,ActiveMQ和Spring的整合是企业级应用中常见的消息中间件解决方案,用于实现JMS(Java Message Service)消息传递。本教程将深入探讨如何将这两个强大的工具结合在一起,以创建一个简单的发送JMS消息的...
**正文** ...总的来说,"jms整合spring工程"是一个实用的示例,帮助开发者理解和实践在Spring中使用JMS与ActiveMQ进行消息通信。通过深入研究该项目,可以掌握JMS和Spring集成的关键技术和最佳实践。
4. **配置事务管理** - 如果需要事务支持,配置Spring的事务管理器,确保消息发送和接收都在事务中进行。 5. **测试和优化** - 测试应用程序,确保消息的正确发送和接收,同时根据需求调整消息的持久化、并发处理等...