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

メッセージの永続性

Salesforce ではイベントを 24 時間保存します。API バージョン 37.0 以降では、保持期間内のイベントを取得できます。

イベントバス

API バージョン 37.0 以降では、イベントはイベントバスに公開されます。登録者は、イベントバスのチャネルからイベント (一時的に保存されている過去のイベントを含む) を取得します。イベントバスは、イベント公開者とイベント登録者を分離します。

Salesforce イベントバス

イベントの再生プロセス

各イベントメッセージに、ReplayId 項目に含まれる不透明 ID が割り当てられます。ReplayId 項目値は、イベントが登録者に配信されるときにシステムによって入力され、イベントストリーム内のイベントの位置を参照します。連続するイベントに対して再生 ID の値に連番が振られるという保証はありません。たとえば、ID 999 のイベントの次のイベントの ID が 1,025 になることもあり得ます。登録者は再生 ID の値を保存し、再登録時にその値を使用して、保持ウィンドウ内のイベントを取得できます。たとえば、登録者は、接続に失敗した後、欠落したイベントを取得できますただし、登録者は、保存した再生 ID に基づいて新しい再生 ID を計算し、システム内の他のイベントを参照することはできません。

次の JSON メッセージは汎用イベントのイベントオブジェクトの replayId 項目を示します。

次の JSON メッセージは PushTopic イベントのイベントオブジェクトの replayId 項目を示します。

API バージョン 37.0 以降では、createdDate 項目値の時刻形式が Salesforce アプリケーションで使用される時刻形式と同じになるように変更されます。時刻部分の末尾は、+0000 ではなく、Z サフィックスになりました。どちらのサフィックスも UTC タイムゾーンで表されます。

メモ

CometD クライアントに配信されるときに、プラットフォームイベントメッセージに再生 ID が含まれます。次の JSON メッセージは Low_Ink__e プラットフォームイベントのイベントオブジェクトの replayId 項目を示します。

次の JSON メッセージは変更データキャプチャイベントのイベントオブジェクトの replayId 項目を示します。

イベントの再生

登録者は、保管期間内や特定のイベント後のすべてのイベントなど、受信するイベントを選択できます。デフォルトでは、登録後に送信された新規イベントのみを受信します。イベントは 24 時間の保管期間を過ぎると破棄されます。

次の概要図は、イベントコンシューマがさまざまな再生オプションを使用してイベントのストリームを読み取る方法を示しています。

再生オプションを使用したイベントのストリームを示す図
表 1. 再生オプション
再生オプション 説明
再生 ID 登録者は、replayId 値で指定されたイベント後のすべてのイベントを受信します。
-1 登録者は、クライアントの登録後にブロードキャストされた新規イベントを受信します。
-2 登録者は、すべてのイベントを受信します。これには、24 時間の保管期間内の過去のイベントと、登録後に送信された新規イベントが含まれます。

イベントを再生するには、ストリーミング API エンドポイントを使用します。

API バージョン 37.0 以降では、このエンドポイントでデュラブルストリーミングがサポートされます。バージョン 36.0 では、デュラブル汎用ストリーミングが代替エンドポイント https://Salesforce_Instance/cometd/replay/36.0/ でサポートされます。ただし、バージョン 37.0 にアップグレードして、メインストリーミング API エンドポイントを使用することをお勧めします。

メモ

再生メカニズムは、Salesforce が提供する CometD 拡張で実装されます。拡張の例は、JavaScript や Java で提供されます。たとえば、次のように JavaScript ��拡張を登録できます。
  • setReplay() に渡される引数は、「再生オプション」に記載された再生オプションの 1 つです。クライアントを –1 オプションで登録して新規イベントを取得するか、特定の再生 ID で登録することをお勧めします。チャネルに多数のイベントメッセージが含まれる場合、–2 オプションで頻繁に登録すると、パフォーマンスの問題が発生する可能性があります。
  • registerExtension() に渡される最初の引数は、コードの再生拡張の名前です。この例では myExtensionName に設定されていますが、任意の文字列にもできます。後で拡張を登録解除する場合は、この名前を使用します。
  • setReplay() 関数がコールされない場合、または CometD 拡張が登録されない場合、新規イベントのみが登録者に送信されます。これは -1 オプションと同じです。

メモ

拡張に対して setReplay() 関数をコールすると、その後で登録者が受信するイベントは setReplay() に渡された再生値パラメータに依存します。

40 秒以内に接続されなかったかネットワーク障害が発生したためにクライアントがタイムアウトすると、クライアントは新しいハンドシェイク要求と再接続を試みます。再生拡張は最後の受信メッセージの再生 ID を保存し、再登録するときにその ID を使用します。そのため、クライアントはタイムアウト後に送信されたメッセージのみを受信し、タイムアウト前に送信された重複メッセージは受信しません。

コードサンプル

Visualforce のサンプル
Visualforce と CometD 拡張を JavaScript で使用する例およびコードのウォークスルーについては、「例: Visualforce ページを使用した登録とイベントの再生」を参照してください。
Java のサンプル
CometD 拡張を使用する Java クライアントのサンプルについては、「例: Java クライアントを使用した登録とイベントの再生」を参照してください。