2017-12-19 13 views
0

私はJboss-fuse-6.3と外部Apache-activemq-5.15.2を使用しています。 私はキューに50人のコンシューマをバインドしており、アクティブなコンシューマのページにあるActive MQポータルでは、50人のコンシューマがすべてバインドされているが、キュー上のメッセージの配信は同じではないことに気付きました。複数のコンシューマーでのApache ActiveMQの異常動作

スクリーンショットが添付されています。セッションIDが「1」の場合、キューに入れられたメッセージの数は約1010ですが、他のコンシューマセッションの場合です。キューに入れられたメッセージは10個だけです。

Apache Camel Routeからメッセージをキューイングしています。以下は私の青写真のXMLがある

<bean class="org.apache.activemq.spring.ActiveMQConnectionFactory" id="connectionFactory"> 
    <property name="brokerURL" value="tcp://localhost:61616"/> 
    <property name="userName" value="admin"/> 
    <property name="password" value="admin"/> 
    <property name="trustAllPackages" value="true"/> 
</bean> 
<bean class="org.apache.camel.component.jms.JmsConfiguration" id="jmsConfig"> 
    <property name="connectionFactory" ref="connectionFactory"/> 
</bean> 
<bean class="org.apache.activemq.camel.component.ActiveMQComponent" id="activemq"> 
    <property name="configuration" ref="jmsConfig"/> 
</bean> 

<bean class="org.apache.activemq.spring.ActiveMQConnectionFactory" id="connectionFactory"> 
    <property name="brokerURL" value="tcp://localhost:61616"/> 
    <property name="userName" value="admin"/> 
    <property name="password" value="admin"/> 
    <property name="trustAllPackages" value="true"/> 
</bean> 
<bean class="org.apache.camel.component.jms.JmsConfiguration" id="jmsConfig"> 
    <property name="connectionFactory" ref="connectionFactory"/> 
</bean> 
<bean class="org.apache.activemq.camel.component.ActiveMQComponent" id="activemq"> 
    <property name="configuration" ref="jmsConfig"/> 
</bean> 
<!-- ENQUEUEING MESSAGES --> 
<to pattern="InOnly" uri="activemq:queue:MyQueue"/> 

<!-- DEQUEUEING MESSAGES --> 
<fromuri="activemq:queue:MyQueue?concurrentConsumers=50"/> 

enter image description here

答えて

3

これは、JMSクライアントの一部に、通常のプリフェッチ動作であるように思われる(私は間違っていくつかのことをやっています)。競合するコンシューマの公正なディスパッチを希望する場合、接続先の最初のコンシューマは、キューコンシューマのデフォルトプリフェッチが1000であるため、より多くのメッセージをディスパッチすることが多いため、プリフェッチレベルを下げる必要があります。

ActiveMQコンシューマプリフェッチの詳細については、hereを参照してください。

+0

素晴らしい答え@Timは助けになりました。下のリンクも私を助けました。あなたの詳細な回答を本当にありがとうございます https://access.redhat.com/documentation/en-US/Fuse_ESB_Enterprise/7.1/html/ActiveMQ_Tuning_Guide/files/GenTuning-Consumer-Prefetch.html –

関連する問題