この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

エンタープライズメッセージングプラットフォームイベント

Salesforce のエンタープライズメッセージングプラットフォームは、イベント駆動型ソフトウェアアーキテクチャのメリットを提供します。プラットフォームイベントは、アプリケーションがその後のアクションを実行するために送受信するイベントメッセージ (または通知) です。プラットフォームイベントは、変化をやり取りしてその変化に応答するためのプロセスを簡素化します。複雑なロジックを記述することはありません。パブリッシャーとサブスクライバーはイベントを通じて互いにやり取りします。1 つ以上のサブスクライバーが同じイベントをリスンし、アクションを実行できます。

たとえば、ソフトウェアシステムは、プリンターインクカートリッジに関する情報が含まれるイベントを送信できます。サブスクライバーはこのイベントを登録し、プリンターのインクレベルを監視して、低インクレベルのカートリッジを交換するための注文を実行できます。

カスタムプラットフォームイベント

カスタムプラットフォームイベントを使用して、カスタム通知の公開と処理を行います。たとえば、カスタムプラットフォームイベントを公開して、注文情報を注文フルフィルメントサービスに送信します。または、カスタムプラットフォームイベントを公開して、サービスアプリケーションで処理されるプリンターインク情報を送信します。

カスタムオブジェクトを定義する方法と同じ方法で、Salesforce でカスタムプラットフォームイベントを定義します。プラットフォームイベント定義を作成するには、定義に名前を付けて、カスタム項目を追加します。プラットフォームイベントは Salesforce のデータ型のサブセットをサポートします。「プラットフォームイベント項目」を参照してください。次の表に、プリンターインクイベントのカスタム項目の定義のサンプルを示します。

項目名 項目 API 参照名 項目の型
Printer Model (プリンターモデル) Printer_Model__c Text
Serial Number (シリアル番号) Serial_Number__c Text
Ink Percentage (インクレベル) Ink_Percentage__c Number

カスタムプラットフォームイベントは、Lightning プラットフォームで Apex またはポイントアンドクリックツール (プロセスビルダー、Flow Builder など) を使用して公開したり、外部アプリケーションで API を使用して公開したりできます。同様に、イベントは、プラットフォームで Apex トリガーまたはポイントアンドクリックツールを使用して登録したり、外部アプリケーションで CometD ベースのストリーミング API または Pub/Sub API を使用して登録したりできます。アプリケーションでイベントメッセージが公開されると、イベントサブスクライバーはイベントメッセージを受信し、ビジネスロジックを実行します。プリンターインクの例を使用すると、プリンターを監視しているソフトウェアシステムは、インクレベルが低くなったときに API コールを実行してイベントを公開します。プリンターイベントメッセージには、プリンターモデル、シリアル番号、およびインクレベルが含まれます。プリンターがイベントメッセージを送信すると、Salesforce で Apex トリガーが起動されます。トリガーはケースレコードを作成し、新しいカートリッジの注文を実行します。

標準プラットフォームイベント

Salesforce は、標準プラットフォームイベントと呼ばれる定義済みの項目をイベントに提供します。標準プラットフォームイベントの例として、OAuth 2.0 認証アクティビティを監視する AssetTokenEvent があります。また別の例として、Apex の一括処理ジョブで発生したエラーを報告する BatchApexErrorEvent があります。

Salesforce は、アプリケーションで実行されたアクションや Apex の一括処理ジョブのエラーに応答して標準プラットフォームイベントを公開します。標準プラットフォームイベントストリームを登録するには、イベントでサポートされる登録メカニズムを使用できます。

大規模プラットフォームイベント

大規模プラットフォームイベントを使用して、数百万件のイベントを効率的に公開および処理し、イベントベースのアプリケーションを拡張します。以前は、標準量イベントを使用できました。API バージョン 45.0 以降、新しいカスタムイベント定義のデフォルトは大規模です。標準量イベントは引き続きサポートされますが、新しいイベント定義では使用できません。大規模プラットフォームイベントでは、標準量プラットフォームイベントよりも高い拡張性が提供されます。

大規模プラットフォームイベントには、次の特徴があります。

非同期公開
大量の受信イベントメッセージを効率的に処理するため、大規模プラットフォームイベントは非同期で公開されます。公開コールで成功の結果が返されたら、公開要求が Salesforce のキューに配置されます。システムリソースが使用可能になると、システムによって公開要求が実行され、イベントメッセージがイベントバスに保存されます。キューに入れられたイベントの公開に失敗すると、システムによって 1 回以上のモデルを使用した内部での公開が再試行されます。「プラットフォームイベントの公開に関する考慮事項」を参照してください。
個別のイベント割り当て
Salesforce エディションごとに、CometD クライアントに毎月配信される大規模イベント数のデフォルトの割り当ておよび使用量ベースのエンタイトルメントが提供されます。「プラットフォームイベントの割り当て」を参照してください。

Spring ’21 以降、標準量プラットフォームイベントも非同期で公開されるようになりました。

プラットフォームイベントおよび sObject

プラットフォームイベントは特別な種類の Salesforce エンティティであり、多くの点で sObject に似ています。イベントメッセージはプラットフォームイベントの���ンスタンスです。これは、レコードがカスタムオブジェクトまたは標準オブジェクトのインスタンスであるという点で似ています。ただし、カスタムオブジェクトや標準オブジェクトとは異なり、イベントレコードの更新または削除はできません。また、イベントレコードを Salesforce ユーザーインターフェースに表示できないほか、プラットフォームイベントにページレイアウトはありません。プラットフォームイベント定義を削除すると、プラットフォームイベント定義は完全に削除されます。

プラットフォームイベントの権限

プラットフォームイベントを公開および登録するための権限をユーザーに付与します。

必要なユーザー権限
プラットフォームイベントを公開する 「プラットフォームイベントオブジェクトの作成」
プラットフォームイベントを登録する 「プラットフォームイベントオブジェクトの参照」

ユーザー権限の付与についての詳細は、Salesforce ヘルプ「データアクセスの管理」を参照してください。

プラットフォームイベントおよびトランザクション

プラットフォームイベントメッセージは、プラットフォームイベント定義で設定した公開動作に応じて、ただちに、またはトランザクションがコミットされた後に公開されます。すぐに公開されるように定義されたプラットフォームイベントでは、トランザクションの境界が考慮されませんが、トランザクションがコミットされた後に公開されるように定義されたイベントでは考慮されます。詳細は、「プラットフォームイベント項目」を参照してください。

  • プラットフォームイベントの公開動作が [すぐに公開] に設定されている場合:
    • API を使用して公開した場合、allOrNone API ヘッダーは無視されます。同じコールでも、一部のイベントは公開され、他のイベントは失敗する場合があります。
    • 公開されたイベントメッセージをロールバックすることはできません。また、Apex の setSavepoint() および rollback() Database クラスメソッドはサポートされません。
  • 公開動作が [コミット後に公開] に設定されている場合:
    • allOrNone ヘッダー値が有効になります。allOrNonetrue に設定されている場合、同じコールでも、1 つ以上のイベントが失敗した場合、いずれのイベントも公開されません。
    • 公開されたイベントメッセージを Apex の setSavepoint() および rollback() Database クラスメソッドによってロールバックすることはできません。
  • 大規模プラットフォームイベントの公開は非同期です。詳細は、「非同期公開」を参照してください。

プラットフォームイベントを公開する場合、DML 制限と他の Apex ガバナ制限が適用されます。

イベントバスでのイベント保持

大規模プラットフォームイベントメッセージは 72 時間 (3 日) 保存されます。標準量プラットフォームイベントメッセージは 24 時間 (1 日) 保存されます。CometD クライアントを使用してチャネルに登録すると、過去のイベントメッセージを取得できます。

詳細は、『ストリーミング API 開発者ガイド』「メッセージの永続性」を参照してください。

イベントの順序

1 つの公開コールで複数のイベントを公開する場合、その公開要求のバッチ内のイベントの順序は保証されます。したがって、イベントバスに保存されサブスクライバーに配信されるイベントメッセージの順序は、コールに渡されるイベントの順序に一致します。Apex EventBus.publish メソッドや REST API 複合リソースなど、複数のイベントを公開できる方法はいくつかあります。さまざまな要求でイベントが公開される場合、さまざまな Salesforce アプリケーションサーバーで公開要求が処理される可能性があるため、イベントの順序は保証されません。その結果、後の要求が前の要求よりも早く処理される可能性があります。

Salesforce は、受信したプラットフォームイベントメッセージに再生 ID 値を割り当てて、その値をイベントバスで保持します。サブスクライバーはこの再生 ID の順序でイベントバスからプラットフォームイベントメッセージを受信します。