当前位置: 代码迷 >> J2EE >> 【ActiveMQ 】消费者的速度远远更不上啊大神来帮助一下
  详细解决方案

【ActiveMQ 】消费者的速度远远更不上啊大神来帮助一下

热度:270   发布时间:2016-04-17 23:45:13.0
【ActiveMQ 求助】消费者的速度远远更不上啊,大神来帮助一下
小菜一只,上面安排优化ActiveMQ的配置。。。我到处瞎鼓捣,现在发送者的速度贼快达到 5000条/s
可是消费者的速度太慢了,而且在后台查看,1000条消息只被消费了94条。我勒个去啊,那么多被积压啊。。。我把导出一个jar包当做消费者运行,这样就不会积压,但是速度是 15条/s  这大坑...

我看了网上许多资料,说采用两个连接池来区分。。

求大神给个思想怎么优化消费者的速度,下面上配置:
ActiveMQ.xml

    <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="dispatchAsync" value="true" /> 
<property name="useAsyncSend" value="true" />
    </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">
        <property name="concurrentConsumers" value="${jms.concurrentConsumers}" />
        <property name="connectionFactory" ref="JmsReveiverFactory" />  
        <property name="destinationName" value="${jms.queueName}" />  
        <property name="messageListener" ref="messageConsumer" />
        <property name="sessionTransacted" value="true"/>  
  相关解决方案