CSVの内容をいくつかの「読み込み」に解析するアプリケーションを構築しています。次に、これらの読み取り値をデータベースに追加されたREST APIサーバーに送信します。REST APIへのPOSTアイテムのキューイング
これまでのところ、とてもうまくいっています。しかし、サーバーとの接続に問題があることがあります(遅れたり、APIが何らかの理由でダウンした場合)。
これに対処するために、Sidekiqを使用して送信を非同期に実行することを計画しました。しかし、私が質問のカップルしている:私はポストを実行するためにActiveJobを作成し、CSVが解析されるときにだけ、このジョブをキューイングオフ最高
のですか?私は、接続の問題がある場合、最終的には追加されたのと同じ順序で再開するだろうと思いますか?
サイドキックがジョブを「再試行」する必要がありますか、それとも自動的に行われますか?
最後に、SidekiqがRedisを使用しているため、キューに項目があるときにアプリケーションサーバーがクラッシュしても失われないように永続性を有効にする必要がありますか?
他には何か考慮すべき点はありますか?これに取り組むより良い方法は?
CSVの行数は1〜2行しかなく、それぞれの値が15程度で、5分ごとに到着します。それで、そのことを念頭に置いて、私は「行の後処理」ジョブを作成し、「プロセスCSV」ジョブではなく行単位で処理する必要があると思いますか? –
@JoeCzucha、そうですね、これはもっと良いアプローチだと思います。この方法では、失敗したジョブは自動的に処理され、正常に処理された行に対して再び実行されることはありません。 –
ヒントありがとうございます:) CRONジョブを実行してn分ごとにキュー内のすべてを自動的に送信する必要がありますか、アプリケーションのクラッシュ/再起動のイベントでキューを再開しますか? –