2016-10-20 24 views
0

CSVの内容をいくつかの「読み込み」に解析するアプリケーションを構築しています。次に、これらの読み取り値をデータベースに追加されたREST APIサーバーに送信します。REST APIへのPOSTアイテムのキューイング

これまでのところ、とてもうまくいっています。しかし、サーバーとの接続に問題があることがあります(遅れたり、APIが何らかの理由でダウンした場合)。

これに対処するために、Sidekiqを使用して送信を非同期に実行することを計画しました。しかし、私が質問のカップルしている:私はポストを実行するためにActiveJobを作成し、CSVが解析されるときにだけ、このジョブをキューイングオフ最高

  • のですか?私は、接続の問題がある場合、最終的には追加されたのと同じ順序で再開するだろうと思いますか?

  • サイドキックがジョブを「再試行」する必要がありますか、それとも自動的に行われますか?

  • 最後に、SidekiqがRedisを使用しているため、キューに項目があるときにアプリケーションサーバーがクラッシュしても失われないように永続性を有効にする必要がありますか?

他には何か考慮すべき点はありますか?これに取り組むより良い方法は?

答えて

0

2つのシナリオ )あなたが仕事上でのCSVファイルの完全な処理を入れしようとしているが、その場合には、私は仕事は、それが再び意志失敗した場合、それはとして完璧に機能しないだろうと思い、がありますすべての行をループします。 CSVの別の列を追加して行に印を付ける場合を除き、読んでください。

2)Sidekiqで別々のジョブとして各行を追加すると、大きなCSVファイルがある場合に備えて、あまりにも多くのジョブを作成してしまいますが、 CSV側の処理

+0

CSVの行数は1〜2行しかなく、それぞれの値が15程度で、5分ごとに到着します。それで、そのことを念頭に置いて、私は「行の後処理」ジョブを作成し、「プロセスCSV」ジョブではなく行単位で処理する必要があると思いますか? –

+0

@JoeCzucha、そうですね、これはもっと良いアプローチだと思います。この方法では、失敗したジョブは自動的に処理され、正常に処理された行に対して再び実行されることはありません。 –

+0

ヒントありがとうございます:) CRONジョブを実行してn分ごとにキュー内のすべてを自動的に送信する必要がありますか、アプリケーションのクラッシュ/再起動のイベントでキューを再開しますか? –

関連する問題