Message Service

大量のメッセージや同時操作をサポートする、ノード間連携のためのメッセージキューイングと通知サービスです。

Alibaba Cloud Message Service は、効率的で、信頼性が高く、拡張性に優れた分散型のメッセージキューサービスです。このサービスでは、同時実行操作がサポートされ、アプリケーションと分離されたシステムの間でのメッセージの転送が簡素化されます。

本サービスでは、メッセージが少なくとも 1 回取得され、複数のプロデューサーとコンシューマーは同じメッセージキューで同時に操作することができます。 FIFO (First In、First Out) の原則で動作し、メッセージは送信された順序で取得されます。

メリット

安全性
認証メカニズムによる複数レベルのセキュリティを提供します。
メッセージはキュー内に確実に格納され、認証されていないアクセスから保護されます。
カスタマイズ可能なキュー属性の設定
キューイング属性をカスタマイズしてさまざまな適用シナリオをサポートできます。
遅延のカスタマイズをサポートし、キューに優先順位を付けます。
RESTful API との互換性
RESTful API にアクセスしてメッセージキューの作成と他の Alibaba Cloud サービスとの統合を簡単に実行し、堅牢な分散されたデプロイメントを構築できます。
同時読み書き
複数のプロデューサーとコンシューマーが同じメッセージキューを同時に操作することができます。

特徴

  • シンプル

    SendMessage、ReceiveMessage、DeleteMessage などの API を使用する使いやすいサービスです。


    標準の HTTP RESTful インターフェイスのメリットを活用できます。


    プラットフォームに依存しない、メンテナンスが不要なサービスです。


    ECS、RDS などの他の Alibaba Cloud サービスと互換可能です。

  • 遅延メッセージ

    遅延メッセージがサポートされます。
    SendMessage の使用時に指定できる DelaySeconds パラメーターを使用して遅延期間を決定できます。

  • 遅延キュー

    キューイングサービスの遅延期間は、CreateQueue および SetQueueAttribute を使用して指定できます。

  • 信頼性

    複数アベイラビリティゾーンでデータを迅速にバックアップし、99.9999999% のデータの信頼性を実現します。


    最大 99.99% のサービスの可用性を活用します。


    有効期間内での正常なメッセージ配信を実現します。

  • 多様なキュー属性

    プレーンキューイング、レイテンシキューイング、優先度キューイングなどにカスタマイズが可能な、幅広いメッセージキューサービスを提供します。

よくある質問

1. Message Service の主な機能にはどのようなものがありますか。

Message Service は以下のアプリケーションシナリオで使用できます。

• Message Service を Elastic Compute Service (ECS) や Object Storage Service (OSS) などの他のプロダクトと統合して、信頼性の高いフォールトトレランスで柔軟なアプリケーションを構築できます。
• メッセージキューイングサービスを作業キューとして使用して、キュー内の各メッセージが 1 つのタスクを表し、1 つのプロセスを完了することができます。このように、プロセスを分離してより弾力性のあるアプリケーションを構築できます。ただし、1 つ以上の ECS でキューから複数のタスクを読み取り、実行することができます。
• サービスプロセスの主要イベントに対する通知を保管することもできます。この場合、各イベントがキュー内の対応する 1 つのメッセージを表します。イベントを取得する必要があるアプリケーションは、対応するメッセージを読み取り、処理します。

2. 別のリージョンから Message Service にアクセスするにはどうしたらよいですか。

Alibaba Cloud Message Service は以下のさまざまなリージョンからのアクセスを可能にするさまざまなエンドポイントを提供しています。

3. Message Service ではどのような種類の操作がサポートされますか。

現在、Alibaba Cloud Message Service でサポートされている操作は以下のとおりです。

キュー関連の操作

• CreateQueue: 新しいキューを作成します。
• SetQueueAttributes: キューの属性を変更します。
• GetQueueAttributes: 既存のキューの属性を取得します。
• DeleteQueue: 既存のキューを削除します。
• ListQueue: 1 つのアカウントの下のキューをリストします。

メッセージ関連の操作

• SendMessage: 指定したキューにプロデューサーがメッセージを送信をできるようにします。
• BatchSendMessage: 指定したキューにプロデューサーがバッチ処理でメッセージを送信できるようにします。
• ReceiveMessage: コンシューマーがキュー内のメッセージを取得できるようにします。
• BatchReceiveMessage: コンシューマーがキュー内のメッセージをバッチ処理で取得できるようにします。
• DeleteMessage: 取得済みメッセージを削除します。
• BatchDeleteMessage: 取得済みメッセージをバッチ処理で削除します。
• PeekMessage: コンシューマーがメッセージを閲覧できるようにします。
• BatchPeekMessage: コンシューマーがメッセージをバッチ処理で閲覧できるようにします。
• ChangeMessageVisibility: まだ [Inactive] ステータスであるメッセージが取得された日時を変更して、もう一度取得できるようにします。

4. 他のメッセージキューシステムと比較して Message Service にはどのような利点がありますか。

Alibaba Cloud Message Service を使用する場合の、メッセージキューシステムのビルドまたは広告やオープンソースメッセージおよび通知サービスの使用と比較したメリットは以下のとおりです。

• 大きな投資を行う必要はありません。
• ハードウェアや管理リソースの数を増やす必要はありません。
• レプリケーションおよび冗長性のあるメッセージストレージを使用しているので、ハードウェア障害が発生した場合もメッセージは保護されます。
• ライブデプロイメントであっても、メッセージを作成した後、コンソールで簡単に変更を行うことができます。

5. Message Service の使用を開始するにはどのようにしますか。

Alibaba Cloud アカウントを作成します。
• Alibaba Cloud Message Service にオンラインでサブスクライブします。
• これでキューの作成・削除、管理コンソールを使用したメッセージの送受信など基本的なメッセージング操作を開始できます。
• 管理コンソールを介して Alibaba Cloud Message Service を使用する方法に関するステップごとの解説は、『クイックスタートガイド (Quick Start guide)』 をご参照いただくことも可能です。
• Message Service APISDK を利用してメッセージキューをアプリケーションに統合することもできます。

6. メッセージはシステムの中でどのように識別されるのですか。

キュー内でメッセージを識別するには、一意の MessageId が使用されます。メッセージが Message Service キューに送信されると、MessageId が生成されます。一度生成された MessageId は変更できません。

7. ロングポーリングとはどのようなものですか。

ロングポーリングは、キューからのメッセージの取得方法の 1 つです。ロングポーリングを使用すると、Message Service は応答を送信する前にメッセージがキューで取得可能になるまで待機できるため、空の応答の数を削減できます。

8. メッセージキューイングサービスではロングポーリングをサポートしますか。

はい、Message Service はロングポーリングをサポートします。

メッセージが取得可能になると、ロングポーリングは直ちに Message Service キュー内のメッセージを単純で効率的な方法によって取得できます。ロングポーリングおよび PollingWaitSeconds 属性の詳細については、Message Service API のドキュメントをご参照ください。

9. Message Service はメッセージを FIFO (First-In-First-Out) で処理しますか。

はい、Message Service はメッセージができるだけ FIFO 方式で取得されるように試みます。ただし、分散メッセージキューの性質上、必ずしも送信された順番どおりにメッセージを取得できるとは限りません。

10. Message Service は他の Alibaba Cloud サービスと連携できますか。

Message Service は Elastic Compute Service (ECS)、Object Storage Service (OSS)、Table Store などの他の Alibaba Cloud サービスと連携して、アプリケーションの信頼性と拡張性を向上させることができます。

11. 他の Alibaba Cloud プロダクトと連携した一般的な使用例は以下のとおりです。

• Message Service は ECS インスタンスで実行されているアプリケーションにメッセージを送って、アプリケーションでメッセージが処理されます。
・ ECS インスタンスはキューを読み取り、タスクを処理してから、結果を別の Message Service キューにメッセージとしてパブリッシュすることが (そこからさらに他のアプリケーションによって処理することも) できます。
・ ECS ではアプリケーションの動的な拡張が可能であるため、開発者はメッセージの量に応じてコンピューティングインスタンスの弾力性を組み込み、一貫性のあるパフォーマンスを維持できます。

12. Message Service では保管されるデータの信頼性をどのようにして確保しますか。

Message Service では、すべてのキューとメッセージが、高い信頼性と可用性を備えたデータセンターのネットワークに保管されます。すべてのメッセージは複数のサーバーに冗長モードで保管されるため、サーバーエラーが発生した場合、メッセージを冗長なデータプールからフェッチできます。

13. Message Service ではどのようにして、複数のコンシューマーが同時にキューにアクセスしたときにメッセージが失われたり繰り返し取得されることを防いでいますか。

各 Message Service キューには、設定可能な ChangeMessageVisibility 属性 (キューから取得されたメッセージが不可視になる期間) があります。メッセージがキューから取得されると、不可視期間の間、他のコンシューマーはこのメッセージを取得できません。

• 不可視期間の間に取得した場合は、一時的なハンドル (ReceiptHandle) を使用してメッセージが削除されます。
・ 不可視期間の間に取得しない場合は、(ChangeVisibilityTimeout) を使用して不可視期間を延長するリクエストを送信する必要があります。送信しないと、不可視期間が経過した後、他のコンシューマーがこのメッセージを取得します。

14. Message Service を使用すると各メッセージは何回受信されますか。

Message Service のシステムでは、キュー内のすべてのメッセージが少なくとも 1 回必ず取得されるように設計されています。しかし念のため、同じメッセージが何回も処理されたときにエラーや不整合が発生するのを避けるために、アプリケーションサービスのフォールトトレランスを強化することをお勧めします。

15. Message Service ではキュー内のメッセージのセキュリティをどのようにして確保しますか。

Message Service は、メッセージキューを認証されていないアクセスから保護するために、安全かつ信頼性の高い ID 認証メカニズムを用意しています。キューにアクセスできるのは、そのキューを作成したアカウントオーナーだけです。

16. 長いメッセージ保持期間に対応するためには、Message Service をどのように設定すればよいですか。

メッセージ保持期間を設定するには、SetQueueAttributes を使用して MessageRetentionPeriod 属性を設定します。この属性は、Message Service キュー内にメッセージが保持される秒数を指定します。

17. Message Service でメッセージが保持される期間はどのくらいですか。

Message Service のデフォルトのメッセージ保持期間は 4 日間です。ただし、保持期間は設定可能で、1 分から 15 日間までの任意の値に設定できます。メッセージ保持期間が経過したメッセージは自動的に削除されます。

18. 大きなメッセージに対応するように Message Service を設定するには、どのようにすればよいですか。

最大メッセージサイズを設定するには、SetQueueAttributes を使用して MaximumMessageSize 属性を設定します。この属性では、メッセージのバイトサイズを指定します。1 KB から 64 KB の間の任意の値に設定できます。メッセージの長さが 64 KB を超える場合は、データは OSS で格納し、Message Service ではそのデータのアクセスアドレスだけを格納することをお勧めします。

19. 長期間メッセージが格納されないキューはどうなりますか。

通常、Message Service ではアクティブでないキューを削除しません。ただし、債務不履行などの理由で Message Service が停止された場合は、すべてのキューが削除されます。

20. 名前が同じでリージョンが異なるキューは、同一のものですか。

いいえ。名前が同じでリージョンが異なるキューは、互いに独立した存在です。