2017-12-19 37 views
0

외부 Apache-activemq-5.15.2와 함께 Jboss-fuse-6.3을 사용하고 있습니다. 대기열에 50 명의 고객을 바인드했으며 "활성 고객"페이지의 활성 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

위대한 답장 @ 팀이 많은 도움이되었습니다. 아래의 링크도 나를 도왔다. 자세한 답변을 주셔서 감사합니다 https://access.redhat.com/documentation/en-US/Fuse_ESB_Enterprise/7.1/html/ActiveMQ_Tuning_Guide/files/GenTuning-Consumer-Prefetch.html –