在ActiveMQ中更改预取值的位置在哪里?

12

我阅读了与预取缓冲器相关的文档。据我所知,如果我将Prefetch值分配给消费者A,则Activemq每次向A推送1条消息。一旦A向activemq发送确认,activemq才会将另一条消息推送到A。

我的疑问是,在哪里需要为消费者分配预取值。

我需要在消费者程序中分配预取值吗?如果是,请用简单的代码进行解释。

谢谢。

2个回答

12
根据 ActiveMQ 手册
ActiveMQ 对每个消费者在任何时间点流式传输的消息数量使用预取限制(prefetch limit)。一旦达到预取限制,直到消费者开始发送确认消息(表示已处理消息),否则不会向消费者分派更多的消息。实际的预取限制值可以针对每个消费者进行指定。 要更改所有消费者类型的预取大小,您需要使用类似于以下连接 URI:
tcp://localhost:61616?jms.prefetchPolicy.all=50

要仅更改队列消费者类型的预取大小,您可以使用类似于以下连接URI:

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

使用目标选项,还可以按每个消费者的基础进行配置。

queue = new ActiveMQQueue("TEST.QUEUE?consumer.prefetchSize=10");
consumer = session.createConsumer(queue);

谢谢你的回答。从昨天开始,我一直在尝试一个任务,我在以下链接中清楚地解释了它:(http://stackoverflow.com/questions/18630657/how-to-push-messages-from-activemq-to-consumer)。你能帮我检查一下吗? - Hanumath

3

虽然这是一个旧的线程。

如果你正在使用Spring与ActiveMQ集成:

<!-- A connection to ActiveMQ -->
    <bean id="orderStatusAmqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL">
         <value>tcp://localhost:61616</value>
        </property>
        <property name="prefetchPolicy" ref="prefetchPolicy" /> 
         <property name="optimizeAcknowledge" value="true" /> 
         <property name="useAsyncSend" value="true" />
         <property name="trustedPackages">
        <list>
            <value>com.myapp.tradingplatform</value>
            <value>java</value>
        </list>
    </property>
    </bean>

<bean id="prefetchPolicy" class="org.apache.activemq.ActiveMQPrefetchPolicy">
    <property name="queuePrefetch" value="1000" />
</bean>
    <!-- A cached connection to wrap the ActiveMQ connection -->
    <bean id="orderStatusCachedConnectionFactory"
        class="org.springframework.jms.connection.CachingConnectionFactory">
        <property name="targetConnectionFactory">
            <ref bean="orderStatusAmqConnectionFactory" />
        </property>
        <property name="sessionCacheSize">
            <value>100</value>
        </property>
    </bean>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接