Я могу по крайней мере ответить # 1 выше.
Если вы включили Tibems.SetExceptionOnFTSwitch (true); и настроив обработчик исключений для захвата сообщений, которые сервер отправляет клиенту, вы увидите следующее:
Для односерверных, отказоустойчивых сбоев соединения:
«Соединение разорвано».
Для отказоустойчивых соединений:
«Соединение выполнило отказоустойчивое переключение на»
Если вы попытаетесь опубликовать, когда соединение не работает, выдается исключение TIBCO.EMS.IllegalStateException с сообщением «Производитель закрыт».
для # 2 выше, я думаю, что ответ заключается в том, чтобы позволить библиотеке EMS обрабатывать как можно больше. Как только мы получили работоспособность функции переподключения EMS, она изящно пыталась переподключиться, пока сервер снова не стал доступен, и после переподключения у него никогда не возникало проблем. Единственная ошибка, вероятно, если вы попытаетесь опубликовать сообщение до того, как соединение с ems вернется. Вот где появляется обработчик исключений. Получив уведомление о переходе в режим отработки отказа, вы можете настроить обработку исключений на стороне издателя, чтобы подавлять ошибку до тех пор, пока соединение не вернется. Я не знаю, что вы скажете, когда исчерпали все попытки переподключения.
В любом случае, похоже, что наши два мира тесно связаны, когда дело доходит до EMS - надеюсь, что наши выводы (основанные на ваших комментариях к моим вопросам) помогут вам.