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="java:JmsXA"></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="transactionManagerJTA" />
</bean>
<bean id="transactionManagerJTA" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransactionName">
<value>UserTransaction</value>
</property>
</bean>
分享到:
相关推荐
标题“使用Atomikos处理ActiveMQ在Spring环境的XA事务”揭示了本文将涉及的关键技术领域,即在Spring框架中如何利用Atomikos这个开源事务管理器来支持分布式事务,特别是针对ActiveMQ消息队列的XA事务处理。...
2. 全面的JMS规范实现,包括持久化、XA消息和事务。 3. 与Spring框架的良好集成。 4. 兼容各种J2EE服务器。 5. 支持多种传输协议,如VM、TCP、SSL、NIO等。 6. 消息持久化能力。 7. 集群功能,提高系统的可用性和...
- **Spring框架集成**:Spring提供了JMS模板和监听器容器,简化了JMS的使用。 7. **最佳实践** - **性能优化**:例如,批量发送消息、合理设置消息缓存等。 - **安全性**:配置JMS提供者的安全策略,确保只有...
- **JMSAPI**:提供了一系列API用于实现消息的发送和接收。 - **开发JMS的步骤**:通常包括创建连接工厂、连接、会话、消息生产者或消费者等步骤。 - **JMS客户端程序**:实现了消息发送/接收、发布/订阅等功能的...
3. **事务管理**:为了确保数据的一致性,系统使用JTA(Java Transaction API)和JTA/XA事务来处理银行订单。JTA提供了一个标准的API来管理分布式事务,而XA事务则支持两阶段提交协议,保证跨多个资源(如数据库和...
5. **事务支持**:ActiveMQ支持本地JMS事务和XA事务,确保消息的准确投递。 6. **集群与高可用性**:ActiveMQ可以通过集群实现高可用性,当主节点故障时,其他节点可以接管服务,保证系统的连续性。 7. **网络连接...
7. **JMS Integration**: JTA也支持与Java消息服务(JMS)的集成,允许在事务中发送和接收消息,确保消息的可靠传输。 8. **Global vs. Local Transactions**: JTA允许在单一应用服务器内部进行局部事务,也可以...
- **事务支持**:支持XA事务,确保消息处理的一致性和完整性。 - **集群支持**:支持多实例之间的消息共享,提高系统的可用性和扩展性。 综上所述,ActiveMQ不仅是一个强大的消息中间件,而且还是一个高度可定制和...
2. **全面兼容JMS 1.1和J2EE 1.4规范**:ActiveMQ不仅支持JMS 1.1标准的所有特性,包括持久化、XA事务等,同时还符合J2EE 1.4规范,确保了与各种企业级应用的良好集成。 3. **与Spring框架的无缝集成**:ActiveMQ...
混合XA和non-XA的JMS连接 v. 32.5. 支持可替代的内嵌事务管理器 xii. 33. Spring集成 xiii. 34. 基于JMX的监控和管理 xiv. 35. 测试 Spring Boot参考指南 4 i. 35.1. 测试作用域依赖 ii. 35.2. 测试Spring应用 iii....
- **定义**:ActiveMQ 是 Apache 软件基金会所研发的一款开源消息中间件,它完全支持 JMS 1.1 和 J2EE 1.4 规范,能够作为 JMS Provider 实现消息传递功能。 - **功能**:ActiveMQ 的核心功能在于帮助实现高性能、高...
2. **遵循 JMS 标准**:完全支持 Java Message Service (JMS) 1.1 规范,包括持久化、XA 消息和事务处理,确保了与其他 JMS 兼容的应用程序的互操作性。 3. **与 Spring 集成**:ActiveMQ 可轻松嵌入到使用 Spring ...
- **遵循JMS和J2EE规范**:ActiveMQ提供JMS规范的完整实现,支持JMS 1.1中的所有功能,包括持久化、事务(XA消息)和事务管理等。 - **支持多种协议**:它支持多种消息传输协议,如内部VM通信(in-VM)、TCP、SSL、...
JMS是一种标准的API,用于在Java应用程序之间发送和接收消息。消息队列如ActiveMQ、RabbitMQ等,作为中间件,解耦了生产者和消费者,提供异步处理能力,提高系统的可扩展性和可靠性。 4. EJB(Enterprise JavaBeans...
3. **事务支持**:ActiveMQ支持本地JMS事务和X/Open XA分布式事务,确保消息传递的原子性和一致性。 4. **持久化**:即使在系统崩溃或重启后,ActiveMQ也能保证消息的持久性,不丢失任何重要数据。 5. **多种协议...
2. 全面符合JMS 1.1和J2EE 1.4规范,支持持久化、XA消息和事务处理。 3. 与Spring框架紧密集成,方便内嵌到Spring应用中。 4. 可在常见的J2EE服务器上运行,如Geronimo、JBoss、GlassFish和WebLogic,通过JCA 1.5...
2. **标准支持**:完全支持JMS 1.1和J2EE 1.4规范,包括持久化、XA消息和事务管理等功能。 3. **Spring集成**:ActiveMQ易于与使用Spring框架的应用集成,并且支持Spring 2.0的特性。 4. **持久化机制**:支持通过...
- Mule 支持多种事务管理策略,包括 XA 事务,这是一种分布式的事务处理标准,用于协调跨多个资源管理器的操作。 10. **对事件的路由、传输和转换的端到端支持:** - 这意味着从事件的产生、处理到最后的消费,...