小菜一只,上面安排优化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"/>