2017-04-07 3 views
0

Kinesisストリームには存在するが、KCLコンシューマアプリケーションでは受信されていないレコードがいくつかあります。これが起こる理由は何でしょうか?前後のレコードは順調に進んでいます。KCL消費者レコードがありません

すべての例外は私のアプリケーションで消費され、KCLによって受信されません。したがって、http://docs.aws.amazon.com/streams/latest/dev/troubleshooting-consumers.html#w1ab1c11c11c15b9のケースも起こっていません。

いくつかの詳細は:オープン破片の 数:クローズド破片の4 数:実行している労働者の3 数:5

私は私のキネシスの生産者からのシーケンス番号をフェッチし、直接としてAT_SEQUENCE_NUMBERを使用してレコードをフェッチ私はこれらのレコードを見ることができます。

ストリームにはストリームがありますが、KCLアプリケーションはそれを受信して​​いません。

+0

にも同じ問題があります。あなたはそれを解決する方法を見つけましたか? –

答えて

0

キネシスレスポンスの "millis_behind_latest"の値を見てください。 値が〜86399000 &の場合、ストリーム保存期間は24 時間(86400000)です。これは、空の 応答が得られる理由を説明しています。

shard_iteratorを使用してレコードを取得するまでに、レコードの保存期間を超えたため、レコードはストリームに存在しなくなりました。したがって、最も古いレコードが期限切れになり、データストリームにもはや存在しないため、空の結果が得られます。したがって、shard_iteratorはディスクの空き領域を指しています。

このようなことが起きた場合、「next_shard_iterator」の値をとり、get_recordsを使用してもう一度キネシスデータレコードを取得します。たぶん、データは並行/連続メモリ・メモリ・ブロックに格納されないため、データの取得と検索の間に空の結果が得られます。

"next_shard_iterator"の値をとって、 "millis_behind_latest"の値が0になるまでget_recordsを使用してください。

あなたは間違いなくすべてのデータをキネシスストリームに追加します。

この回答が役立ちます。 :)

関連する問題