.NET EMS API основан на JMS .В JMS объекты Connection и Session указываются как поточно-ориентированные и могут быть повторно использованы в программе.Вы совершенно правы в том, что объект Connection просто представляет сетевой канал к серверу EMS.Руководство пользователя EMS гласит:
Соединение является довольно тяжелым объектом, поэтому большинство клиентов создают соединение один раз и оставляют его открытым до выхода из клиента.Ваше приложение может создавать несколько соединений, если необходимо.
А в отношении сессий:
Сеанс - это однопоточный контекст для создания или потребления сообщений.Вы создаете Производители сообщений или Получатели сообщений, используя объекты Session.
По сути, если вам не нужны очень большие тома и вы сталкиваетесь с ограничениями производительности, совершенно безопасно использовать только одно соединение в вашем приложении.Сеанс контролирует семантику транзакций / подтверждений любых производителей или потребителей, созданных внутри, но снова безопасен для повторного использования.Я бы, вероятно, использовал отдельные сеансы для модулей, существующих в приложении с различными жизненными циклами (представьте себе отдельные модули развертывания на сервере приложений).
В вашей установке сервера EMS будет содержаться каталог примеров с различным кодом (что-то вроде C: \ TIBCO \ \ 5.0 Эмс \ Samples \ * CS 1018 *).Код в csTopicSubscriber.cs показывает, как написать однопоточный потребитель тем.Не существует примера многопоточного потребителя тем, но csMsgConsumerPerf.cs демонстрирует, как это сделать с очередями.
Обязательно очистите все объекты, которые вы создаете, после того, как вы поработаете с ними -например, закройте объект потребителя темы, сеанс и соединение, когда вы закончите.Утечка ручек без их закрытия может привести к непредсказуемому поведению в сочетании с настройками предварительной выборки и отказоустойчивого повторного подключения.