Как установить тайм-аут производителя очереди?
Вопрос
Я тестирую JMS WebLogic 10.3.1, но возникла проблема.
Мой этап тестирования:
- Запустить сервер WebLogic
- Запустить JMS-клиент
- Клиент отправляет объект в WebLogic JMS, и сервер получает объект.
- Остановить сервер WebLogic
- Отправьте еще один объект в WebLogic JMS.
Я ожидаю, что возникнет исключение, но ничего не появилось и программа зависла.Программа остановилась на:
sender.send(objMsg);
Я добавил некоторые настройки тайм-аута, но все еще не работает:
((WLProducerImpl) sender).setSendTimeout(1000);
((WLConnection) connection).setReconnectPolicy(JMSConstants.RECONNECT_POLICY_PRODUCER);
((WLConnection) connection).setReconnectBlockingMillis(1000);
Есть ли способ создать исключение в этом случае?Большое спасибо.
С уважением, Крис
Решение 3
Решение найдено:
Пожалуйста, добавьте эти 2 параметра:
-Dsun.net.client.defaultConnectTimeout=30000
-Dsun.net.client.defaultReadTimeout=30000
Другие советы
Вы можете попробовать указать тайм-аут в методе отправки.что-то похожее на следующее:sender.send(objMsg, Message.DEFAULT_DELIVERY_MODE, Message.DEFAULT_PRIORITY, 10000);
Я подозреваю, что транспорт WebLogic завис и не обнаружил, что сервер пропал, и отправка заблокирована в транспорте.Если WebLogic JMS не использует отдельный внутренний поток, тайм-аут не поможет.
ИМХО, служба поддержки WebLogic - единственные ребята, которые смогут вам помочь в этом вопросе (похоже на ошибку).