Я работаю над клиентом JMS для WebLogic 11g (WebLogic Server 10.3.6.0).Клиент основан на библиотеке wlthint3client.jar
.Клиент использует асинхронный API (слушатели) для чтения сообщений из очереди JMS.Клиент является многопоточным и использует несколько параллельных потребителей JMS.
Сервер Weblogic JMS настроен на тайм-аут транзакции JMS, равный 10 минутам, но у меня возникают проблемы с фиксацией транзакций, длительность которых превышает 6 минут.Это происходит только тогда, когда одновременно происходит много длинных транзакций.
В таких случаях происходит сбой фиксации со следующим исключением:
weblogic.jms.common.JMSException: weblogic.messaging.dispatcher.DispatcherException: java.rmi.RemoteException: Could not establish a connection with -6273788781435586093S:host:[7001,7001,-1,-1,-1,-1,-1]:domain:server, java.io.IOException: Bootstrap request to JVMID -6273788781435586093S:host:[7001,7001,-1,-1,-1,-1,-1]:domain:server got an error or timed out; nested exception is:
java.io.IOException: Bootstrap request to JVMID -6273788781435586093S:host:[7001,7001,-1,-1,-1,-1,-1]:domain:server got an error or timed out; nested exception is:
java.rmi.ConnectException: Could not establish a connection with -6273788781435586093S:host:[7001,7001,-1,-1,-1,-1,-1]:domain:server, java.io.IOException: Bootstrap request to JVMID -6273788781435586093S:host:[7001,7001,-1,-1,-1,-1,-1]:domain:server got an error or timed out; nested exception is:
java.io.IOException: Bootstrap request to JVMID -6273788781435586093S:host:[7001,7001,-1,-1,-1,-1,-1]:domain:server got an error or timed out
at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:116)
at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSyncNoTran(DispatcherAdapter.java:61)
at weblogic.jms.client.JMSSession.commit(JMSSession.java:1224)
at weblogic.jms.client.JMSSession.commit(JMSSession.java:1198)
at weblogic.jms.client.WLSessionImpl.commit(WLSessionImpl.java:108)
Некоторые другие наблюдения:
- Кажется, мой клиент может обрабатывать только 5 сообщений одновременно.У меня больше потребителей, скажем, 10, у меня больше доступных сообщений в очереди, но параллельно обрабатываются только 5.
- Если я настраиваю клиента на использование <5 потребителей, то проблема не возникает.</li>
- Если имеется <5 параллельных длинных транзакций - проблема не возникает </li>