Alibaba Cloud Simple Message Queue (SMQ、旧称 MNS) は、スケーラビリティ、高効率、信頼性、セキュリティ、および可用性を提供する分散メッセージングサービスです。 SMQ を使用すると、開発者はアプリケーションの分散コンポーネント間でデータと通知を転送し、疎結合システムを構築できます。SMQ は、キューベースのメッセージングモデルとトピックベースのメッセージングモデルを提供します。
アクセス方法
SMQ は、インターネットおよび Virtual Private Cloud (VPC) からのアクセスをサポートしています。ネットワークタイプとして VPC を選択した場合、VPC の CIDR ブロック、ルートテーブル、およびゲートウェイを設定できます。VPC では、Elastic Compute Service (ECS)、ApsaraDB RDS、Server Load Balancer (SLB) インスタンスなどの Alibaba Cloud リソースを使用できます。
キューベースのメッセージングモデル
キューベースのメッセージングモデルは、信頼性が高く、同時メッセージ消費サービスを提供します。キュー内の各メッセージは、1 つのクライアントのみが使用できます。
SMQ キューは、回転寿司レストランに例えることができます。シェフ (プロデューサー) は寿司 (メッセージ) を作成し、コンベアベルトに置きます。それぞれの寿司はユニークです。お客様 (コンシューマー) は、コンベアベルトからお好みの寿司 (メッセージ) を取ることができます (消費できます)。
キューベースのメッセージフロー
以下の図 キューベースのメッセージフロー は、キューベースのメッセージングのプロセスを示しています。このフローでは、プロデューサーはキューにメッセージを送信し、コンシューマーはキューからメッセージを取得します。
図 1. キューベースのメッセージフロー
キューベースのメッセージングモデルの特徴
複数のキューモード
標準キューと遅延キューがサポートされています。さまざまなビジネスニーズに合わせて、キューのパラメーターをカスタマイズできます。
同時アクセスリクエスト
SMQ キューは、複数のプロデューサーとコンシューマーからの多数の同時リクエストを処理できます。キューからメッセージがプルされると、指定された期間内に再度取得することはできません。
メッセージ配信の保証
SMQ は、キュー内のメッセージがメッセージの有効期間中に少なくとも 1 回は消費されることを保証します。 SMQ は、ユーザー間でリソースが分離されている Alibaba Cloud アカウントシステムに統合されています。これにより、承認されたエンティティのみが SMQ キュー内のメッセージを取得できるようになります。
ログ管理
各メッセージのログを表示できます。ログには、ライフサイクル中にメッセージを送信、受信、および削除するときに生成されるすべてのレコードが含まれています。詳細については、「ログ管理」をご参照ください。
CloudMonitor
CloudMonitor コンソールでキュー情報を表示し、アラートルールをカスタマイズできます。その後、予期しない問題が発生した場合、CloudMonitor から通知が送信されます。詳細については、「CloudMonitor」をご参照ください。
トピックベースのメッセージングモデル
トピックベースのメッセージングモデルは、1 つの パブリッシャー クライアントから複数の サブスクライバー クライアントにメッセージを送信するために使用されます。 SMQ トピックは、複数の方法を使用してメッセージとしてプッシュできます。
トピックは、複数のお客様が購読する新聞に例えることができます。新聞の新しい号が発行されると、お客様 (郵便局のパートナーを含む) は次のいずれかの方法を選択して新聞を受け取ることができます。
郵便配達員に依頼して、自宅などの特定の住所に新聞を配達してもらう。
郵便配達員が新聞を配達する最寄りの売店に行く。
トピックベースのメッセージフロー
トピックベースのメッセージフロー に示すように、
トピックには、異なるキューで指定された複数のサブスクリプションがあります。
メッセージがトピックにパブリッシュされると、メッセージはサブスクリプションで指定されたキューエンドポイントにプッシュされます。
サブスクリプションはメッセージフィルタリングをサポートしています。メッセージをフィルタリングするために、サブスクリプションにタグを指定できます。
サブスクリプションにタグを指定しない場合、メッセージタグを指定するかどうかに関係なく、メッセージは指定されたキューにプッシュされます。
サブスクリプションにタグを指定した場合、タグが付いているメッセージのみが指定されたキューにプッシュされます。
図 2. トピックベースのメッセージフロー
トピックベースのメッセージングモデルの特徴
通知メッセージ
SMQ サーバーは、指定されたキューにメッセージをプッシュします。これにより、クライアントの不要なリクエストポーリングとリソース消費がなくなります。ビジネスニーズに合わせてリソース使用量を最大化できます。他のメッセージサービスクライアントに依存する必要はありません。これにより、過剰なコード導入によって引き起こされるシステムの不安定性を防ぎます。詳細については、「エンドポイントに送信されるリクエストに署名する」および「トピックを管理する」をご参照ください。
ネットワークなどの理由でコールバック URL を使用できない場合は、SMQ キューにメッセージをプッシュし、キューからメッセージを取得できます。キューを使用して、トピックからメッセージを消費できます。詳細については、「キュー」および「1 つのプロデューサークライアントから複数のコンシューマークライアントにメッセージを送信する」をご参照ください。
1 対多
トピックにパブリッシュされたメッセージは、複数の サブスクライバー クライアントにプッシュできます。SMQ は、サブスクリプションで指定されたキューにメッセージをプッシュします。メッセージがパブリッシュされると、メッセージは複数のエンドポイントにプッシュされます。これにより、メッセージパブリッシングの原子性が保証されます。
タグベースのメッセージフィルタリング
SMQ では、タグを使用してメッセージをフィルタリングできます。サブスクリプションにタグを指定すると、トピックからタグが付いているメッセージのみを受信できます。 SMQ は、タグが同じ場合にのみ、指定されたエンドポイントにメッセージをプッシュします。詳細については、「トピックに関する RESTful API 操作」をご参照ください。
メッセージ配信
SMQ は、キューにメッセージを送信します。詳細については、「キュー」および「1 つのプロデューサークライアントから複数のコンシューマークライアントにメッセージを送信する」をご参照ください。
メッセージ配信の保証: トピックにパブリッシュされたメッセージは、指定された再試行ポリシーとコンテンツ形式に基づいて、有効期間中に サブスクライバー クライアントに自動的にプッシュされます。詳細については、「NotifyStrategy」をご参照ください。
メッセージ形式
XML: メッセージは XML 形式で、メッセージ本文とメッセージ属性が含まれています。
JSON: メッセージは JSON 形式で、メッセージ本文とメッセージ属性が含まれています。
SIMPLIFIED: メッセージ本文は、ユーザーがパブリッシュしたメッセージです。属性情報は含まれていません (これは簡略化された形式、つまりテキスト形式です)。詳細については、以下をご参照ください。
ログ管理
メッセージがトピックにパブリッシュされ、エンドポイントにプッシュされると、ログが生成されます。プッシュの再試行と結果に関する情報はログに記録されます。ログを使用して、メッセージのライフサイクルを表示できます。ログ管理により、問題を簡単にトラブルシューティングできます。詳細については、「ログ管理」をご参照ください。
CloudMonitor
CloudMonitor は、プッシュされたメッセージを記録します。1 つ以上のメッセージのプッシュに失敗した場合、CloudMonitor ではアラートルールを作成することで例外を追跡できます。詳細については、「CloudMonitor」をご参照ください。