コンポーネント |
説明 |
イベント |
ビジネスプロセスにおいて意味のある状態の変化。たとえば、発注は意味のあるイベントです。注文履行センターは、注文を処理する前に通知を受け取ることを想定しているからです。 |
イベントメッセージ |
イベントに関するデータが含まれるメッセージ。イベント通知とも呼ばれます。たとえば、イベントメッセージとして、注文の情報が含まれる、発注に関する通知などがあります。 |
イベントプロデューサ |
イベントメッセージの公開者。たとえば、発注アプリケーションなどがあります。 |
イベントチャネル |
イベントのストリームで、そのストリーム上でイベントプロデューサはイベントメッセージを送信し、イベントコンシューマーはそのメッセージを読み込みます。プラットフォームイベントの場合、チャネルは 1 つのプラットフォームイベント用で、そのプラットフォームイベントのすべてのイベントメッセージがグループ化されます。 |
イベントコンシューマー |
チャネルの登録者で、そのチャネルからメッセージを受信します。たとえば、新規注文の通知を受信する注文履行アプリケーションなどがあります。 |
イベントバス |
公開-登録モデルに基づいたマルチテナントでマルチクラウドのイベントストレージおよび配信サービス。イベントバスを使用することで、保持期間内であればいつでも保存されたイベントメッセージを取得できます。時系列イベントログに基づいたイベントバス。イベントメッセージが Salesforce で受信された順序で保存されて配信されるようにします。 |
プラットフォームイベントの定義および公開
公開動作について
- [コミット後に公開] 公開動作を定義したプラットフォームイベントはトランザクションに左右され、ロールバックできる
- トランザクションが正常にコミットされた後にのみ公開される
- 下記の場合、こちらを選択する:
- [すぐに公開] 公開動作を定義したプラットフォームイベントはトランザクションに左右されず、ロールバックできない
- 下記の場合、こちらを選択する:
- トランザクションが成功したかどうかに関係なくイベントメッセージが公開されるようにする場合
- 公開者と登録者が独立していて、公開者がコミットするデータに登録者が依存していない場合
イベント保持と ReplayId システム項目
- Salesforce では、大規模プラットフォームイベントが 72 時間保存される
- 保存されたイベントは API CometD クライアントを使用してイベントバスから取得可能
- Apex トリガでは、サスペンド状態のトリガを再開し、保持された最も古い未処理イベントを取得可能
- Salesforce はイベントメッセージを一時的に保持していますが、SOQL や SOSL を使用したクエリはできない
- 過去のイベントを取得するには、CometD で登録するか、ReplayId オプションを使用する必要
Apex を使用したイベントメッセージの公開
- イベントメッセージを公開するには、イベントのインスタンスを作成して
EventBus.publish()
メソッドに渡す
List<Cloud_News__e> newsEventList = new List<Cloud_News__e>();
Cloud_News__e newsEvent1 = new Cloud_News__e(
Location__c='Mountain City',
Urgent__c=true,
News_Content__c='Lake Road is closed due to mudslides.');
Cloud_News__e newsEvent2 = new Cloud_News__e(
Location__c='Mountain City',
Urgent__c=false,
News_Content__c='Small incident on Goat Lane causing traffic.');
newsEventList.add(newsEvent1);
newsEventList.add(newsEvent2);
List<Database.SaveResult> results = EventBus.publish(newsEventList);
for (Database.SaveResult sr : results) {
if (sr.isSuccess()) {
System.debug('Successfully published event.');
} else {
for(Database.Error err : sr.getErrors()) {
System.debug('Error returned: ' +
err.getStatusCode() +
' - ' +
err.getMessage());
}
}
}
- URI:
/services/data/v45.0/sobjects/yourEventName/
- POST
- Request Body:
{
"Location__c" : "Mountain City",
"Urgent__c" : true,
"News_Content__c" : "Lake Road is closed due to mudslides."
}