Laden...

MS Graph Delta Dauer der Verarbeitung

Erstellt von TotalerASPNETN00B vor 2 Jahren Letzter Beitrag vor 2 Jahren 267 Views
T
TotalerASPNETN00B Themenstarter:in
20 Beiträge seit 2021
vor 2 Jahren
MS Graph Delta Dauer der Verarbeitung

Hallo liebe Community,

ich hab folgende Problem was mir den Kopf zermartert.

Ich hab mit Hilfe des MS Graph SDK einen Notification Service (in ASP .Net Core) gecoded, der bei mir bei Ändernungen im OneDrive eine Mitteilung ausgibt (Delta-Anfragen) was geändert wurde , das klappt auch alles ganz gut.

Nun hab ich eine Posgresql Datenbank "dazu geschaltet" ,dort werden mit Hilfe des Entity Core Framework Informationen zu den Dateien (also das was in einer Delta-Anfrage steht) reingeschrieben, was auch klappt.

Jetzt ist das Problem das dieser ganze Vorgang mehrere Sekunden dauern kann, was aber zu Folge hat, wenn es mehr als 3 Sekunden dauert, das ich mehrere Benachrichtigungen hintereinander bekommen kann, was doof ist. Stichwort: Enschränkungen

Anmerkung: ohne Datenbank würde es unter 1 Sekunde dauern. Gemessen wurde die Zeiten mit Stopwatch

Ich müsste bevor ich alles verarbeite einen 2xx Statuscode (wie Ok oder Accepted) zurückgeben.

Kann man einen Statuscode vor der eigentlichen Verarbeitung abschicken ? So das es erst danach verarbeitet wird ?

Habt ihr ein paar theoretische Ansätze die mir weiterhelfen könnten ?

Über konstruktive Ansätze würde ich mich sehr freuen 🙂

P
441 Beiträge seit 2014
vor 2 Jahren

Hi,

hier gibt es mehrere Möglichkeiten damit umzugehen.
Dein Ziel wäre es ja, die Datenbank Verarbeitung asynchron im Hintergrund laufen zu lassen.

Du kannst die Verarbeitung mit der Datenbank bspw. einfach in einem IHostedService auslagern mit einem Channel mit diesem kommunizieren.

T
TotalerASPNETN00B Themenstarter:in
20 Beiträge seit 2021
vor 2 Jahren

Du kannst die Verarbeitung mit der Datenbank bspw. einfach in einem IHostedService auslagern mit einem
>
mit diesem kommunizieren.

Hallo, und vielen dank für deine Rückmeldung 🙂

Ich dachte auch an so etwas wie einen Backroundworker o.ä.
Aber ist der Vorschlag von dir auch auch Threadsafe ? Also das wenn der Vorgang nicht abergeschlossen ist und wärenddessen eine weitere Speicheranfrage kommt, das dieser nicht blockert wird oder so.

P
441 Beiträge seit 2014
vor 2 Jahren

Das kommt drauf an, wie du das gestaltest.

Der Channel an sich ist Thread Safe (auch eine ConucrrentQueue wäre hier möglich, das ist nur ein Beispiel).
Am besten du liest einfach die Doku hinter dem Link, den ich gepostet habe. Der Rest hängt davon ab, ob du parallelisieren kannst.