過去数日間、NATS および NATS ストリーミング サーバーでいくつかの POC を行ってきました。NATSストリーミングサーバーと同じようにJavaクライアントを作成し、NATSサーバーと一緒にクラスター化されたNATSストリーミングサーバーとの間でメッセージを発行/購読することから始めました。guids
NATS ストリーミングは、ストリーミング サーバーがパブリッシャーからメッセージを受信したときに確認応答を提供するという非常に優れた機能です。AckHandler
を登録して次のように使用することで、これを達成しました。
guid[0] = sc.publish("produceQueue", payload, new AckHandler() {
@Override
public void onAck(String nuid, Exception ex) {
LOGGER.debug("Received ACK for guid: {}", nuid);
}
System.out.flush();
latch.countDown();
}
});
guid
しかし、NATS サーバー (ストリーミングではない) を見始めたとき、メッセージが正常に発行されたことを示す確認応答を提供できるような AckHandlers (またはその他のもの) を見つけることができませんでした。
NATS ストリーミング サーバーには、私が探している多くの機能が組み込まれています。たとえば、message acknowledgements
(max_age
メッセージの TTL)durable subscriptions
などです。一方、NATS サーバーはクラスタリング機能を提供しますが、NATS ストリーミングが提供する他の機能を見つけることができませんでした (ドキュメントで見逃していない限り)。
NATS と NATS ストリーミング機能の概要を 1 つの表にまとめて参照するという未解決の問題があることは知っていますが、現時点ではまだ解決されていません。
メッセージが NATS サーバーに公開されると、NATS サーバーは確認応答を提供しますか? それとも、サブスクライバーの 1 人がサブスクライブしているメッセージの確認ですか?