Pub/Sub API を使用する
学習の目的
この単元を完了すると、次のことができるようになります。
- Pub/Sub API の特徴について説明する。
- Pub/Sub API でサポートされるさまざまなイベント製品について説明する。
- イベントバスの使用と再生オプションを指定する方法について説明する。
ストリーミングイベント
Salesforce のデータ API に関する調査の結論を出すために、まったく異なるユースケースに用いられるもう 1 つの API を見てみましょう。Pub/Sub API を使用すると、リアルタイムイベントに登録し、リアルタイムイベントを使用して外部システムを統合できます。イベントストリームは、プラットフォームイベントを介したカスタムペイロードまたは変更データキャプチャを介した Salesforce レコードの変更に基づいています。Salesforce 内で、Apex トリガー、プロセスビルダー、Flow Builder を使用して、イベントの公開と登録を実行できます。
単元 1 で説明したとおり、Pub/Sub API は Salesforce との高スケールな双方向イベントインテグレーション用に作成されています。Pub/Sub API を使用すると、Apache Avro 形式でバイナリイベントメッセージを効率的に公開および登録できます。Pub/Sub API は gRPC と HTTP/2 に基づいており、プルベースモデルを使用しているため、登録フローをコントロールできます。Pub/Sub API サービスは proto ファイルで定義されます。Pub/Sub API では、gRPC がサポートする 11 のプログラミング言語のいずれかを使用できます。
Salesforce の外部にあるシステムにビジネスデータが保存されている場合は特に Salesforce のデータ変更の追跡が役立ちます。Pub/Sub API を使用すれば、変更データキャプチャイベントを使用して、外部ソースを Salesforce データと常に同期させておくことができます。また、この API により、Salesforce でのデータの変更に応じて、外部システムでビジネスプロセスを処理できます。たとえば、Pub/Sub API を使用すれば、商談が更新されるたびに注文発送センターに通知することができます。
データ変更のほかにも、Pub/Sub API でプラットフォームイベントを使用してカスタム通知を送信できます。たとえば、アプリケーションは、注文フルフィルメントサービスが処理する注文のプラットフォームイベント通知を生成できます。または、Salesforce によって公開されるプラットフォームイベントをリスンして、Salesforce 内のユーザーアクティビティを監視できます。
Pub/Sub API とイベント製品
次のイベントの公開と登録ができます。
- 変更データキャプチャ — 変更データキャプチャを使用すると、サポート対象である変更された項目すべてのレコードの変更を受信します。追跡されるレコード操作は、レコードの作成、更新、削除、復元です。各イベントメッセージには、変更に関する情報を表示するヘッダー項目が含まれます。
- プラットフォームイベント — カスタムプラットフォームイベントを使用して、カスタム通知を公開および登録できます。プラットフォームイベントオブジェクトと項目を作成して、イベントデータのスキーマを定義できます。また、リアルタイムイベント監視イベントなど、Salesforce によって定義および公開される標準プラットフォームイベントに登録して、Salesforce 内のユーザー関連アクティビティやセキュリティ関連アクティビティなどを監視できます。
イベント製品ではイベントバスが使用されています。イベントバスは、イベントメッセージの保存と取得を可能にするサービスです。
プラットフォームイベントと変更データキャプチャでは、柔軟性、拡張性、強化されたセキュリティが提供されています。
- Apex トリガーを使用してプラットフォームイベントと変更データキャプチャイベントに登録できます。さらに、プラットフォームイベントではフローとプロセスを使用した登録がサポートされています。
- また、イベントデータの保存時の暗号化がサポートされています。
- プラットフォームイベントまたは変更データキャプチャイベントのバージョン付きスキーマで、登録者はイベントを確定的に解析できます。各スキーマのバージョンは、イベント通知メッセージに含まれる一意のスキーマ ID に対応しています。
- 変更データキャプチャには、変更に関する情報を持つヘッダー項目が含まれます。
イベントバスを使用した過去の通知の取得
API バージョン 37.0 以降、イベントはイベントバスに公開されます。登録者はイベントバスのチャネルから、イベント (一時的に保存されている過去のイベントを含む) を取得します。イベントバスは、イベント登録者からイベント公開者を切り離します。
Salesforce では、大規模プラットフォームイベントと変更データキャプチャイベントが 72 時間保存されます。保存されたイベントメッセージをイベントバスから取得すると、クライアントが切断されていた間に見逃したイベントを確認できます。
各イベントメッセージには、ReplayId 項目に含まれる不透明な ID が割り当てられます。ReplayId 項目値は、イベントが登録者に配信されるときにシステムによって入力され、イベントストリーム内のイベントの位置を参照します。連続するイベントの再実行 ID 値が連番になるという保証はありません。
登録者は、再実行 ID 値を保存し、その ID を再登録で使用して保持期間内のイベントを取得することができます。たとえば、登録者は接続障害が発生した後に、欠落イベントを取得できます。登録者が、保存された再実行 ID に基づいて新しい再実行 ID を計算し、ストリーム内の他のイベントを参照することはできません。
さらに、次の表に示す他の再生オプションがあります。再生オプションは ReplayPreset
列挙で指定されます。
ReplayPreset オプション | 説明 | 使用方法 |
---|---|---|
CUSTOM with Replay ID (再実行 ID を使用した CUSTOM) |
登録者は、replayId 値で指定したイベント後に発生したすべての保存されたイベントと新しいイベントを受信します。 |
特定のイベントメッセージ (接続障害など) の後に、見逃したイベントを確認することができます。特定の再生 ID を使用して登録するには、取得する保存されたイベントの最初のイベントメッセージの再生 ID を保存します。そして、再登録するときにこの再生 ID を使用します。 再生 ID は不透明であるため、再生 ID 値をバイトとして保存します。 |
LATEST (最新) |
登録者は、クライアントが登録した後にブロードキャストされる新規イベントを受信します。 |
新しいイベントメッセージを受信するように、クライアントは LATEST (最新)オプションを使用して登録することをお勧めします。クライアントが以前のイベントメッセージを取得する必要がある場合は、他の再生オプションを使用できます。 |
EARLIEST (最早) |
登録者は、保管期間中の過去のイベントと、新規イベントを含め、すべてのイベントを受信します。 |
たとえば接続障害などの後に、見逃したイベントを確認し、すべての保存されているイベントを取得することができます。このオプションは慎重に使用してください。多数のイベントメッセージが保存されている場合に EARLIEST (最早) オプションを使用して登録すると、パフォーマンスが低下する恐れがあります。 |
次の図は、イベントコンシューマーがさまざまな再生オプションを使用してイベントのストリームを読み取る方法を示しています。