メインコンテンツへスキップ
ストリーミングデータを取得する際には、接続時間を最大限に伸ばし、条件に一致したすべてのデータを受信することが基本的な目標になります。つまり、冗長な接続を活用し、自動的に切断を検知して速やかに再接続し、失われたデータを復旧するための計画を用意しておくことが重要です。 このインテグレーションガイドでは、冗長接続、バックフィル、および復旧といった、さまざまな復旧と冗長性の機能について説明します。  

冗長接続

冗長接続を使用すると、ストリームに対して複数の同時接続を確立できます。これにより、2 つの別々のコンシューマーから同じストリームに接続し、両方の接続で同じデータを受信できるため、冗長性が確保されます。これによって、どちらか一方のストリーム接続が切断された場合や、アプリケーションのプライマリサーバーが障害を起こした場合など、さまざまな状況に対してアプリケーションにホットスタンバイのフェイルオーバーを持たせることができます。 冗長ストリームを使用するには、プライマリ接続に使用しているのと同じ URL に接続するだけです。ストリームのデータは両方の接続を通じて送信されます。

バックフィル

切断を検知したら、システムはストリームに再接続できるように設計しておく必要があります。可能であれば、適切なリカバリ機能を使ってデータをバックフィルできるよう、切断がどのくらいの時間続いたかを記録しておくべきです。  切断時間が 5 分以下であると判断できた場合は、バックフィル用のパラメータ backfillMinutes を使用できます。 このパラメータを GET /powerstream リクエストに指定すると、直近 1〜5 分間にルールにマッチした投稿を受け取ることができます。通常、これらの古い投稿は新たにマッチした投稿よりも先に配信され、また投稿の重複排除は行われません。つまり、90 秒間切断されていたにもかかわらず 2 分間分のバックフィルデータを要求した場合、30 秒分の重複した投稿を受け取ることになり、システム側でそれを許容できるようにしておく必要があります。以下は、バックフィルパラメータを指定したリクエスト例です。 curl 'https://api.x.com/2/powerstream?backfillMinutes=5' -H "Authorization: Bearer $ACCESS_TOKEN" 切断時間が 5 分を超えていたと判断できた場合は、recent search endpoint もしくはリカバリ機能を利用して、取り逃したデータを取得できます。 

リカバリ

5 分間のバックフィルウィンドウ内に再接続できない場合、Recovery 機能を使用して、直近 24 時間以内に取得し損ねたデータを再取得できます。 ストリーミングのリカバリ機能を使用すると、バックフィルウィンドウを 24 時間まで拡張できます。Recovery を利用すると、取得し損ねたデータの期間を「リプレイ」できます。startTimeendTime リクエストパラメータを使用して接続リクエストを行うと、リカバリストリームが開始されます。接続されると、Recovery は指定された期間のデータを再ストリーミングし、その後切断します。  
NameTypeDescription
startTimedate (ISO 8601)YYYY-MM-DDTHH:mm:ssZ (ISO 8601/RFC 3339)。

リカバリを開始する時刻を表す UTC の日時。
endTimedate (ISO 8601)YYYY-MM-DDTHH:mm:ssZ (ISO 8601/RFC 3339)。

リカバリを終了する時刻を表す UTC の日時。
リクエスト URL の例: https://api.x.com/2/powerstream?startTime=2022-07-12T15:10:00Z&endTime=2022-07-12T15:20:00Z