【ナッツ】
NATS とは?
最終更新:
💡 サービスを、名前付きのメッセージでつなぐ
subjectという名前でメッセージを送受信する、軽量なオープンソースのメッセージングシステム。Pub/SubやRequest/Reply、Queue Groupを利用でき、JetStreamで保存・再配信も扱える。
📌 このページのポイント
- subjectを使い、相手のネットワークアドレスを直接知らずに通信する
- 通常の購読では各購読者へ、Queue Groupではグループ内の1人へ配信する
- Core NATSは保存しないat-most-once配信で、後から再生できない
- JetStreamは保存・ACK・再配信を設定でき、重複の扱いにも注意する
NATSってどんなメッセージングシステムなの?
Pub/Subって何なの?
送る側がsubjectにメッセージを発行し、そのsubjectを購読している受信者に配る方式だよ。Core NATSでは、その時点で接続している購読者が対象。保存しないので、接続していなかった人が後から受け取れるわけではないんだ
Request/Replyはどう動くの?
要求を送るときに、返信用のsubjectも付けるんだ。応答側はそこへ返事を送り、要求側が受け取る。相手のアドレスを直接指定せずに呼び出せるけれど、応答側がいなければ成功するわけではないので、タイムアウトなども扱うよ
Queue Groupって、全員に配るのとは違うの?
同じsubjectを同じグループ名で購読すると、各メッセージはグループ内の1人に配られるよ。通常の購読は各購読者に配るので、ここが違う。Core NATSのグループで分担するだけでは、保存や再配信の保証は追加されないんだ
JetStreamを使えば、保存もできるの?
有効にしてストリームやコンシューマーを設定すると、対象メッセージの保存や再生、ACKによる処理の確認と再配信を扱えるよ。保存先や保持期間も設定する。少なくとも1回の配信では重複する場合があるので、処理側でも重複をどう扱うか考えよう
まとめ:ざっくりこれだけ覚えればOK!
「NATS」って出てきたら「サービス同士をsubjectでつなぐ軽量メッセージングシステム」と思えばだいたいOK!
📖 おまけ:英語の意味
「NATS」 = メッセージングシステムの名称
💬 「ナッツ」と読むよ。subjectという名前で通信し、サービス同士を直接結び付けずにメッセージをやり取りする仕組みなんだ