問題タブ [nats-streaming-server]
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 - java-nats-streaming: サーバーの再接続後にメッセージを発行する
3 つのノードがセットアップされた NATS ストリーミング クラスターがあります。サーバーのダウンタイム中に Java アプリケーションによって発行された NATS メッセージが失われたようです (つまり、サーバーがバックアップされて実行されているときに再発行されません)。
より詳細な説明:
- NATS クラスターがオンラインです。パブリッシャーとサブスクライバーのアプリケーションがオンラインになります。パブリッシャーは毎秒メッセージのパブリッシュを開始します。サブスクライバーはメッセージを受信します。
- NATS サーバーは停止しています。パブリッシャーは引き続きメッセージを発行します (これらのメッセージを「オフライン メッセージ」と呼びましょう)。サブスクライバーは何も受信しなくなります
- NATS サーバーがオンラインに戻ります。サブスクライバーは再びメッセージの受信を開始しますが、「オフライン メッセージ」は受信されません。
パブリッシャー アプリケーションとサブスクライバー アプリケーションの両方が NATS サーバーへの再接続を試行するように構成されており、タイムアウトしません。全体を通して例外はありません。
NATS 接続:
出版社:
加入者:
ドキュメントから、Java NATS クライアントには再接続バッファーが組み込まれているようです。バッファーを 10 倍に増やしてみましたが、役に立ちませんでした (また、私のメッセージは 2 桁の数字のみで構成されています)。これらの「オフライン メッセージ」を再送信するにはどうすればよいですか?
nats.io - 大きなサイズのファイルを購読するにはどうすればよいですか? - NATS ストリーミング サブスクライブの問題
私は新しい NATS です。NATS-streaming-server の例を使用して、テキスト ファイルを送受信しようとしました。
テキストファイル(〜9B)を送信すると動作します
-クライアント「cs-publisher」としてクラスター「test-cluster」に接続するパブリッシュ。件名 foo で 1 件のメッセージを公開 URL: nats://localhost:4222 ペイロードは 9 バイトです。0.0076917 秒 (130 メッセージ/秒) で確認応答付きの 1 メッセージを公開しました。
-Sub クライアント「cs-subscriber」としてクラスター「test-cluster」に接続しています。件名 foo url: nats://localhost:4222 で 1 メッセージを受信 6E-07 秒 (1666666 メッセージ/秒) で 1 メッセージを受信しました。
しかし、テキストファイル (~80MB) を送信すると、サブスクライブが機能しませんでした。
-Pub クライアント「cs-publisher」としてクラスター「test-cluster」に接続します。件名 foo で 1 件のメッセージを公開 URL: nats://localhost:4222 ペイロードは 77552640 バイトです。1.2574163 秒 (0 メッセージ/秒) で確認応答付きの 1 メッセージを公開しました。
-Sub クライアント「cs-subscriber」としてクラスター「test-cluster」に接続しています。件名 foo の URL で 1 件のメッセージを受信: nats://loaclhost:4222
サブスクライブが反応しない理由がわかりません。同じコードを使用し、送信したファイルを変更しただけです。
byte[] ペイロード = File.ReadAllBytes("test.txt");
....
文字列 guid = c.Publish(件名、ペイロード、(obj、pubArgs) =>
私を助けてください
apache-kafka - 低遅延の分散ログ
本番環境に対応した低遅延の分散ログ用の既存のソフトウェアはありますか? アイデアは、サービス自体に送信される前に、入力メッセージをサービスに保存することです。サービスが起動すると、その状態の最新のスナップショットが取得され、入力メッセージが再生されます。サービスが確定的である場合、サービスの複数のインスタンスを一度に実行できます。これにより、高可用性とゼロ ダウンタイムの導入の両方が実現します。
利用可能なログは多数ありますが、遅延が大きいもの、分散/クラスタ化が十分でないもの、本番環境にまだ対応していないものがあります。
利用可能な分散ログ ソフトウェア
カフカ
NATS ストリーミング
タンク
分散ログ
パルサー
ロケットMQ
リフトブリッジ
ジョッコ
LogDevice
要件
メッセージ/イベントの永続性 (メモリ内またはディスク上)
トピック/パーティション内のメッセージの順序
At-least-once-delivery: パブリッシャーとサーバー間 (パブリッシュ操作用) およびサブスクライバーとサーバー間 (メッセージ配信を確認するため) のメッセージ確認応答
サブジェクトごとの履歴メッセージの再生: 新しいサブスクリプションは、サブスクライブしたサブジェクトのチャネル用に保存されたメッセージのストリーム内の開始位置を指定できます。
高可用性: 複数のクラスター化されたノードがあり、それらの間でレプリケーションが行われている必要があります
低遅延: 2 つのノードがメッセージを受信してから送信するまで待機する場合は、低遅延でなければなりません。理想的には数ミリ秒ですが、数十ミリ秒以上ではありません。これが、Kafka がこれに適していないと思われる主な理由です。
見逃したオプションはありますか?