2

ZeroMQ REP ノードへの REQ 呼び出しを必要とする ASP.NET サービス (単純な aspx) を構築しています。

したがって、REQ/REP パターンを使用する必要がありますが、ASP.NET パイプラインで ZeroMQ コンテキストを初期化する適切な方法がわかりません。

さらに、異なる ASP.NET スレッド間で 1 つの接続を共有できますか?

編集: いくつかの調査の結果、 sincronizationを処理するため、専用スレッド内のinproc ルーターが適しているように見えます。

しかし、さらに疑問が生じます。

  1. そのようなインプロク ノードの反対側は DEALER である必要がありますか? その場合、REQ ノードに接続する必要がありますか? それとも、tcp ポートにバインドする必要があり、それに接続するように REP サーバー ノードをコーディングする必要があります (サービスを公開する別のサーバーを使用できるため、後者は少し面倒です)。
  2. 別の方法として、一方の端で ROUTER ソケットにバインドされ、もう一方の端で REQ に接続する inproc ノードを構築することは正しいですか? もしそうなら、ノードが各メッセージの手動エンベロープを処理して、正しい要求元スレッドに応答を返すことができるようにノードをコーディングする必要がありますか?
  3. Application_Start は、そのようなルーターを処理するスレッドを初期化するための正しいパイプライン ポイントですか?

現時点では、REQ サーバーに接続する ROUTER/DEALER インプロセス ノードが最適なオプションのように見えますが、DEALER ソケットから接続できるかどうかはわかりません。しかし、これはまだ憶測に過ぎず、完全に間違っている可能性があります。

4

1 に答える 1

0

zmq_socket マニュアルには次のように記載されています。

ØMQ ソケットはスレッドセーフではありません。アプリケーションは、「フル フェンス」メモリ バリアを使用してあるスレッドから別のスレッドにソケットを移行した後を除き、複数のスレッドからソケットを使用してはなりません。

于 2013-03-20T10:34:53.120 に答える