#Streaming APIとは
Salesforceでは、何らかのイベント(データ変更、画面操作等)が発生したタイミングでプッシュ技術を使用してSubscriber(他システム、他処理等)に対して通知を行う機能があります。これをStreaming APIと呼びます。
Streaming APIには以下の4種類が存在しています。
- 変更データキャプチャイベント
- PushTopic イベント
- プラットフォームイベント
- 汎用イベント
#Streaming API選定方法
とても便利なStreaming APIですが、上記の4種類のうちどれを選定するかはよく考えなければなりません。
選定の基準が複雑なので、まとめてみました。
# | 機能 | 主なユースケース | ユースケースの例 | イベントの契機 | 送られるデータ | 特殊能力 | イベント保持期間 |
---|---|---|---|---|---|---|---|
1 | 変更データキャプチャ | SFDCから他システムへのデータ同期 | 「取引先」オブジェクトにレコードを挿入すると、自動的にDWHやERPにデータを連携する。 | レコードの変更 | レコードの全項目 | ①対象オブジェクトの全レコードを取得できる。(その代わり"すべて参照"権限が必要であるため一般ユーザ向けではなく、システム間のデータ複製に使われることが多い) ②イベントに対するトリガを作れる |
3日 |
2 | PushTopic | DBのレコードが更新されたタイミングで画面の表示を更新する | LWCに「他ユーザがレコードを更新しました。画面をリロードしますか?」と表示する。 | レコードの変更 | レコードの指定された項目 | ①対象オブジェクトの一部レコードをSOQLで指定して取得できる。 ②取得するユーザごとにレコード共有が反映される。(よって"すべて参照"権限は不要となるため、一般ユーザの画面表示に使える。) |
1日 |
3 | プラットフォームイベント | Fire and forget形式のシステム連携 | 契約に必要なデータ一式がSFDCに登録された時点で、カスタムプラットフォームイベントを公開する。ESB(もしくはSalesforceのApex/Flow)がそれをSubscribeしており、イベントを契機として当該データ一式をバックエンドに流す。 | 任意のタイミング(Apex, Flow, Process Builder, API) | 事前定義した型に従って自由に設定可能(複数オブジェクトの情報を入れることや文字列加工も可能) | ①同じイベントを全Subscriberに公開できる。 ②イベントに対するトリガを作れる |
1日または3日 ※大規模プラットフォームイベントは最大 3 日間保持される |
4 | 汎用イベント | ユーザを指定した通知 | Aさんにお勧めなパンフレット(PDF)がアップロードされたタイミングで、Aさんの端末がそのことを検知し、バックグラウンドで予めダウンロードしておく。 | 任意のタイミング(API) | 自由に設定可能(複数オブジェクトの情報を入れることや文字列加工も可能) | ①特定のユーザに公開できる。 | 1日 |