問題タブ [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 - Jeromq の最大ソケット オープンの問題
私はファイルを受け取り、それをCプログラムに送るserver
Javaを持っています。先週まで、いくつかのjsonでテストしました。今まで大量のjsonを送信していませんでしたが、送信する別のコンポーネントがあります。json
jeromq
Glassfish
今まで見たことのないエラーでハングアップしました。何かのようなもの:
そしてZMQに関連する何か:
zmqの何かに関連している可能性があると思います。サーバーがいくつかの json を受信しただけでは、ハングすることはありません。
Javaコードを貼り付けます。何か間違っているか、何かを閉じていない可能性があります。
まず、zmq を送信するスレッドを作成します。
バックグラウンドで実行する私のクラス:
}
zmq を送信するメソッド:
大丈夫だと思いますが、何かに関連して失敗しているので、ZMQ
大丈夫かどうかわかりません。
java - わずかな結果を生み出すZeroMQ
ZeroMQ をテストしていますが、1 秒あたり約 1227 ~ 1276 のメッセージしか取得できません。しかし、これらはこの量の 100 倍を超えるはずだと読んだことがあります。
私は何を間違っていますか?これを修正するために指定できる構成はありますか?
次の機能を使用しています。
プログラムの実行時間を制限するために使用されるタイマー クラス:
編集:私はjeroMQを使用しています
java - ZeroMQ: メッセージが消える
サーバーとして機能するJavaアプリケーションがあります。クライアント アプリケーション (C# で記述) は、ZeroMQ を使用して通信しています。私たちは (ほとんど) Lazy Pirate パターンに従っています。
サーバーには、次のように実装されたルーター ソケットがあります (JeroMQ を使用)。
クライアントは次のように接続してメッセージを送信します。
複数のクライアントが同時にメッセージを送信すると、メッセージが失われるという経験がありました。単一のクライアントでは、問題はないようです。
これは、複数のクライアントと単一のサーバーのセットアップに対して正しい方法で実装されていますか?
更新: この動作を示すクライアントとサーバーの例:
サーバ:
クライアント:
サーバーと 1 つのクライアントを実行すると、100 件のメッセージがすべて到着することがわかります。たとえば、5 つのクライアントを同時に実行すると、500 通のメッセージではなく、約 200 -> 300 のメッセージしか到着しません。これは単なる理論ですが、メッセージを簡単に受信します。
java - ZeroMQ (JeroMQ) の新しいスレッド内からのアサーション エラー ポーリング
次のようなコードがあります。
直接呼び出すと正常に動作します:
ただし、新しいスレッドで実行すると、アサーション エラーで定期的に失敗します。
取得したスタック トレースを以下に示します。
JeroMQ 0.3.5-SNAPSHOT で Java 8 を使用しています
zeromq - JeroMQ: 接続が確実に回復しない
2 つのアプリケーションがあり、双方向に非同期でメッセージを送信しています。両側で ZMQ.DEALER タイプのソケットを使用しています。接続ステータスは、さらにハートビートによって制御されます。
接続の問題(回線障害または一方のアプリケーションの再起動)の後、接続を確実に回復するのに問題があります。サーバー側 (bind() を実行する側) でアプリケーションを再起動すると、クライアント側は常に正常に再接続するとは限らず、特にローカル バッファーが HWM 制限に達した場合に再起動する必要があります。
ハートビート障害が発生した場合、または send() が false を返した場合に完全な ZMQ.Context をリセットする以外に、接続回復を信頼できるものにする他の方法は見つかりませんでした。次に、Context.term() を呼び出して、Context と Socket を再度作成します。これは私のテストではうまくいくようでした。しかし今、Context.term() 内で時折発生するハングアップを観察しましたが、これはまれであり、再現が困難です。Context の作成は、アプリケーションの起動時に一度だけ行う必要があることはわかっていますが、前述のように、切断された接続を再確立する他の方法は見つかりませんでした。
JeroMQ 0.3.4 を使用しています。テスト アプリケーションのソースは次のとおりです。約 200 行のコードです。
これを解決するためのヒントは大歓迎です。
java - Jeromq/ZeroMQ サーバー (Windows) - クライアント (Android) テスト
動作しない単純なアプリを使用して、Jeromq ライブラリでテストを実行しようとしています。
サーバーは次のとおりです。
org.zeromq.ZMQ をインポートします。
それで、それを始めた後、私はログを持っています - 「開始」。192.168.56.1 は私のローカル IP アドレスであり、netstat -na (私は Windows で作業しています) は、192.168.56.1:5570 がリッスンしていることを示しています。それで、大丈夫だと思います。このソケットを Windows で開きました。
それからアンドロイドで私はこれを書きました:
接続を確立するためのインターフェイス:
次に、サーバーへの接続を確立する Connection AsyckTask :
接続が確立されたときにテスト タスクを起動する MainActivity:
そして、サーバーが受信してコンソールに記録する必要があるテストメッセージを送信するための TestAsync クラスは次のとおりです。
しかし、結果をログに記録することはありません。結果を受け取りません。問題は、理由がわからないことです-電話(実際のデバイス)とサーバーを備えたコンピューターが1つのWiFiネットワーク内にあります。また、ZeroMQ が接続が本当に確立されているかどうかを確認する方法がないことも学びました。
私がそれを理解するのを手伝ってください。
android - subscriber.recv() で Android アプリケーションがハングアップする
データの連続ストリームを受信する Android アプリケーションを作成しています。次のようにランナブル内で接続を設定しました。
さて、インターウェブを精査した結果、2 つの結論に達しました。
1) recvStr() は、何かを受信するまで待機するブロッキング呼び出しです。つまり、正しく接続されていないか、何か他のものです
と
2) 何らかのフィルターを設定する必要があるかもしれません。
次に何をすればいいのかわかりません。JeroMQ または Android サーバー アクセスの経験がある方からの助けをお待ちしております。
java - JeroMQ で「IOException. too many files open」が発生することがある
Java の JeroMQ で IPC エンドポイントを使用して、私の別のアプリケーションと通信する tomcat7 アプリケーションがあります。クライアントサーバースキームがあり、クライアントはサーバーからの応答をしばらく待ちます。応答を受信しない場合、最初は再試行せずに失敗します。
コードは以下です
MQSocketFactory クラスは次のようになります。
IOExcpetion Too Many file Open に関するこの特定の問題を回避するために、リクエストが完了した後にすべてのソケットが閉じられるように、これを具体的に行いました。ただし、ごくまれにこの問題が発生し、その理由がわかりません。アプリケーションは、ほぼ同じ負荷で何日も動作し、すべてが正常に機能している可能性がありますが、ある時点で例外がスローされ始め、その理由はわかりません。
また、Tomcat7 で ulimit を増やす方法はありますか? 現在1024です。
java - Java での ZeroMQ ポート転送
ZeroMQ
私は Java で書かれたプログラムを持っています。このプログラムは、実行中の別のプログラムによってリッスンされ、応答されるようにメッセージを送信する必要があります。
ZeroMQ
問題は、リスナーがローカル ネットワーク上の別のコンピューター上にあり、ネットワーク経由でメッセージを受信するために何らかの方法でポート フォワーディングを実行する必要があることです。
上記のコードが実行されると、プログラムは応答を無期限に待機する (決して応答しない) ため、実質的に応答しなくなります。リスナーはtcp://127.0.0.1:5570
メッセージをリッスンしています。tcp://0.0.0.0:5570
またはに設定するとtcp://*:5570
、特定のポートですべてのアドレスをリッスンするように設定しても、何も得られません。
どんな助けでも大歓迎です。