Ich erstelle eine App, die den Inhalt einer CSV in eine Reihe von "Lesungen" analysiert. Anschließend werden diese Messwerte an einen REST-API-Server gesendet, wo sie einer Datenbank hinzugefügt werden.Einreihen von Elementen für das POST an eine REST-API
So weit so gut (und das oben genannte funktioniert). Ich bin mir jedoch bewusst, dass gelegentlich Verbindungsprobleme mit dem Server auftreten können (Verzögerungen oder wenn die API aus irgendeinem Grund ausfällt).
Um dies anzugehen, plante ich mit Sidekiq, um die Übertragung asynchron durchzuführen. Allerdings habe ich ein paar Fragen:
Bin ich am besten aus einem ActiveJob Schaffung der Post durchzuführen und dann nur diesen Job Warteschlangen, wenn die CSV analysiert wird? Ich nehme an, dass, wenn es ein Verbindungsproblem gibt, es schließlich in der gleichen Reihenfolge fortsetzen würde, wie sie hinzugefügt werden?
Muss ich Sidekiq anweisen, den Job "erneut zu versuchen", oder wird das einfach automatisch passieren?
Schließlich, wie Sidekiq Redis verwendet, sollte Persistenz aktivieren, so dass, wenn der App-Server abstürzt, während es Elemente in der Warteschlange gibt sie nicht verloren gehen?
Gibt es noch etwas zu beachten? Oder eine bessere Lösung?
Die CSV enthält nur 1-2 Zeilen mit jeweils 15 Werten, die alle 5 Minuten ankommen. In Anbetracht dessen denke ich, dass ich einen "Post-Row" -Arbeit erstellen sollte und ihn pro Zeile statt einem "Prozess-CSV" -Auftrag behandeln sollte? –
@JoeCzucha, ja ich denke das wäre der bessere Ansatz. Dieser Ansatz behandelt die fehlgeschlagenen Jobs automatisch und wird nie wieder für die erfolgreich verarbeitete Zeile ausgeführt. –
Danke für die Tipps :) Müsste ich einen CRON-Job ausführen, um automatisch alle n Minuten alle Daten in der Warteschlange zu übertragen, oder würde Sidekiq automatisch die Warteschlange beim Absturz/Neustart der App fortsetzen? –