2017-08-15 200 views
1

我想使用靜態主機在我的雙節點羣集上啓用消息重新分配。但它似乎並不奏效。ArtemisMQ 2.x上的消息重新分配不起作用

1)我有10個生產者寫入隊列「MyTestQueue」節點1(但沒有消費者)。
2)我在節點2(但沒有生產者)上有1個消費者使用來自節點2的消息。

我期望節點1將消息重新分配給消費者存在的節點2,但它不會。節點1上的消息數量仍然等於發送到節點1的消息數量。

我在broker.xml中擁有以下配置,它將forward-when-no-consumers設置爲false。 我也設置redistribution-delay值爲零。

<jms xmlns="urn:activemq:jms"> 
    <queue name="MyTestQueue"/> 
</jms> 
... 
<cluster-connections> 
     <cluster-connection name="my-test-cluster"> 
      <address>jms</address> 
      <connector-ref>server0-connector</connector-ref> 
      <retry-interval>500</retry-interval> 
      <use-duplicate-detection>true</use-duplicate-detection> 
      <forward-when-no-consumers>false</forward-when-no-consumers> 
      <message-load-balancing>ON_DEMAND</message-load-balancing> 
      <max-hops>1</max-hops> 
      <confirmation-window-size>1024</confirmation-window-size> 
      <static-connectors> 
       <connector-ref>server1-connector</connector-ref> 
      </static-connectors> 
     </cluster-connection> 
    </cluster-connections> 
    ... 
    <address-settings> 
     <address-setting match="#"> 
      <redelivery-delay>5000</redelivery-delay> 
      <redelivery-delay-multiplier>3</redelivery-delay-multiplier> 
      <max-redelivery-delay>10000</max-redelivery-delay> 
      <max-delivery-attempts>10</max-delivery-attempts> 
      <max-size-bytes>104857600</max-size-bytes> 
      <page-size-bytes>10485760</page-size-bytes> 
      <address-full-policy>PAGE</address-full-policy> 
      <redistribution-delay>0</redistribution-delay> 
     </address-setting> 
    </address-settings> 

如何讓消息重新分配工作?

回答

2

這可能與已知的issue有關。如果代理不包含應用程序屬性字段,則代理無法負載均衡消息。

請問您可以試試嗎?

+0

謝謝!你能否指定我需要設置哪種應用程序屬性以及在哪裏?在客戶端?在broker.xml中? – Rox

+0

@Rox在發送的消息上設置一些應用程序屬性。任何事情都應該有效。不要在沒有任何應用程序屬性的情況下完全發送消息。 – user7610

+0

@ user7610:哦,我明白了!我將嘗試在消息上設置一個字符串屬性並查看它是否有效。結果會回到這裏。 – Rox

1

的東西夫婦...

  • 您正在使用什麼版本的阿爾忒彌斯?你有沒有試過用2.2.0版本來重現這一點?
  • 您使用的是哪種客戶端(例如JMS,AMQP,STOMP等)?
  • 您是否擁有可複製的測試用例(例如Artemis附帶的其中一個示例的修改版本)?
  • 配置元素< forward-when-no-consumers>在Artemis中無效(雖然它在HornetQ的舊版本中)。