Почему мой мост сообщений JMS в WLS останавливается / запускается каждые 30 секунд - PullRequest
1 голос
/ 20 сентября 2011

У меня проблема с тем, что мой мост сообщений JMS, кажется, останавливается и перезапускается WLS каждые тридцать секунд.

Насколько я могу судить, мост на самом деле работает правильно, и консоль WLS сообщает об этом как "Активные, пересылающие сообщения". Насколько мне известно, обе очереди на концах моста работают должным образом.

Сообщения, которые появляются в моем журнале WLS каждые 30 секунд, выглядят так, как показано ниже. Эти шесть строк повторяются каждый раз.

####<2011-sep-20 kl 12:48 CEST> <Info> <MessagingBridge> <host> <server> <[ACTIVE] ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1316515696279> <BEA-200020> <Bridge "NameOfBridge" is stopped.> 
####<2011-sep-20 kl 12:48 CEST> <Info> <MessagingBridge> <host> <server> <[ACTIVE] ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1316515696279> <BEA-200033> <Bridge "NameOfBridge" is obtaining connections to the two adapters.> 
####<2011-sep-20 kl 12:48 CEST> <Info> <Common> <host> <server> <[ACTIVE] ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1316515696284> <BEA-000628> <Created "1" resources for pool "eis/jms/WLSConnectionFactoryJNDIXA", out of which "1" are available and "0" are unavailable.> 
####<2011-sep-20 kl 12:48 CEST> <Info> <Common> <host> <server> <[ACTIVE] ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1316515696340> <BEA-000628> <Created "1" resources for pool "eis/jms/WLSConnectionFactoryJNDIXA", out of which "1" are available and "0" are unavailable.> 
####<2011-sep-20 kl 12:48 CEST> <Info> <MessagingBridge> <host> <server> <[ACTIVE] ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1316515696340> <BEA-200032> <Bridge "NameOfBridge" is configured to disallow degradation of its quality of service in cases where the configured quality of service is unreachable.> 
####<2011-sep-20 kl 12:48 CEST> <Info> <MessagingBridge> <host> <server> <[ACTIVE] ExecuteThread: '20' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1316515696340> <BEA-200030> <Bridge "NameOfBridge" is configured to work in "Exactly-once" mode, and it is actually working in "Exactly-once" mode.> 

После просмотра конфигурации, единственное число, которое кажется связанным, это «Время ожидания транзакции», которое установлено на 30. Это будет означать, что мост открывает транзакцию напрямую, затем завершается неудачей (либо потому, что я настроил что-то неправильно, либо просто потому, что ничего не происходит), затем закрывает транзакцию / мост и перезапускает ее. Я бы не ожидал такого поведения, но, возможно, именно так оно и работает?

Я использую WLS 10.3.0.0.

Обновление: Соответствующая конфигурация с config.xml:

<messaging-bridge>
  <name>NameOfBridge</name>
  <target>servercluster</target>
  <source-destination>NameOfBridgeLocalDest</source-destination>
  <target-destination>NameOfBridgeRemoteDest</target-destination>
  <selector></selector>
  <quality-of-service>Exactly-once</quality-of-service>
  <started>true</started>
</messaging-bridge>
<jms-bridge-destination>
  <name>NameOfBridgeLocalDest</name>
  <adapter-jndi-name>eis.jms.WLSConnectionFactoryJNDIXA</adapter-jndi-name>
  <classpath></classpath>
  <connection-factory-jndi-name>JmsXA</connection-factory-jndi-name>
  <initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
  <connection-url></connection-url>
  <destination-jndi-name>queue/NameOfQueue</destination-jndi-name>
  <destination-type>Queue</destination-type>
</jms-bridge-destination>
<jms-bridge-destination>
  <name>NameOfBridgeRemoteDest</name>
  <adapter-jndi-name>eis.jms.WLSConnectionFactoryJNDIXA</adapter-jndi-name>
  <classpath></classpath>
  <connection-factory-jndi-name>ConnectionFactory</connection-factory-jndi-name>
  <initial-context-factory>org.jnp.interfaces.NamingContextFactory</initial-context-factory>
  <connection-url>jnp://server:port</connection-url>
  <destination-jndi-name>queue/NameOfQueue</destination-jndi-name>
  <destination-type>Queue</destination-type>
</jms-bridge-destination>

1 Ответ

2 голосов
/ 03 августа 2013

Согласно этому документу поддержки Oracle (требуется учетная запись Oracle), это нормальное поведение для асинхронных мостов JMS.

Проблема в документе описывается как:

С WebLogic Server 9.2 и более поздними версиями; в домене с настроенным JMS и настроенным JMS Messaging Bridge при ведении журнала для JMS Message Bridge происходит отключение и повторное подключение к источнику назначения каждые 30 секунд.

С точки зрения Oracle, это нормальное, ожидаемое поведение:

Это своего рода механизм опроса, который обычно происходит, когда в месте назначения источника нет сообщений и когда Мост сообщений находится в состоянии ожидания.

Поскольку это ожидается для асинхронных мостов, способ остановить это состоит в том, чтобы отключить опцию «Асинхронный режим включен» для моста сообщений JMS, что остановит его опрос.

...