Autonomous DatabaseからOCI通知サービスへのメッセージの送信

Autonomous DatabaseからOCI通知サービス・トピックにメッセージを送信する方法について説明します。

OCI通知サービスで構成するサブスクリプションによって、トピックのエンドポイントが決まります。パブリッシュされたメッセージは、トピックの各サブスクリプションに送信されます。サポートされるサブスクリプション・プロトコルには、電子メール、関数、Slackなどが多数あります。詳細は、通知の概要を参照してください。

OCI通知サービスをDBMS_CLOUD_NOTIFICATIONパッケージとともに使用する場合、DBMS_CLOUD_NOTIFICATION.SEND_MESSAGEプロシージャのみがサポートされます(DBMS_CLOUD_NOTIFICATION.SEND_DATAプロシージャはサポートされていません)。

Autonomous DatabaseからのOCI通知の送信の準備

OCI通知サービスのトピックに通知を送信するには、まずOCI通知でトピックおよびサブスクリプションを作成します。

前提条件として、OCI通知を使用してメッセージを送信する前に、次を実行します:

  1. OCI通知トピックを作成します。

    トピックの作成の詳細は、トピックの作成を参照してください。

  2. OCI通知サブスクリプションを作成します。

    サブスクリプションの作成の詳細は、サブスクリプションの作成を参照してください

    構成するサブスクリプションによって、トピックのエンドポイントが決まります。パブリッシュされたメッセージは、トピックの各サブスクリプションに送信されます。サポートされるサブスクリプション・プロトコルには、電子メール、関数、Slackなどが多数あります。

    詳細は、通知の概要を参照してください。

  3. OCI通知サブスクリプションを作成したら、サブスクリプションを確認します。

    確認済サブスクリプションにのみメッセージを公開できます。サブスクリプションの確認の詳細は、サブスクリプションの確認を参照してください。

OCI通知トピックへのメッセージの送信

OCI通知サービス・トピックにメッセージを送信するステップについて説明します。

  1. トピックを作成してサブスクリプションを作成します。

    詳細は、Autonomous DatabaseからのOCI通知の送信の準備を参照してください。

  2. Autonomous DatabaseからOCI通知サービスにアクセスするための資格証明オブジェクトを作成します。

    Oracle Cloud Infrastructure署名キー資格証明またはリソース・プリンシパル資格証明のいずれかを使用できます。

    • Oracle Cloud Infrastructure署名キー資格証明を作成します。たとえば:

      BEGIN
         DBMS_CLOUD.CREATE_CREDENTIAL (
             credential_name => ‘OCI_KEY_CRED’,
             user_ocid       => ‘ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa’,
             tenancy_ocid    => ‘ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a’,
             private_key     => ‘MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=’,
             fingerprint     => ‘f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27’);
      END;
      /

      詳細は「CREATE_CREDENTIALプロシージャ」を参照してください。

    • リソース・プリンシパル資格証明およびポリシーを作成します。

      詳細は、リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセスを参照してください。

  3. メッセージを送信
    • Oracle Cloud Infrastructure署名キー資格証明を使用してメッセージを送信します:

      BEGIN
          DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
              provider         => 'oci',
              credential_name  => 'OCI_KEY_CRED',
              message          => 'Text message',
              params           => json_object('topic_ocid' value 'oci********pa',
                                              'title'value 'Title for message'));
      END;
      / 
    • リソース・プリンシパル資格証明を使用してメッセージを送信します。

      BEGIN
          DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
              provider         => 'oci',
              credential_name  => 'OCI$RESOURCE_PRINCIPAL',
              message          => 'Text message',
              params           => json_object('topic_ocid' value 'oci********pa',
                                              'title'      value 'Title for message'));
      END;
      / 

    ociプロバイダでは、サブスクリプションに基づいて、メッセージに対して使用可能なエンドポイントが異なります。titleパラメータは、サブスクリプション・プロトコルごとに異なる方法で処理されます。

    • email: titleは、メッセージの件名を指定します。
    • Slack: title値は使用されません。含まれる場合、値は無視されます。

詳細は、SEND_MESSAGEプロシージャを参照してください。

OCI通知サービスを使用した通知の制限事項

DBMS_CLOUD_NOTIFICATIONを使用してメッセージを送信し、ociプロバイダ(OCI通知サービス)を使用する場合には制限があります。

次の制限があるので注意してください。

  • Message Size Limit(メッセージ・サイズ制限): リクエスト当たりのメッセージ・サイズ制限は64KBです。このサイズを超えるメッセージは、単一のリクエスト内で送信または処理できません。
  • Message Delivery Rate Limit(メッセージ配信率制限): 使用するプロトコルに応じて、異なるメッセージ配信率制限があります。
    • emailプロトコル: 制限はエンドポイント当たり1分当たり10メッセージです。

    この制限は、メッセージの送信および受信速度に影響を与える可能性があります。

  • Transactions Per Minute (TPM) per-tenancy Limit (テナンシ当たりのトランザクション数制限): この操作にはトピックごとに60のTPM制限があります。この制限は、特定のトピックに対して処理または処理できる1分当たりのメッセージの最大数を表します。この制限を超えると、メッセージの処理または処理速度が遅くなる可能性があります。
  • Autonomous Databaseインスタンス、資格証明(ユーザー資格証明を使用している場合)、およびサブスクリプション・トピックはすべて同じリージョンに配置する必要があります。

OCI通知の詳細は、通知の概要を参照してください。