Amazon DynamoDBAsyncClientを使用して大量のデータをDynamoに書き込もうとしていますが、スロットル処理のベストプラクティスが何であるかを理解しようとしていますか?スロットル時にDynamoDbの書き込みを再試行する方法は?
たとえば、私は3000の書き込み容量を持っており、与えられた瞬間には、私が書きたいと思う100,000のレコードがあります。私はすぐにそれらをすべて必要としませんが、私はそれらを得るための最良の方法が何であるか把握しようとしています。
このアプリケーションは分散環境で実行されているため、5人のエグゼキュータがすべて同時にこの操作を実行しようとしています。このようにこれを処理する最良の方法はありますか?私が眠っている場所では、書き込みプロセスがスロットルに当たっていますか?または、スロットルを完全に避けるために何かをしなければなりません。実際には、私のコードは私が思っていることをしています、それは秒を待ってからデータを再試行していますか?
try{
amazonDynamoAsyncDb.updateItemAsync(updateRequest)
}catch{
case e: ThrottlingException => {
Thread.sleep(1000)
//retry here, but how?
}
}
実際、私は自力で自動的に再試行することを知りました。誰でも確認できますか? –
あなたが必要とするのはスケジューラかもしれません、あなたはAkkaに精通していますか?これを行うアクターを作成することができます。試行が失敗した場合、アクターは1秒後に自分自身にメッセージを送信して、再度試みるように思い出させます。あるいは、この[gist](https://gist.github.com/viktorklang/9414163)、つまり 'retry'パターンを使うことができます。 –
私はおなじみではありませんが、私はAkkaについて聞いたことがあります。私はそれらの2つのオプションを調べます。ご協力ありがとうございました。 –