問題タブ [netmq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
6395 参照

c# - 接続を待つ適切な方法は何ですか?

NetMQ を使用して 2 つのアプリケーション間で単純なメッセージ パッシングを実装しようとしています (達成しようとしていることのもう少し詳しい説明を以下に示します)。
少し試行錯誤した後、Connect/Bind 呼び出しの直後にメッセージを送受信できないことがわかりました。これは、メッセージはブロックされておらず、接続がまだ確立されていなくても実際に返されるためです。
今のところ、Thread.Sleep() を使用してこれを解決しましたが、これは味が悪く、実稼働システムには絶対に適していません。

問題は、NetMQ/ZeroMQ でそれを行うにはどうすればよいかということです。

クライアントの例:

サーバーの例:

私が達成しようとしていることの説明:

クライアント- 単一のサーバーにメッセージを送信します。サーバーが使用できない場合、クライアントはメッセージをブロックしたり破棄したりしてはなりません。クライアントはいつでもオフライン/オンラインになることができます。

サーバー- 単一のクライアントからメッセージを受信します。サーバーは、メッセージが受信されるまでブロックします。サーバーはメッセージの長い処理を行う必要があり、処理中に他のメッセージを失うべきではありません。サーバーはいつでもオフライン/オンラインになることができます。

0 投票する
1 に答える
1415 参照

zeromq - 0mq/NetMQ PUB/SUB がすべてのメッセージを配信しない

目標: 1 回の反復ですべてのサブスクライバーに多くのメッセージを送信します。40k-100k のメッセージがあります。PUB/SUBソケットタイプを使い始めました。

問題: サブスクライバーで受信されたメッセージの数が、パブリッシャーで送信されたメッセージの数よりも少なくなっています。各メッセージの送信後に Thread.Sleep(1) を追加すると、すべてのメッセージが配信されますが、配信する必要があるメッセージの数が多いため、40 ~ 100 秒の遅延が発生します。これは受け入れられません。

以下のコードは、アルファ ビルドである NetMQ (3.0.0) にありますが、libzmq 3.2.4 (安定版) を使用して c で同じコードを実装したため、これは単なる例です。そして、シンプトムは同じです。

パブリッシャー/サーバー側:

サブスクライバー/クライアント側:

0 投票する
2 に答える
1113 参照

c# - ZeroMQ / NetMQ - 「クライアント」の送信元ポートを定義することは可能ですか?

私は ZeroMq と NetMQ に基づく通信を使用しています (両方のプロジェクトで同じ問題)

ファイアウォールの背後でアプリケーションを実行していますが、

サーバー側では、受信トラフィック用に開くポートを簡単に定義できます。

ただし、クライアント側では、ターゲット(別名サーバー)のアドレスとポートのみを指定できるようです。

クライアント アプリでアウトバウンド トラフィックに使用するポートを定義することは可能ですか。

たとえば(NetMQで)

単純な通信シナリオでは、サーバーとクライアントがあります

サーバーはマシン A (192.168.1.10) で実行されており、ポート 5555 でリッスンしています。

クライアントはマシン B (192.168.1.9) で実行されており、サーバー (A) への通信を開始しています。

クライアントの通信情報を見ると、システムがポート XXXXX (たとえば 51234) を割り当て、そのアウトバウンドが 192.168.1.10:5555 に割り当てられていることがわかります。

ほとんどの場合、XXXXX ポートはシステムによって割り当てられます (空きポート) が、いくつかの極端なケースでは、XXXXX ポートは特定のポートである必要があります (極端なセキュリティ環境のため)。

0 投票する
1 に答える
659 参照

zeromq - ZeroMq ソケットの設計

さまざまなエージェントから1 つのプロセスに大量のショート メッセージを送信する必要があります。

10 エージェントからの約 10-15 の 2-3 Kb メッセージ/秒。

一部のエージェントは同じマシンで実行されますが、他のエージェントは同じ VLAN 内の別のマシンで実行されます。

要件は、メッセージの生成からメイン サービス内での処理の開始までの最小レイテンシです。50msat peaksの最大値は許容されます (ただし、望ましくありません)。

トランスポートには NetMq を使用する予定です。

Q1:ソケットの種類とプロトコルの最適な構成は何ですか?

Q2: / セットアップ、/ セットアップ、または /セットアップのどちらDEALERを使用した方がよいですか?ROUTERPUSHPULLPUSHROUTER

Q3: IPC同じマシン上のエージェントにソケットを使用する必要がTCPありますか、それとも両方のタイプのエージェントに対して十分に高速ですか?

Q4:TCPIPCソケットを同じコンテキスト内に作成する必要がありますか?それとも別のコンテキストを作成する必要がありますか?

0 投票する
2 に答える
939 参照

c# - NetMQ - Wcf サービスから Windows サービスへの通信?

0 投票する
0 に答える
395 参照

azure - Azure ワーカー ロールの Netmq は開発マシンでは機能しますが、Azure では機能しません

zeromq パブリッシャー (ワーカーで NetMQ を使用) にサブスクライブし、メッセージを Azure テーブルに格納する単純な Azure ワーカー ロールを構築しています。

開発マシンでワーカーを実行すると、すべて正常に動作します。メッセージが入ってきて、テーブルに書き込まれます。

ただし、ワーカーを Azure にデプロイすると、何かが機能しなくなります。ワーカーにアタッチすると、subscriberSocket.Receive() 呼び出しのブロックでスタックしていることがわかります。ワーカーの観点からは、サブスクライブしているソケットにメッセージが表示されることはありません。

ワーカーに RDP を接続し、netstat を使用して、サブスクライブしているソケットからリモート パブリッシャへの発信接続が確立されていることを確認できるため、ファイアウォールの問題のようには見えません。

ログ/診断情報から、すべてが正常であるように見えますが、メッセージがまったく受信されていないだけです。

見逃した Azure 構成はありますか? 発信接続を許可するが、データの通過を妨げるものはありますか?

ワーカー コードの関連部分:

0 投票する
1 に答える
238 参照

poller - 利用可能なメッセージがあるにもかかわらず、Socket.ReceiveReady が起動されない

私は NetMQ 3.3.0.11 の調査を開始しましたが、Poller の使用に関する問題に遭遇しました。

私は、ポーラーが約 1 秒間ポーリングしてから停止し、1 秒間のポーリングを再開する前に何か他のことを実行できるようにしようとしています。

次のコードがあります。

私が直面している問題は、メッセージを受け取る準備ができていても、そのポーリング期間中に Client.ReceiveReady イベントが発生しないことです。そして、InvalidOperationException格言Poller is startedが上げられます。

私が間違っていることは何か分かりますか?