spring+activemq配置多个生产者,多个消费者并发处理消息

该博客介绍了如何在Spring环境中配置多个ActiveMQ连接工厂,创建多个生产者发送消息到同一个队列,并配置消费者以并发方式接收和处理消息。配置包括ActiveMQ的连接工厂、消息转换器、消费者监听器以及并发设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先贴配置


<?xml version="1.0" encoding="UTF-8"?>
 
 <beans xmlns="http://www.springframework.org/schema/beans"  
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:context="http://www.springframework.org/schema/context"  
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="
 http://www.springframework.org/schema/beans  
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
 http://www.springframework.org/schema/aop  
 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
 http://www.springframework.org/schema/tx  
 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
 http://www.springframework.org/schema/context   
      http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  <!-- 采用注释的方式配置bean -->   
     <context:annotation-config />   
     
     <!-- 配置要扫描的包 -->   
     <context:component-scan base-package="service.jms"/>
 
     <bean id="connectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
         <property name="connectionFactory">
             <bean class="org.apache.activemq.ActiveMQConnectionFactory">
                 <property name="brokerURL">
                     <value>tcp://localhost:61616</value>
                 </property>
                 <property name="useAsyncSend">
                     <value>true</value>
                 </property>
             </bean>
         </property>
     </bean>
 
     <bean id="connectionFactory_1" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
         <property name="connectionFactory">
             <bean class="org.apache.activemq.ActiveMQConnectionFactory">
                 <property name="brokerURL">
                  <!-- 可以是其他的broker地址 -->
                    <value>tcp://localhost:61616</value>
                 </property>
                 <property name="useAsyncSend">
                     <value>true</value>
                 </property>
             </bean>
         </property>
     </bean>
 
     <!-- 发送消息的目的地(一个队列) -->
     <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
         <!-- 设置消息队列的名字 -->
         <constructor-arg index="0" value="activeMQQueue" />
     </bean>
     
     <!-- 消息转换 -->
     <bean id="messageConverter" class="service.jms.ObjectMessageConverter"/>
 
     <!-- 消费者 -->
     <bean id="queueConsumer" class="service.jms.MessageConsumer"/>
     <bean id="queueListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
         <constructor-arg ref="queueConsumer"/>
         <property name="defaultListenerMethod" value="receive"/>
         <property name="messageConverter" ref="messageConverter"/>
     </bean>
     <!-- 监听 -->
     <bean id="queueListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
         <property name="connectionFactory" ref="connectionFactory"/>
         <property name="destination" ref="destination" />
         <property name="messageListener" ref="queueListener" />
         <!-- 配置多个消费者,可以是具体数值,也可以是数值区间,根据消息的规模来确定消费者的多少 -->
         <property name="concurrency" value="4-8"></property>
     </bean>
     
     <!-- 生产消息配置 -->
     <bean id="queueProducer" class="service.jms.MessageProducer">
         <property name="destination" ref="destination"/>
         <property name="jmsTemplate">  
             <list>  
                 <ref bean="jmsTemplate_1" /> 
                 <ref bean="jmsTemplate_2" /> 
             </list>  
         </property>
     </bean>
     
     <!-- 配置JMS模版 -->
     <bean id="jmsTemplate_1" class="org.springframework.jms.core.JmsTemplate">
         <property name="connectionFactory" ref="connectionFactory" />
         <property name="messageConverter" ref="messageConverter" />
     </bean>
     
     <bean id="jmsTemplate_2" class="org.springframework.jms.core.JmsTemplate">
         <property name="connectionFactory" ref="connectionFactory_1" />
         <property name="messageConverter" ref="messageConverter" />
     </bean>
     
 </beans>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值