ActiveMQ многократный потребительский вопрос - PullRequest
1 голос
/ 14 апреля 2011

У нас есть два экземпляра activemq, настроенные как кластер, и кластер из четырех экземпляров glassfish, которые должны быть подключены к ОДНОМУ activemq в любой момент времени.Если activemq01 недоступен, все четыре экземпляра Glassfish должны переключиться на activemq02.

Я заметил несколько раз, что по неизвестной причине один из (случайных) экземпляров Glassfish будет аварийно переключаться на activemq02, а оставшиеся три экземпляра все равно будут подключены к activemq01, даже если activemq01 НЕ был отключен, и всеЭкземпляры Glassfish должны были прослушивать activemq01.

Журналы не указывают ничего, что могло бы объяснить это поведение, все, что я могу видеть, если этот экземпляр Glassfish не может подключиться к activemq01 и failedover на activemq02.

Кто-нибудь испытывал такие же или похожие проблемы?Любая помощь / совет с благодарностью.

Вот мои конфиги activemq:

activemq01:

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

file: $ {activemq.base} /conf/credentials.properties

<managementContext>
  <managementContext connectorPort="1093" createConnector="true"/>
</managementContext>

<networkConnectors>
  <networkConnector name="amq-prod" uri="static://(tcp://127.0.0.1:61616,tcp://192.168.0.167:61616)" />
</networkConnectors>


<persistenceAdapter>
  <kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>

<plugins>
  <loggingBrokerPlugin logAll="false" logConnectionEvents="true"/>
</plugins>


<systemUsage>
  <systemUsage>
    <memoryUsage>
      <memoryUsage limit="2048 mb"/>
    </memoryUsage>
    <storeUsage>
      <storeUsage limit="2 gb" name="prod"/>
    </storeUsage>
    <tempUsage>
      <tempUsage limit="2000 mb"/>
    </tempUsage>
  </systemUsage>
</systemUsage>

<transportConnectors>
  <transportConnector name="openwire" uri="tcp://0.0.0.0:61616" updateClusterClients="true" />
</transportConnectors>

#

activeMQ02:

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://activemq.apache.org/schema/corehttp://activemq.apache.org/schema/core/activemq-core.xsd">

файл: $ {activemq.base} /conf/credentials.properties

<managementContext>
  <managementContext connectorPort="1093" createConnector="true"/>
</managementContext>

<networkConnectors>
  <networkConnector name="amq-prod" uri="static://(tcp://127.0.0.1:61616,tcp://192.168.0.166:61616)"  />
</networkConnectors>


<persistenceAdapter>
  <kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>

<systemUsage>
  <systemUsage>
    <memoryUsage>
      <memoryUsage limit="2048 mb"/>
    </memoryUsage>
    <storeUsage>
      <storeUsage limit="2 gb" name="prod"/>
    </storeUsage>
    <tempUsage>
      <tempUsage limit="2000 mb"/>
    </tempUsage>
  </systemUsage>
</systemUsage>

<transportConnectors>
  <transportConnector name="openwire" uri="tcp://0.0.0.0:61616" updateClusterClients="true" />
</transportConnectors>

версия activeMQ - 5.4.1

1 Ответ

1 голос
/ 14 апреля 2011

Ваш тег networkConnector определен так:

acticemq01 config:

 <networkConnector
         name="amq1-nc" 
         uri="static:(failover:(tcp://192.168.0.167:61616))" 
         networkTTL="2" 
         duplex="true"
         dynamicOnly="true" 
  />

acticemq02 config:

 <networkConnector
         name="amq2-nc" 
         uri="static:(failover:(tcp://192.168.0.166:61616))" 
         networkTTL="2" 
         duplex="true"
         dynamicOnly="true" 
  />

А у ваших потребителей используйте URL-адрес JMS-провайдера , например:

failover:(tcp://192.168.0.166:61616,tcp://192.168.0.167:61616)?randomize=false&timeout=5000

Выше failover URL всегда будет подключаться к брокеру acticemq01, если он доступен. Если acticemq01 выходит из строя, он автоматически переключается на брокер acticemq02. Кроме того, timeout = 5000 будет гарантировать, что потребитель сбросит ошибку в течение 5 секунд при попытке подключиться к любому из 2 брокеров.

...