我正在使用Jboss-fuse-6.3,外部Apache-activemq-5.15.2。 我已经将50个消费者绑定在一个队列中,并且在Active Manager门户和#34; Active Consumers"页面,我注意到所有50个消费者都是绑定,但队列上的消息分发是不一样的。
附上屏幕截图。在会话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"/>
答案 0 :(得分:3)
这似乎是JMS客户端的正常预取行为。如果您希望竞争消费者进行公平调度,那么您需要降低预取级别,因为连接的第一个使用者通常会分配更多的消息,因为队列使用者的默认预取是1000。
详细了解ActiveMQ消费者预取here。