Ich habe eine Webapi, die entwickelt wurde, um Berichte in einer Warteschlange zu verarbeiten. Die Schritte, die Anwendung erfolgt, sind wie folgt:Wie Sie Hintergrundaufgaben in der ASP.NET-Web-API einbinden
- Receive Inhalt
- Karte den Inhalt auf ein Objekt und legen sie in die Warteschlange
- Poll für Elemente in der Warteschlange
- Prozesselemente in der Warteschlange eine anhängige zu einer Zeit
ich dachte Entity Framework zu verwenden, um eine Datenbank von Warteschlange Elementen zu erstellen, wie zum Beispiel:
Meine Frage- Gibt es eine effizientere Art und Weise, mit NServiceBus, Blocking oder ConcurrentQeueue, als ständig die Datenbank abfragen, und ziehen Sie die Elemente nacheinander anhängig? Ich habe noch nie Warteschlangen benutzt.
Ein Gedanke ist es, eine Warteschlange von Aufgaben und auf einem separaten Thread-Prozess alle ausstehenden Aufgaben zu erstellen. Etwas ähnlich zu Most efficient way to process a queue with threads, aber ich möchte sicherstellen, dass ich die effizienteste Route gehe.
EDIT: Eine große Frage, die ich hier habe, ist der beste Weg, um den Fortschritt für den Benutzer angezeigt werden soll. Sobald der Benutzer den Inhalt übermittelt hat, wird er auf eine neue Seite geleitet und kann den Status anhand der Stapelkennung anzeigen. Ist MSMQ oder NServiceBus erforderlich, um den Benutzer zu benachrichtigen? Dies scheint eine Variation des REquest/Acknowledge/Push-Paradigmas zu sein.
wäre meine Lösung eine 'Lock' Anweisung um den Teil des Codes, wo Sie in die Datenbank schreiben. – efkah
Danke für den Tipp - hatte nicht daran gedacht, und hätte wahrscheinlich später viele Probleme verursacht :) Irgendwelche Gedanken über die Methode der Warteschlangen? Sollte ich versuchen, eine BlockingCollection oder nur die ständige Abfrage der Datenbank zu versuchen? Aktualisierte die Frage mit einer schnellen Bearbeitung – appsecguy