介绍
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。由于ActiveMQ是一个独立的JMS provider,很容易被用于多种结构设计中,也不需要第三方服务器的支持,这样我们的应用可以部署在各种J2EE服务器或servlet服务器中,也可以独立运行。
本文介绍如何在spring中集成activemq,然后演示下如何发送和接收消息。
在Spring中集成ActiveMQ
配置ConnectionFactory
在spring中设置ActiveMQ的connectionFactory,需要导入activemq-client.jar,可以到activemq官网或者通过maven repository下载。
<!-- 真正可以产生Connection的ConnectionFactory,由对应的JMS服务厂商提供--> <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616" /> </bean> |
配置一个消息队列Queue(点对点)
<!--这个是队列目的地,点对点的--> <bean id="notifyQueue" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg> <value>notifyQueue</value> </constructor-arg> </bean> |
发送消息配置
配置JmsTemplate
使用Spring提供的JmsTemplate封装JMS的细节,简化代码开发,JmsTemplate支持发送和接收。
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"/> <property name="receiveTimeout" value="2000" /> </bean> |
JmsTemplate每次发送都会创建新的connect,新的session,新的MessageProducter,这样效率较低。Spring提供了一个org.springframework.jms.connection.SingleConnectionFactory,每次都返回同一个connection,它会忽略close,所以connection会一直保持着。Spring还提供了一个org.springframework.jms.connection.CachingConnectionFactory,
增加了对session的缓存功能,可以通过sessionCacheSize设置,但因为它继承自SingleConnectionFactory,所以同样是一直使用同一connection,我觉得主要是用于测试环境。
ActiveMQ也提供了一个对connection,session, MessageProducer实现池化功能的org.apache.activemq.pool.PooledConnectionFactory。这个可以在生产环节使用。不过他和atomikos的分布式事务目前测试配合不了,使用atomikos分布式事务时由其他方法,下回再说。
编写消息生产者服务
编写消息生产者,把消息发送至队列notifyQueue
@Component publicclass JmsProducerService {
@Resource private JmsTemplate jmsTemplate;
@Qualifier("notifyQueue") @Autowired private Destination destination;
publicvoid sendMessage(final String message) { System.out.println("---------------生产者-----------------"); System.out.println("发了一个消息:" + message); jmsTemplate.send(destination, new MessageCreator() {
@Override public Message createMessage(Session session) throws JMSException { returnsession.createTextMessage(message); } });
} } |
接收消息配置
配置监听容器
配置一个Spring监听容器,引用上面配置好的connectionFactory
<!-- 配置一个通用的JMS监听容器 --> <bean id="jmsListenerContainerFactory" class="org.springframework.jms.config.DefaultJmsListenerContainerFactory"> <property name="connectionFactory" ref="connectionFactory"/> </bean> |
配置@JmsListener注解支持
使用@Jmslistener直接在代码中定义监听器,减少配置文件编写,需要添加下面配置以支持@Jmslistener
<!-- 支持@JmsListener自动启动监听器 --> <jms:annotation-driven/> |
PS:<jms:annotation-driven>默认是使用jmsListenerContainerFactory,所以配置中可以不用指定
编写消息监听服务
使用@JmsListener定义一个监听器,监听消息队列notifyQueue
@Component publicclass AnConsumerListener {
@JmsListener(destination="notifyQueue") public void receiveMessage(String message){ System.out.println("---------------消费者监听-----------------"); System.out.println("接收到一个纯文本消息:" + message);
} } |
测试
启动ActiveMQ
执行activemq/bin/activemq.bat start
使用生产者发生一条消息看看
JmsProducerService jms = (JmsProducerService)SpringContextManager.getBean("jmsProducerService"); jms.sendMessage("Hello world!");
|
相关推荐
消息队列:ActiveMQ:ActiveMQ的Spring集成.docx
《ActiveMQ与Spring整合——深度解析5.5.0版本》 在Java消息服务(Java Message Service,简称JMS)领域,Apache ActiveMQ是广泛使用的开源消息代理和集成框架。它支持多种协议,如OpenWire、AMQP、STOMP、MQTT等,...
《ActiveMQ与Spring整合详解及1.2版本的使用》 在Java消息服务(Java Message...尽管它可能不包含最新的特性和改进,但对于理解JMS和Spring集成的基础原理,以及构建简单消息传递系统,这个库仍然具有很高的学习价值。
Spring集成ActiveMQ是将Spring框架与ActiveMQ消息中间件相结合,实现异步处理和解耦应用程序的关键技术。在本文中,我们将深入探讨如何配置和使用这一组合,以及它在实际项目中的应用。 首先,让我们了解Spring框架...
Spring 集成 ActiveMQ 配置是指将 Spring 框架与 ActiveMQ 消息队列集成,以实现基于 JMS(Java Message Service)的消息传递。ActiveMQ 是 Apache 软件基金会的一个开源的消息队列系统,提供了高性能、可靠的消息...
总结来说,`activemq-spring-2.0.jar.zip`是一个包含ActiveMQ与Spring集成的库,它简化了在Spring应用中使用ActiveMQ的过程。通过理解和应用其中的关键概念,开发者可以有效地利用消息队列提升系统的性能和可靠性。...
而Spring框架作为Java开发中的主流框架,它提供了与各种JMS提供商集成的能力,包括ActiveMQ。在本文中,我们将深入探讨`activemq-spring-1.3.jar`这个库,以及如何在Spring应用中使用它来实现ActiveMQ的功能。 `...
**ActiveMQ与Spring集成实例详解** ActiveMQ是Apache软件基金会下的一个开源项目,它是一个功能丰富的Java消息服务(JMS)提供商,支持多种协议,并且能够处理大量的并发消息传输。而Spring框架则是一个广泛使用的...
通过以上步骤,你已经成功地将ActiveMQ与Spring集成,并实现了基本的消息收发功能。在实际项目中,你可能需要根据需求调整配置,例如设置消息的持久化、事务支持、消息优先级等高级特性。此外,ActiveMQ还提供了管理...
`activemq-spring-1.4.jar`是专门为Spring框架设计的一个适配器,使得Spring应用能够无缝地集成ActiveMQ。这个库包含了Spring与ActiveMQ交互所需的类和配置,使得开发者可以通过Spring的IoC(Inversion of Control)...
首先,`activemq-spring-1.5.jar`是专门为Spring框架设计的ActiveMQ集成库,它使得在Spring应用中配置和使用ActiveMQ变得异常简单。这个版本1.5的库是在Spring框架成熟时期发布,旨在提供与早期Spring版本的良好兼容...
**ActiveMQ与Spring集成实例——使用消息转换器** 在企业级应用开发中,消息队列(Message Queue,MQ)作为一种解耦和异步处理的重要工具,被广泛应用。Apache ActiveMQ 是一个开源的消息中间件,它支持多种消息...
标题中的“ActiveMQ与Spring集成实例之使用Maven构建”是指在Java开发环境中,通过Maven构建工具将Apache ActiveMQ消息中间件与Spring框架整合在一起的实际操作案例。这个主题涵盖了几大关键知识点: 1. **Apache ...
ActiveMQ与Spring线程池整合的一个实例。 lib库没有上传。 对于实例的讲解,在竹子的论坛有我对这个实例的帖子(http://www.java2000.net/viewthread.jsp?tid=1167) lib中包含: apache-activemq-4.1.1.jar ...
将Spring Boot与ActiveMQ集成可以提供强大的消息处理能力,使应用能够解耦组件,提高可扩展性和容错性。 本文将详细讲解如何使用Spring Boot与内置的ActiveMQ进行集成,以及如何通过代码实现这一过程。 首先,我们...
Spring还提供了丰富的模块,如数据访问、Web、测试等,其中Spring JMS模块专门用于集成消息中间件,使得与ActiveMQ的整合变得简单。 三、ActiveMQ与Spring的整合 1. 添加依赖:首先,在项目中引入ActiveMQ和Spring...
本案例主要展示了如何在Spring应用中集成ActiveMQ,实现消息的发送和接收。首先,我们需要在项目中引入ActiveMQ的相关依赖。在Maven工程中,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache....
Spring ActiveMQ 是一个结合了Spring框架与Apache ActiveMQ的集成解决方案,它允许开发者在Spring应用中轻松地使用消息中间件。ActiveMQ是Apache软件基金会的一个开源项目,它是一款功能强大的消息代理,支持多种...
本文将深入探讨ActiveMQ 5.5.1版本与Spring框架的集成,以及如何利用Spring的模板模式简化ActiveMQ的使用。 一、ActiveMQ基础介绍 ActiveMQ是Apache软件基金会下的一个项目,遵循JMS(Java消息服务)规范,支持多种...