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

イベントの再実行プロセス
各イベントメッセージに、ReplayId 項目に含まれる不透明 ID が割り当てられます。ReplayId 項目値は、イベントが登録者に配信されるときにシステムによって入力され、イベントストリーム内のイベントの位置を参照します。連続するイベントに対して再実行 ID の値に連番が振られるという保証はありません。たとえば、ID 999 のイベントの次のイベントの ID が 1,025 になることもあり得ます。登録者は再実行 ID の値を保存し、再登録時にその値を使用して、保持ウィンドウ内のイベントを取得できます。たとえば、登録者は、接続に失敗した後、欠落したイベントを取得できます。ただし、登録者は、保存した再実行 ID に基づいて新しい再実行 ID を計算し、システム内の他のイベントを参照することはできません。
次の JSON メッセージは汎用イベントのイベントオブジェクトの replayId 項目を示します。
次の JSON メッセージは PushTopic イベントのイベントオブジェクトの replayId 項目を示します。
CometD クライアントに配信されるときに、プラットフォームイベントメッセージに再実行 ID が含まれます。次の JSON メッセージは Low_Ink__e プラットフォームイベントのイベントオブジェクトの replayId 項目を示します。
次の JSON メッセージは変更データキャプチャイベントのイベントオブジェクトの replayId 項目を示します。
イベントの再実行
登録者は、保管期間内や特定のイベント後のすべてのイベントなど、受信するイベントを選択できます。デフォルトでは、登録後に送信された新規イベントのみを受信します。イベントは保管期間を過ぎると破棄されます。
次の概要図は、イベントコンシューマがさまざまな再実行オプションを使用してイベントのストリームを読み取る方法を示しています。
イベントを再実行するには、ストリーミング API エンドポイントを使用します。
拡張に対して setReplay() 関数をコールすると、その後で登録者が受信するイベントは setReplay() に渡された再実行値パラメータに依存します。
40 秒以内に接続されなかったかネットワーク障害が発生したためにクライアントがタイムアウトすると、クライアントは新しいハンドシェイク要求と再接続を試みます。再実行拡張は最後の受信メッセージの再実行 ID を保存し、再登録するときにその ID を使用します。そのため、クライアントはタイムアウト後に送信されたメッセージのみを受信し、タイムアウト前に送信された重複メッセージは受信しません。
コードサンプル
- Java のサンプル
- CometD 拡張を使用する Java クライアントのサンプルについては、「例: Java クライアントを使用したイベントの登録と再実行 (EMP コネクタ)」を参照してください。
- Lightning コンポーネントのサンプル
- empApi コンポーネントを使用するサンプルについては、「例: Lightning コンポーネントを使用した登録とイベントの再実行」を参照してください。
- Visualforce のサンプル
- Visualforce と CometD 拡張を JavaScript で使用する例およびコードのウォークスルーについては、「例: Visualforce ページを使用した登録とイベントの再実行」を参照してください。