Spring整合ActiveMQ配置教程

需积分: 9 3 下载量 155 浏览量 更新于2024-09-15 收藏 38KB DOCX 举报
"本文主要介绍了如何将Spring框架与ActiveMQ集成,用于实现JMS消息的发送和接收。文章作者提供了详细的配置步骤、所需库文件以及示例代码,帮助读者理解并实现Spring与ActiveMQ的整合。" 在Java企业级开发中,Spring是一个广泛使用的开源框架,而ActiveMQ则是Apache出品的一款开放源码的消息中间件,它实现了Java消息服务(JMS)标准,用于在分布式系统中传输消息。将Spring与ActiveMQ集成可以方便地在应用之间传递数据,提高系统的解耦性和可靠性。 集成环境: - Spring框架版本:2.5.6 - ActiveMQ版本:5.4.2 集成步骤: 1. 引入依赖:首先,需要将ActiveMQ的相关库文件添加到项目中,包括`activemq-all-5.4.2.jar`以及`lib`目录下的多个模块化jar包。同时,Spring项目需要包含Spring核心、JMS支持以及其他必要的jar文件。 2. 配置Spring:创建Spring配置文件,设置JMS模板和消息目的地。例如,配置文件可能包含以下内容,定义ConnectionFactory、Destination和JmsTemplate: ```xml <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616"/> </bean> <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg> <value>queueName</value> </constructor-arg> </bean> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"/> <property name="defaultDestination" ref="destination"/> </bean> ``` 3. 编写代码: - 消息发送者:消息生产者使用Spring的JMS模板发送消息,无需在Spring配置文件中单独配置。例如: ```java @Autowired private JmsTemplate jmsTemplate; public void sendMessage(String message) { jmsTemplate.convertAndSend("queueName", message); } ``` - 消息接收者:消息消费者同样不直接通过Spring初始化,而是注入JMS模板。创建一个监听器类: ```java @MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "queueName"), @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") }) public class MessageReceiver implements MessageListener { @Autowired private JmsTemplate jmsTemplate; @Override public void onMessage(Message message) { // 处理接收到的消息 } } ``` 4. 启动ActiveMQ:确保ActiveMQ服务器已启动,监听默认的61616端口。 5. 测试程序:编写一个主函数来初始化消息消费者,并启动两个消费者实例监听消息。然后运行消息生产者的代码,消息将被消费者接收。 依赖库文件包括但不限于: - `activation-1.1.jar` - `activemq-camel-5.4.2.jar` - `activemq-console-5.4.2.jar` - `activemq-core-5.4.2.jar` - `activemq-jaas-5.4.2.jar` - `activemq-pool-5.4.2.jar` - `activemq-protobuf-1.1.jar` - `activemq-spring-5.4.2.jar` - `activemq-web-5.4.2.jar` - `spring-beans-2.5.6.jar` - `spring-context-2.5.6.jar` - `spring-context-support-2.5.6.jar` - `spring-core-2.5.6.jar` - `spring-jms-2.5.6.jar` - `spring-tx.jar` - `geronimo-` 通过以上步骤,开发者可以成功地将Spring集成到ActiveMQ环境中,实现消息的发布与订阅功能,提高应用的灵活性和可扩展性。

详细说一下一下代码:package com.mcloud.market.mq; import com.mcloud.common.constant.Constants; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.command.ActiveMQQueue; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.config.JmsListenerContainerFactory; import org.springframework.jms.config.SimpleJmsListenerContainerFactory; import org.springframework.jms.core.JmsMessagingTemplate; import javax.jms.ConnectionFactory; import javax.jms.Queue; @Configuration public class ActiveMQConfig { @Value("${spring.activemq.broker-url}") private String brokerUrl; @Value("${spring.activemq.user}") private String username; @Value("${spring.activemq.password}") private String password; @Bean public Queue queue() { return new ActiveMQQueue(Constants.PREFIX + ".amount"); } @Bean(name = "messageQueue") public Queue amountQueue() { return new ActiveMQQueue(Constants.PREFIX + ".message"); } // 在Queue模式中,对消息的监听需要对containerFactory进行配置 @Bean("queueListener") public JmsListenerContainerFactory<?> queueJmsListenerContainerFactory(ConnectionFactory connectionFactory) { SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setPubSubDomain(false); return factory; } @Bean public ConnectionFactory connectionFactory() { return new ActiveMQConnectionFactory(username, password, brokerUrl); } @Bean public JmsMessagingTemplate jmsMessageTemplate() { return new JmsMessagingTemplate(connectionFactory()); } }

2023-06-06 上传