キューの概要

Oracle Cloud Infrastructure (OCI) Queueは、システムを切り離して非同期操作を有効にするのに役立つ、フルマネージド・サーバーレス・サービスです。キューは、損失または重複なしで個別に処理されたメッセージを必要とする大量のトランザクション・データを処理します。キューは、プロデューサおよびコンシューマのスループットに基づく透過的な自動スケーリングをサポートします。キューはオープン規格を使用して、最小限の労力でクライアントまたはプロデューサとの通信をサポートします。

OCIキュー・サービスは、次の4つの原則に基づいて構築されています:

公開
メッセージは1つ以上のプロデューサによってキューに公開でき、それぞれに保持期間があります。保持期間が指定されていない場合、メッセージはキュー・レベルで定義された保持期間を使用して期限切れになります。メッセージには、文字列の形式のペイロードが含まれます。
消費
複数のコンシューマが1つのキューからメッセージを消費できます。コンシューマ数は、公開されるメッセージの割合と連動してスケーリングできます。メッセージがコンシューマに配信されると、事前定義済の時間(表示タイムアウトと呼ばれる)にわたり、メッセージは他のコンシューマに対して非表示になります。
更新
メッセージの処理に予想よりも時間がかかる場合、コンシューマはメッセージの表示タイムアウトを延長できます。表示タイムアウトを延長すると、メッセージはキューに戻されず、別のコンシューマに配信されません。
削除
コンシューマにメッセージが配信され、処理された後は、別のコンシューマへの再配信を防ぐためにメッセージを削除する必要があります。

利点

キュー・サービスには、次のような利点があります。

アプリケーション分離

キューは、イベント駆動型アーキテクチャを使用してアプリケーションとシステムを分離するのに役立ちます。分離により、個々のアプリケーション・コンポーネントを個別にスケーリングでき、新しいアプリケーション・コンポーネントが構築されると、キューを公開またはサブスクライブできるようになります。

コンシューマが消費する複数のキューにメッセージを送信するプロデューサを表す図。

信頼できるメッセージ処理

キューは、コンシューマが消費できない場合でも、メッセージが失われないことを保証します。公開されたメッセージは、削除されるか期限切れになるまで保持されます。

メッセージが正常に消費されない場合は、デッド・レター・キュー(DLQ)に送信されます。デッド・レター・キューを使用すると、問題のあるメッセージを分離して、失敗の原因を特定できます。この方法で問題のあるメッセージを分離して消費すると、少なくとも1回はコンシューマ・アプリケーションへの正常な配信を保証できます。詳細は、配信不能キューを参照してください。

オープン規格

キューは、RESTful API (Open API仕様を使用)定義を使用するか、業界標準のSTOMPプロトコルを使用してコールできます。

概念

キュー・サービスでは、次の概念が使用されます。

メッセージ
メッセージは、文字列の形式でペイロードを含むキュー内の要素です。文字列は、XML、JSON、CSV、Base64-encodedバイナリ・メッセージ、gzipなどの圧縮形式など、任意の形式にできます。プロデューサとコンシューマは、メッセージ形式に同意する必要があります。各メッセージは個別に処理されます。
プロデューサ
キューにメッセージを送信するクライアント。
コンシューマ
キューからメッセージを受信するクライアント。コンシューマは、メッセージの受信後にキューからメッセージを削除することも担当します。
チャンネル
オンデマンドで作成できるキュー内の一時的な宛先。メッセージはキュー内の特定のチャネルにパブリッシュでき、コンシューマは特定のチャネルからメッセージを取得できます。詳細は、チャネルを参照してください。
最大保持期間
メッセージがコンシューマによって削除されない場合、システムによって自動的に削除されるまでキューがメッセージを保持する時間の長さ。最大保持期間は、キュー・レベルで10秒から7日までの値に構成できます。デフォルト値は1日です。
配信数
リクエストに応じてメッセージがコンシューマに配信される回数。
配信最大試行回数
デッド レター キュー(DLQ)に送信されるまでに、メッセージがコンシューマに配信され、更新または削除されない回数。配信最大試行回数は、キュー・レベルで1から20の値に構成できます。詳細は、配信数を参照してください。
ポーリング・タイムアウト
メッセージが消費されるまでコンシューマが待機する時間の長さ。ポーリング・タイムアウトを長くすると、コンシューマがキューのメッセージをリクエストする回数が減りますが、レスポンスは消費できるメッセージがないことを示します。ポーリング・タイムアウトは、キュー・レベルで0から30秒の値に構成でき、コンシューマはメッセージのリクエスト時に値を設定できます。デフォルト値は30秒です詳細は、ロング・ポーリングを参照してください。
表示タイムアウト
あるコンシューマがキューから受信したメッセージが他のコンシューマに表示されない時間の長さ。表示タイムアウトは、キュー・レベルで1秒から12時間の値に構成でき、コンシューマはメッセージのリクエスト時に値を設定できます。デフォルト値は30秒です詳細は、メッセージのロックを参照してください。
表示可能メッセージ
キュー内の現在の消費可能メッセージ数。
処理中のメッセージ
コンシューマに配信されたがまだ削除されていないメッセージの数。処理中のメッセージは、表示タイムアウトが経過するまで再配信できません。
配信不能キュー
メッセージが正常に消費されておらず、構成された最大配信試行回数よりも多く配信試行されている場合、メッセージは配信不能キュー(DLQ)に転送されます。詳細は、配信不能キューを参照してください。

保証

キュー・サービスでは、次の保証が提供されます。

  • 正常に公開されたメッセージは、削除されるか保持期間が経過するまで恒久的であることが保証されます。メッセージの公開は、キュー・サービスがプロデューサに確認応答を返した場合、成功と見なされます。レスポンスが受信されたかどうかは関係ありません。
  • 表示タイムアウト内のメッセージは、そのタイムアウトが期限切れになるまで別のコンシューマに配信されないことが保証されます。
  • メッセージは、保持期間が終了するまでキュー・サービスによって削除されません。保持期間中、コンシューマはメッセージを処理および削除できます。

認証と認可

Oracle Cloud Infrastructureの各サービスは、すべてのインタフェース(コンソール、SDKまたはCLI、およびREST API)で、認証および認可のためにIAMと統合されます。

組織の管理者は、グループ、コンパートメントおよびポリシーを設定して、どのユーザーがどのサービスおよびリソースにアクセスできるかと、そのアクセス権のタイプを制御する必要があります。たとえば、ポリシーは、ユーザー、グループおよびコンパートメントを作成できるユーザー、または仮想デプロイメントを作成および管理できるユーザーを制御します。

キューにアクセスする方法

キューには、コンソール(ブラウザベースのインタフェース)、Oracle Cloud Infrastructure CLIまたはREST APIを使用してアクセスできます。

このガイドでは、3つすべての方法の手順について説明します。

サービス制限

Oracle Cloud Infrastructureにサインアップする場合、サービス制限のセットがテナンシに対して構成されます。サービス制限は、リソースに対して設定された割当てまたは許容量です。キュー・リソースの次のサービス制限を確認します。

リソース 詳細
キュー リージョンごとにテナンシ当たり10

サービス制限の詳細、および制限拡大のリクエスト方法については、サービス制限を参照してください。リソースまたはリソース・ファミリにコンパートメント固有の制限を設定するために、管理者は、コンパートメント割当て制限を使用できます。

機能制限

サービス・リソース制限に加えて、特定のキュー制限が機能および機能に対して存在します。

制限 詳細
キュー当たりのチャネル キュー当たり256
最大PutMessageリクエスト・サイズ 512 KBおよび20メッセージ
最大GetMessageレスポンス・サイズ 2 MBおよび20メッセージ
最大メッセージ・サイズ 256 KB
処理中メッセージの最大数 キュー当たり100,000
キュー当たりの最大メッセージ数 無制限
メッセージの保持 最大: 7日

最小: 10秒

デフォルト: 1日

メッセージ表示タイムアウト 最大: 12時間

最小: メッセージ・レベルで0秒

最小: キュー・レベルで1秒

デフォルト: 30秒

最大同時GETリクエスト キュー当たり1,000リクエスト/秒
最大メッセージ操作数 キューごとにAPI当たり1,000リクエスト/秒
最大データ・レート キュー当たりのイングレス: 10 MB/秒

キュー当たりのエグレス: 10 MB/秒

ポーリング・タイムアウト 最大: 30秒

最小: 0秒

STOMPスループット STOMP接続当たり10 MB/秒
ストレージ テナンシ当たり20 GB

キュー当たり2 GB