我閱讀了關於prefetch buffer
的文檔。根據我的理解如果我將值012設置爲Prefetch
值消息A. Activemq每次將1個消息推送給A .once A將確認發送給activemq, activemq將另一個消息推送到A.在哪裏更改activemq中的預取值
我的疑問是,我需要爲消費者分配預取值。
我需要在消費程序中分配預取值。如果它是正確的,你能用簡單的代碼來解釋嗎?
謝謝。
我閱讀了關於prefetch buffer
的文檔。根據我的理解如果我將值012設置爲Prefetch
值消息A. Activemq每次將1個消息推送給A .once A將確認發送給activemq, activemq將另一個消息推送到A.在哪裏更改activemq中的預取值
我的疑問是,我需要爲消費者分配預取值。
我需要在消費程序中分配預取值。如果它是正確的,你能用簡單的代碼來解釋嗎?
謝謝。
由於每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);
雖然它是舊線程。
如果使用的是春天和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>
謝謝您的回答。從昨天開始,我嘗試了一個清晰的任務,我在下面的[鏈接]中解釋(http://stackoverflow.com/questions/18630657/how-to-push-messages-from-activemq-to-consumer)。你能檢查一次嗎? – Hanumath
確定我會檢查該線程。 – anubhava