Camel Apache ActiveMQ在多个消费者上的异常行为

vfwfrxfs  于 8个月前  发布在  Apache
关注(0)|答案(1)|浏览(97)

我使用的是Jboss-fuse-6.3,外部是Apache-activemq-5.15.2。我在一个队列上绑定了50个消费者,在Active MQ门户的“Active Consumers”页面上,我注意到所有50个消费者都是绑定的,但队列上的消息分发是不一样的。
附加屏幕截图。在会话ID“1”上,排队消息计数约为1010,但在其他消费者会话上,排队消息仅为10。
我从Apache Camel 路由排队消息。下面是我的蓝图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"/>

字符串
x1c 0d1x的数据

55ooxyrt

55ooxyrt1#

这似乎是JMS客户端的正常预取行为。如果您希望竞争的消费者具有公平的分派,那么您需要降低预取级别,因为第一个连接的消费者通常会收到更多的分派消息,因为队列消费者的默认预取是1000。
客户端URI可以控制预取值:

tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=1

字符串
阅读更多关于ActiveMQ消费者预取here的信息。

相关问题