Ich habe einen Agenten Arbeitsagenten, die alle 60 Sekunden überprüft Verarbeitungstabellen für neue Arbeit, jeweils 60 Sekunden, wenn neue Arbeit verfügbar ist. Während der Verarbeitung verwendet der Agent eine statische TraceHelper-Klasse für die Protokollierung. Zum Zeitpunkt des Schreibens in die Protokolldatei sende ich auch eine WebRequest an eine externe API, um den Protokolleintrag an eine Logstash zu senden.Wartet auf den gleichen HttpRequestMethod warten auf den bestehenden zu beenden
Die Webrequest sendet im Wesentlichen ein JSON-Objekt für jede Writeline. offensichtlich für die Protokollierung, Reihenfolge ist wichtig, so ist meine Frage, obwohl ich nur ein POST HttpWebRequest aufrufen dies passiert Hunderte von Mal pro Minute. Sollte ich mir Sorgen um Synchronisierungsprobleme machen? Könnte es ein Potenzial geben, dass die zweiten Writeline-Anfragen von der HttpWebRequest aufgerufen und verarbeitet werden, bevor die erste Writeline eine Chance zum Senden hat? Oder schaue ich falsch?
Hinweis: unten ist halbPseudoCode
sagen, ich habe die unten
Tracehelper.Writeline("foo")
Tracehelper.Writeline("baa");
static Tracehelper(){}
public static void Writeline(string msg)
{
File.WriteToFile(msg);
WebProcessHelper.SendLog(msg);
}
static WebProcessHelper() {}
public static void SendLog(string msg)
{
SendHttpRequest(msg);
}
Gibt es eine Möglichkeit, dass „baa“ wird vor „foo“ geschickt?
Threading wurde nicht erwähnt, nur Async, das nicht das gleiche ist. Und das Protokollieren sollte immer zusammengelegt werden, besonders wenn Sie remote protokollieren. – Tim