2013-09-05 18 views
5

我閱讀了關於prefetch buffer的文檔。根據我的理解如果我將值012設置爲Prefetch值消息A. Activemq每次將1個消息推送給A .once A將確認發送給activemq, activemq將另一個消息推送到A.在哪裏更改activemq中的預取值

我的疑問是,我需要爲消費者分配預取值。

我需要在消費程序中分配預取值。如果它是正確的,你能用簡單的代碼來解釋嗎?

謝謝。

回答

9

由於每ActiveMQ manual

ActiveMQ的使用上有多少信息可以傳輸到 消費者在任何時間點預取限制。達到預取限制後,在消費者 開始發回消息確認(以指示已處理消息 )之前,不會再有消息被分派給消費者。實際預取限制值可以是以每個消費者爲基礎指定的 。

要更改預取大小爲所有消費者類型,你會使用類似的連接URI:

tcp://localhost:61616?jms.prefetchPolicy.all=50 

要更改預取大小隻是排隊的消費者類型你可以使用一個連接URI類似於:

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

它也可以在每CON配置使用「目的地選項

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

謝謝您的回答。從昨天開始,我嘗試了一個清晰的任務,我在下面的[鏈接]中解釋(http://stackoverflow.com/questions/18630657/how-to-push-messages-from-activemq-to-consumer)。你能檢查一次嗎? – Hanumath

+0

確定我會檢查該線程。 – anubhava

0

雖然它是舊線程。

如果使用的是春天和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> 
相關問題