2017-12-19 5 views
0

Ich verwende Jboss-fuse-6.3, mit externen Apache-activemq-5.15.2. Ich habe 50 Benutzer in einer Warteschlange binden, und auf Active MQ-Portal auf der Seite "Active Consumers" habe ich festgestellt, dass alle 50 Verbraucher binden, aber die Verteilung der Nachrichten in Warteschlangen sind nicht identisch.Abnormales Verhalten von Apache ActiveMQ auf mehreren Consumer

Screenshot ist beigefügt. Bei Sitzungs-ID "1" Die Anzahl der eingereihten Nachrichten beträgt etwa 1010, aber bei anderen Benutzersitzungen sind Nachrichten mit eingereihten Nachrichten nur 10.

ImE-Warteschlange Nachrichten von Apache Camel Route. Unten ist mein Blueprint xml (mache ich etwas, was falsch)

<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

Antwort

3

Dies scheint normal Prefetching Verhalten seitens des JMS-Client zu sein. Wenn Sie konkurrierende Konsumenten mit einer fairen Verteilung wünschen, müssen Sie die Vorabrufstufe senken, da der erste Verbraucher, der eine Verbindung herstellt, oft eine höhere Anzahl an Nachrichten erhält, da der Standard-Vorabruf für einen Warteschlangen-Verbraucher 1000 ist.

Lesen Sie mehr über ActiveMQ Verbraucher Prefetch here.

+0

große Antwort @tim half viel. Der folgende Link hat mir auch geholfen. Schätzen Sie Ihre ausführliche Antwort https://access.redhat.com/documentation/en-US/Fuse_ESB_Enterprise/7.1/html/ActiveMQ_Tuning_Guide/files/GenTuning-Consumer-Prefetch.html –

Verwandte Themen