我近段的一个应用中需要消息驱动POJO。
最近也听说Spring 2.0开始支持消息驱动POJO了,但我的应用使用的Spring1.2。
从网上找了一些文章看来都比较旧了,并且近段ActiveMQ处于Apache的孵化器中,包的结构也有些改变,原来的ActiveMQ中的JCA容器部分也从ActiveMQ中独立也来成了Jencks项目。
后来参考这些文章和Jencks官网上的说明成功实现了消息驱动POJO。
下面记录了我配置的过程:
[list=1]
搞定相依赖的包。
a.Spring相关的一些包,这部分就不再啰嗦了。
b.ActiveMQ相关的包
activemq-ra-4.01
concurrent-1.3.4
incubator-activemq-4.0.1
c.JCA容器
jencks-1.3-all
服务端配置
<bean id="helloBean" class="mdp.demo.HelloBean" />
<bean id="jmsTransactionManager"
class="org.jencks.factory.TransactionManagerFactoryBean" />
<bean id="activeMQContainer" class="org.jencks.JCAContainer">
<property name="bootstrapContext" >
<bean id="bootstrapContext" class="org.jencks.factory.BootstrapContextFactoryBean">
<property name="transactionManager" ref="jmsTransactionManager"/>
</bean>
</property>
<property name="resourceAdapter">
<bean id="activeMQResourceAdapter"
class="org.apache.activemq.ra.ActiveMQResourceAdapter">
<property name="serverUrl"
value="tcp://localhost:61616" />
</bean>
</property>
</bean>
<bean id="HelloMDP" class="org.jencks.JCAConnector">
<property name="jcaContainer" ref="activeMQContainer" />
<property name="transactionManager" ref="jmsTransactionManager" />
<property name="activationSpec">
<bean
class="org.apache.activemq.ra.ActiveMQActivationSpec">
<property name="destination" value="Hello.Queue" />
<property name="destinationType"
value="javax.jms.Queue" />
</bean>
</property>
<property name="ref" value="helloBean" />
</bean>
开发HelloBean
package mdp.demo;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
public class HelloBean implements MessageListener {
public void onMessage(Message msg) {
try {
String name = msg.getStringProperty("name");
if (name == null) {
name = "World";
}
System.out.println("Hello " + name + "!");
} catch (JMSException e) {
e.printStackTrace();
}
}
}
客户端配置,这里直接使用Spring的JmsTemplate
<bean id="jmsTemplate"
class="org.springframework.jms.core.JmsTemplate">
<property name="defaultDestinationName" value="Hello.Queue" />
<property name="connectionFactory" ref="connectionFactory" />
</bean>
<bean id="connectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616" />
</bean>
客户端示例程序
package mdp.demo;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.Session;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
public class MDPClient {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"spring-client.xml");
JmsTemplate template = (JmsTemplate) ctx.getBean("jmsTemplate");
template.setDefaultDestinationName("Hello.Queue");
template.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
MapMessage message = session.createMapMessage();
message.setStringProperty("name", "消息驱动POJO");
return message;
}
});
}
}
上面的示例代码实现了消息驱动POJO,但是POJO类仍需实现MessageListener接口。
上面的配置也不支持XA事务,Jencks官网上有说明,但我没有配置成功(Hibernate和JMS)。有哪位兄弟配置成功请告知,谢谢。
[/list]
分享到:
相关推荐
spring+activemq必备jar包:activeio-core-3.1.4.jar,activemq-all-5.13.2.jar,activemq-pool-5.13.2.jar,commons-pool2-2.4.2.jar
总结起来,"JMS之Spring + ActiveMQ实现消息队列"涉及到的关键知识点包括:Spring框架的JMS支持、ActiveMQ的使用、ConnectionFactory的配置、JmsTemplate和MessageListener的实现,以及消息队列在解决系统解耦和异步...
在IT行业中,Spring框架与ActiveMQ的结合是构建企业级应用中常见的消息中间件解决方案。Spring框架是一个开源的Java平台,它提供了丰富的功能,包括依赖注入、AOP(面向切面编程)、数据访问、Web应用以及更多的服务...
基于Spring+JMS+ActiveMQ+Tomcat,我使用的版本情况如下所示:Spring 3.2.0,ActiveMQ 5.4.3,Tomcat 6.0.43。本例通过详细的说明和注释,实现消息服务的基本功能:发送与接收。Spring对JMS提供了很好的支持,可以...
在Java开发中,Spring框架是极为重要的应用基础,而ActiveMQ作为Apache出品的一款开源消息中间件,常被用于实现应用间的异步通信和解耦。本实例代码工程"Spring+ActiveMQ整合实例代码工程"正是结合两者,展示了如何...
springboot +netty+activeMq在线客服系统springboot +netty+activeMq在线客服系统springboot +netty+activeMq在线客服系统springboot +netty+activeMq在线客服系统springboot +netty+activeMq在线客服系统springboot...
标题 "jms Spring+ActiveMQ 5.4.2" 涉及的是Java消息服务(JMS)在Spring框架中的应用,以及ActiveMQ作为消息代理的使用。在这个主题下,我们将深入探讨JMS的基本概念、Spring对JMS的支持以及ActiveMQ 5.4.2版本的...
2. **创建消息生产者**:在Spring中,你可以使用`JmsTemplate`作为消息生产者,发送消息到ActiveMQ的队列或主题。配置`JmsTemplate`并设置ActiveMQ的连接工厂,然后在需要发送消息的地方调用其`convertAndSend`方法...
在IT行业中,Spring框架与ActiveMQ的集成是一个常见的任务,特别是在构建分布式系统和微服务架构时,消息队列起着至关重要的作用。本示例主要关注如何将Spring框架与ActiveMQ整合,以便实现异步通信和解耦系统组件。...
Spring与ActiveMQ的集成非常便捷,可以使用Spring的JmsTemplate或配置监听容器来发送和接收消息。 MyBatis是一个轻量级的持久层框架,它简化了Java应用与数据库之间的交互。MyBatis允许开发者编写SQL语句,将它们与...
单片机部分采用MQTT协议将主题消息发布到队列中,java部分也采用MQTT协议进行处理,整合MQTT协议, 具体这个资源是干什么的,请查看博客: https://blog.csdn.net/qq_34178998/article/details/93158429
在企业级应用开发中,Spring框架与ActiveMQ的结合使用是一种常见的消息中间件解决方案,用于实现应用程序间的异步通信和解耦。本项目基于Maven构建,提供了对Topic的实现,同时也支持轻松切换到Queue模式。 **...
在本文中,我们将深入探讨如何使用SpringBoot、ActiveMQ和MQTT来实现消息的发送与接收。这是一个典型的分布式系统中的消息通信场景,其中SpringBoot作为应用程序框架,ActiveMQ作为消息中间件,而MQTT(Message ...
Spring框架作为Java领域最流行的开发框架之一,提供了强大的依赖注入和面向切面编程功能,而ActiveMQ则是Apache软件基金会的一个开源消息中间件,实现了Java Message Service (JMS) 规范,用于在应用程序之间高效、...
基于Spring+JMS+ActiveMQ+Tomcat的整合ActiveMQSpringDemo实例源码,此实例基于Spring+JMS+ActiveMQ+Tomcat,注解的完整实例,包含jar包,可供学习及设计参考。
总的来说,Spring与ActiveMQ的整合使得消息驱动的架构在Spring应用中变得更加便捷和灵活。这不仅提高了系统的解耦性,也提升了可扩展性和容错性。无论是简单的小型应用还是复杂的分布式系统,这种集成都是值得考虑的...
spring +activemq topic消息持久化订阅实例,整个项目中有activemq和spring的整合的所有实例,topic的持久化配置是在ApplicationContext3C、ApplicationContext3C2以及ApplicationContext3P三个中,消息生产者:...
标题 "BlazeDS+Spring+activeMQ outofmemory" 指的是在使用BlazeDS、Spring和ActiveMQ集成的环境中遇到了内存溢出问题。BlazeDS是一个开放源码的服务器端技术,它允许双向通信,使Flex或AJAX客户端能够与Java后端...