.NET EMS API はJMSに基づいています。JMS では、Connection オブジェクトと Session オブジェクトはスレッドセーフであると指定されており、プログラム内で再利用できます。Connection オブジェクトが単に EMS サーバーへのネットワーク パイプを表しているという点で、あなたの言うとおりです。EMS ユーザーズ ガイドには、次のように記載されています。
接続はかなり重いオブジェクトであるため、ほとんどのクライアントは接続を一度作成すると、クライアントが終了するまで開いたままにします。必要に応じて、アプリケーションで複数の接続を作成できます。
そしてセッションに関して:
セッションは、メッセージを生成または消費するためのシングルスレッド コンテキストです。Session オブジェクトを使用してメッセージ プロデューサまたはメッセージ コンシューマを作成します。
基本的に、非常に大きなボリュームが必要で、パフォーマンスの制限にぶつからない限り、アプリケーションで 1 つの接続のみを使用しても完全に安全です。セッションは、内部で作成されたプロデューサーまたはコンシューマーのトランザクション/確認セマンティクスを制御しますが、再利用しても安全です。アプリケーション内に異なるライフサイクルを持つモジュールが存在する場合は、おそらく個別のセッションを使用します (アプリケーション サーバー内の個別のデプロイメント ユニットを考えてください)。
EMS サーバーのインストールには、さまざまなコード ( C:\tibco\ems\5.0\samples\csなど) を含むサンプル ディレクトリが含まれます。csTopicSubscriber.csのコードは、シングルスレッドのトピック コンシューマーを作成する方法を示しています。マルチスレッド トピック コンシューマーの例はありませんが、csMsgConsumerPerf.csはキューでそれを行う方法を示しています。
作成したオブジェクトは、作業が終わったら必ずクリーンアップしてください。たとえば、完了したら、トピック コンシューマ オブジェクト、セッション、および接続を閉じます。ハンドルを閉じずにリークすると、プリフェッチおよびフォールト トレラントな再接続設定と組み合わせると、予期しない動作が発生する可能性があります。