問題タブ [jeromq]
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.
java - zeromq ポーリング スレッドを正常に中断する
jeromq 0.3.2 を使用して Java で記述されたマルチスレッド アプリケーションがあります。Windows サービスとして実行できるように Tanuki サービス ラッパーに組み込む作業を行っていますが、スレッドをきれいに停止するのに問題があります。プロキシのメソッドは、ガイドのSimple Pirateパターンrun()
のバリエーションであり、次のようになります。
制御ラッパーがアプリケーションを停止したい場合、このループをきれいに終了するにはどうすればよいですか?
現在接続されているクライアントがない場合、ループは への呼び出しでブロックされるpoller.poll()
ため、ラッパーがinterrupt()
スレッドで呼び出しても無視されます。現在メッセージを送信しているクライアントがある場合、 を呼び出すinterrupt()
と、poller.poll()
メソッドはzmq.ZError$IOException: java.nio.channels.ClosedByInterruptException
私も使用しようとしました:
しかし、 への呼び出しZMQ.poll
は同じ動作を示します。次の 2 つの方法があります。
- タイムアウトをオンに設定し、メソッドの内容を IOException の try/catch に
ZMQ.poll
ラップします。run()
processFrontend
Runnable にメソッドを追加します。このメソッドはフロントエンドに接続し、読み込まれてコードがループから抜け出す特別なメッセージを送信します。
最初のものは少し汚れているように見え、2番目のものは少しもろいように感じます. 私が考慮すべき他のアプローチはありますか?スレッド割り込みによりきれいに反応する、使用できる他のポーリング方法はありますか?
java - JeroMQ がプラットフォーム間で機能しない
ZMQ v 3.2.0 のネイティブ C ビルドを実行するデバイスを、pub/sub ZMQ ソケットを使用して JeroMQ (純粋な Java impl) でビルドされた Java アプリケーションと連携させようとしています。ただし、JeroMQ は、メッセージ ペイロードと C 実装の前に異なるフラグ構成を使用しているようです。IIRC、JeroMQ は v 3.2.2 との互換性を意図しているため、これが JeroMQ ポートのバグかどうかはわかりません
私の Java テスト コードは、psenvpub の例に似ています。
ネイティブ C エンドポイントに perl スクリプトを使用しています。
サブスクライバーが最初のメッセージを受信すると、libzmq ソース コードのアサート エラーが原因でクラッシュします。
それは次のとおりです。
送信されたパケットの Wireshark トレースは、ハンドシェイク シーケンスとフラグが JeroMQ pub/sub とネイティブ C pub/sub で異なることを示しています。JeroMQ またはネイティブ C libzmq の両方を使用するエンドポイントを使用しても、問題は発生しませんでした。
java - jeroMQ で PUSH
zmq.jar に何か問題があると思うので、jeroMQ を試してみましたが、同じ問題があります。
これは私の方法です:
私はPULLであるPythonにスクリプトを持っています.Pythonでもプッシュスクリプトを試すと、すべてを受け取ります。
だから私の問題はJavaにあります。
ログに最初の行 ("send") が表示されますが、スクリプトで何も受信していません。
何を変更すればよいですか?
zeromq - 一定期間後にjeromqプッシュ送信が失敗した理由
jeromq(0.3.2) でプッシュ/プル パターンを使用しようとしています。最初は、うまく機能します。しかし、一定期間後。プッシュ側はメッセージを送信せず、そこでブロックされます。どうしてか分かりません。sendTimeout パラメータを設定し、zmq ソケット エラー番号を出力します。35です。何か気づいていないことはありますか?または他の提案?
ありがとう!
プッシュ側のコード:
====
プッシュ側を監視する監視スレッドを 1 つ追加します。すると、ZMQ_EVENT_DISCONNECTED イベントが見つかりました。それはどういう意味ですか?プル側のコードに問題がありますか?
zeromq - スレッドが ZMQ.context(1) を超えて進まない
サーバーがあり、稼働時間に関する定期的な通知をクライアントに公開している単純な pub sub の例を実装しようとしています。
これは Windows サービスの一部として実行されています - InnoSetup と launch4j と Apache procrun/prunsrv にバンドルされています。
スレッドは、コンテキストの作成を超えません。何がうまくいかないのですか?