0

Ich plane, ein Modul zur asynchronen Dateigenerierung in meiner Anwendung mithilfe einer Nachrichtenwarteschlange (RabbitMQ) zu implementieren. Wenn Benutzer Daten über eine Webanwendungsbenutzeroberfläche eingeben, werden die Daten in den MQ eingegeben. Die Daten enthalten auch die ID des anfragenden Benutzers. Es gibt eine Worker-Anwendung, die die Warteschlange abfragt. Der Worker entfernt ein Element aus der Warteschlange, verarbeitet den Datensatz, erstellt als Ergebnis eine Datei und speichert die Datei in der Datenbank. Meine Forderung ist, dass ich ein Raster für den Benutzer angezeigt werden soll, der den Status aller Anfragen die sie gemacht haben, wie in der folgenden Tabelle dargestelltWie kann ich den Status eines Elements in einer Nachrichtenwarteschlange melden?

---------------------------- 
Report Name | Status  
---------------------------- 
Report 1  | Not Started 
Report 2  | Completed 
---------------------------- 

Alle Einzelteile noch im MQ sollte den Status als "zeigen Nicht gestartet '. Theoretisch würde dies dazu führen, dass ich alle Nachrichten in der MQ abfrage, wobei Benutzer-ID = aktuelle Benutzer-ID ist. Ich denke, es ist nicht sehr effizient, alle Nachrichten von MQ zu sehen, anders als in einer SQL-Tabelle. Grundsätzlich suche ich nach verschiedenen/besseren Optionen, um dies aus Sicht des Designs/der Architektur so gut wie möglich zu handhaben.

Antwort

1

Sie müssen eine Shadow-Tabelle irgendwo in einer Datenbank (SQL) erstellen. Wenn Sie ein Element in die Warteschlange schieben, fügen Sie einen Eintrag in der Datenbank hinzu. Wenn Sie das Element aus der Warteschlange ziehen, aktualisieren Sie den Status und wenn Sie fertig sind mach es nochmal. Ja, es ist ein wenig mühsam, eine zweite Datenbank zu haben, aber Warteschlangen sollen Ihnen helfen, Nachrichten sequentiell zu verarbeiten und nicht den Status aller zu aktualisieren.

Verwandte Themen