メインコンテンツまでスキップ

Momento Topics とは?

Momento Topics は、最高に洗練されたサーバーレスの pub/sub (パブリッシュ/サブスクライブ) メッセージングパターンで、分散システム間のリアルタイム通信を可能にします。アプリのパブリッシャーから送信されたアイテムを受信するために、アプリが topics、つまり専用のチャネルでサブスクライブすることを可能にします。Momento Topics サービスはサーバーレスであるため、インフラストラクチャを作成したり管理したりする必要はなく、pub/subするトピックを作成する必要もありません。あるトピックにアイテムをパブリッシュすると、そのアイテムがまだ存在しない場合はトピックが自動的に作成されます。トピックはMomento Cacheを基盤として利用するため、スケーリング設定も不要です。サービスの転送されたデータの入出力に対してのみ課金されます。

Momento Topics はどの様に動作するのか?

Momento Topics はサーバーレスサービスで、分散システム間のリアルタイム通信を効率よく実行できるようにしてくれます。パブ/サブのサービスは疎結合なアーキテクチャに繋がっていて、そこではパブリッシャー(プロデューサー)はサブスクライバー(コンシューマー)が誰でどこにあるのかを全く知る必要なく、項目を特定のトピックに送り出します。サブスクライバーは1つ、もしくは複数の興味あるトピックから項目が来ないか聴いていて、あらゆるパブリッシャーからそれらのトピックにパブリッシュされた全ての項目を受け取っています。

このトピックベースの通信は、サブスクライバーがサブスクライブしているトピックからのみ項目を受け取るので、効果的なルーティングとフィルタリングを可能にし、サブスクライバーはこれらの特定のトピックに集中することができます。このアプローチはチャットシステム、通知、またはデータストリーミング等のリアルタイムアプリケーションの実装を単純化してくれます。

Momento Topics は"Fire-and-forget (発火したら忘れる)"メッセージモデルなので、一度項目をパブリッシュしたら、それはその時点でそのトピックの全サブスクライバーに即座に送られ、その後捨てられます。項目の永続化や配送保証をする仕組みはもっていません。従って、Momento Topics は低レイテンシであることが重要で、たまに項目を失っても問題なく動作するようなアプリケーションに最も適しています。

注記

Momento Topics は Momento Cache をバックエンドとして使うので、既存のキャッシュを使うか、新しいキャッシュを Momento Cache に作成してから、Momento Topics のパブリッシュやサブスクライブ APIを呼び出すことができます。

Momento Topics はどこで使えますか?

トピックスは、チャネルとコネクションを処理してくれるマネージドWebSocketサービスのようなものだと考えることができます。

A diagram showing service-to-service, service-to-browser, and browser-to-browser connectivity with Topics

ブラウザから接続

Web SDKを使用すると、ブラウザでTopicのパブリッシュとサブスクライブの両方を行うことができます。Topic にデータを公開すると、すべてのサブスクライバーがそのデータを受信します。つまり、サーバー側のコードを作成することなく、ブラウザ同士で接続できます。

サーバから接続

また、バックエンドのサービスでTopicsをパブリッシュしたりサブスクライブしたりすることもできます。データの送受信には、Node.jsPython、またはGo SDKを使用できます。その他のSDKのサポートは近日公開予定です。

注記

注意点として、Momento Topicsはサブスクライバにステートフルな接続を要求するため、LambdaやCloudflare Workerのようなサーバレスファンクションには最適ではありません。しかし、データをパブリッシュするだけであれば、完全にステートレスなので、サーバレスファンクションでも動作します。

  • サーバーレス環境でアイテムをパブリッシュするためのマイクロサービス このマイクロサービスはTypeScriptで書かれており、API Gateway、Lambda関数、Momento Topicsを使ってAWS上で実行されます。(API Gateway上で適切なセキュリティが設定されていれば)他のサービスでも利用することができ、様々なトピックにメッセージを発行して他のアプリケーションからサブスクライブさせることができます。この API に topicNametopicValue を渡すと、このサービスはその値をトピックに発行します。

  • Next.jsとMomento topics作成したチャットアプリケーション このアプリケーションは、Next.jsフレームワークを使ってTypeScriptで書かれています。ユーザーはキャッシュとトピック名を使って、参加するチャットルームを選択します。ブラウザがトピックをサブスクライブするために使用する、ロースコープで短命なトークンをフロントエンドに送信するAPIもあります。トークンの有効期限が切れると、フロントエンドはAPIを呼び出して新しいトークンを取得し、自動的にトピックに再登録します。このアプリケーションには静的バージョンもあり、こちらはフロントエンドにトークンを提供するAPIが必要です。

ブログ記事

Momento TopicsのAPI呼び出し

API reference page for Topicsをご参照ください。

Momento Topicsの言語サポート

言語サポートページで、さまざまなプログラミング言語で利用可能なSDKの詳細をご覧ください。

デモ

Topicsを試してみませんか?Momento Consoleで無料でお試しいただけます。地域とキャッシュを選択し、トピック名を入力して、メッセージの送信すれば良いだけです。

Momento TopicsについてのFAQ

アイテムがパブリッシュされた後にアプリがトピックをサブスクライブした場合でも、そのアイテムをまだgetできますか?
いいえ。サブスクライバーは、トピックの履歴のアイテムにはアクセスできません。