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

メッセージの永続性

Salesforce ではイベントが 24 時間保存されるため、その保持期間は保存されたイベントを取得できます。ストリーミング API イベントフレームワークでは、イベントプロデューサがイベントコンシューマから分離されます。登録者は、送信時にイベントをリスンするだけではなく、いつでもイベントを取得できます。

イベント採番

各ブロードキャストイベントには、数値の ID が割り当てられます。ID は増分されますが、連続するイベントに連番が振られるという保証はありません。ただし、各 ID がその前のイベントの ID よりも大きいことは保証されます。たとえば、ID 999 のイベントの次のイベントの ID が 1,025 になることもあり得ます。ID は組織およびチャネルで一意です。削除されたイベントの ID は再利用されません。

ID は、通知メッセージの replayId 項目に追加されます。たとえば、次の JSON メッセージは汎用イベントのイベントオブジェクトの replayId 項目を示します。

1{
2 "clientId":"a1ps4wpe52qytvcvbsko09tapc",
3 "data":{
4    "event":{
5            "createdDate":"2016-03-29T19:05:28.334Z",
6            "replayId":55
7        },
8    "payload":"This is a message."
9    },
10 "channel":"/u/TestStreaming"
11}

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

1{
2  "clientId":"2t80j2hcog29sdh9ihjd9643a",
3  "data":{
4    "event":{
5        "createdDate":"2016-03-29T16:40:08.208Z",
6        "replayId":13,
7        "type":"created"
8     },
9     "sobject":{
10         "Website":null,
11         "Id":"001D000000KnaXjIAJ",
12         "Name":"TicTacToe"
13     }
14  },
15  "channel":"/topic/TestAccountStreaming"
16}

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

メモ

イベントの再生

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

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

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

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

1https://Salesforce_Instance/cometd/37.0/

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

メモ

再生メカニズムは、Salesforce が提供する CometD 拡張で実装されます。拡張の例は、JavaScript や Java で提供されます。たとえば、次のように JavaScript で拡張を登録できます。
1// Register streaming extension
2var replayExtension = new cometdReplayExtension();
3replayExtension.setChannel(<Streaming Channel to Subscribe to>);
4replayExtension.setReplay(<Event Replay Option>);
5cometd.registerExtension('myReplayExtensionName', replayExtension);
  • setReplay() に渡される引数は、「メッセージの永続性」に記載された再生オプションの 1 つです。
  • registerExtension() に渡される最初の引数は、コードの再生拡張の名前です。この例では myExtensionName に設定されていますが、任意の文字列にもできます。後で拡張を登録解除する場合は、この名前を使用します。
  • setReplay() 関数がコールされない場合、または CometD 拡張が登録されない場合、新規イベントのみが登録者に送信されます (-1 オプションと同じ)。

メモ

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

コードサンプル

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