Spring下ActiveMQ的xml配置

琚大哥给我安排个事儿,ActiveMQ的优化,我去,优化的高端大气上档次的词儿,完全摸不到头脑啊,硬着头皮上吧,网上各种搜配置,最后也算是搞出点名堂了。

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:amq="http://activemq.apache.org/schema/core"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
	http://activemq.apache.org/schema/core
	http://activemq.apache.org/schema/core/activemq-core.xsd
	http://camel.apache.org/schema/spring
	http://camel.apache.org/schema/spring/camel-spring.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.2.xsd"
    default-autowire="byName">
 
    <bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory">  
        <property name="brokerURL" value="${jms.brokerURL}" />
        <property name="userName" value="${jms.username}" />
		<property name="password" value="${jms.password}" />
		<!-- 是否异步发送消息 -->
		 <property name="useAsyncSend" value="true" />
		<property name="alwaysSessionAsync" value="false" /> 
    </bean>  
     
    <!-- 设置发送连接池,提高性能 --> 
    <bean id="JmsSenderFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
    	<property name="connectionFactory" ref="jmsFactory" /> 
    	<property name="maxConnections" value="100"></property>
    </bean>
    
   <!-- 设置接收连接池,提高性能   -->
    <bean id="JmsReveiverFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
         <property name="connectionFactory" ref="jmsFactory" /> 
    	<property name="maxConnections" value="100"></property> 
   </bean>  
   
    <!-- Spring JMS Template -->
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">  
        <property name="connectionFactory" ref="JmsSenderFactory" />  
        <property name="defaultDestination" ref="destination" />
        <!-- 区别它采用的模式:false是p2p;true是订阅   -->
        <property name="pubSubDomain" value="false" />
        <property name="messageConverter">
            <bean class="org.springframework.jms.support.converter.SimpleMessageConverter" />  
        </property>
        
    </bean>
    
    <!-- Spring JMS Template -->
    <bean id="jmsTemplate2" class="org.springframework.jms.core.JmsTemplate">  
        <property name="connectionFactory" ref="JmsReveiverFactory" />  
        <property name="defaultDestination" ref="destination" />
        <!-- 区别它采用的模式:false是p2p;true是订阅   -->
        <property name="pubSubDomain" value="false" />
        <property name="messageConverter">
            <bean class="org.springframework.jms.support.converter.SimpleMessageConverter" />  
        </property>
        
    </bean>
    
	<!-- 发送消息的目的地(一个队列) -->  
    <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">  
        <!-- 设置消息队列的名字 -->  
        <constructor-arg index="0" value="${jms.queueName}" />
    </bean>
    
    
    <!-- 消息监听  -->
    <bean id="listenerContainer"  
        class="org.springframework.jms.listener.DefaultMessageListenerContainer" lazy-init="false">
        <property name="concurrentConsumers" value="${jms.concurrentConsumers}" />
        <property name="connectionFactory" ref="JmsReveiverFactory" />  
        <property name="destinationName" value="${jms.queueName}" />  
        <property name="messageListener" ref="messageConsumer" />
        <property name="pubSubNoLocal" value="true"></property>  
    </bean>   
      
  
    <!-- 消息消费者 -->
    <bean id="messageConsumer"
        class="com.voole.jms.MessageConsumer">
        <property name="jmsTemplate2" ref="jmsTemplate2"></property>  
    </bean>
   
    <!-- 消息生产 -->
    <bean id="messageProducer"
        class="com.voole.jms.MessageProducer">
        <property name="jmsTemplate" ref="jmsTemplate"></property>  
    </bean>
    
    
</beans>

上面就是我的xml配置,挑重点讲吧。

在配置 jmsFactory时,注意了,这里面有个严重的问题,

		 <property name="useAsyncSend" value="true" />


这个参数默认的设置是 false,这里我们要把它设为 true,这样的话是确定为 异步发送,发送的速度会大大增加,经过我测试啊,不设置的话,10000条1K的消息要发送400秒,设置为 true后,你猜速度多少!!! 只需要 2 秒!!

另外还配置了发送连接池和接收连接池来提高性能。

希望有大神看到,再给我提提意见吧,好多不足啊,我这个就当抛砖引玉用。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值