Wieviel Einträge kommen den pro Sekunde?
Es kann eh nur eine Nachricht entgegen genommen werden. Wenn diese verarbeitet wurde wird die nächste angenommen. Morgens können schon mal 20.000 Nachrichten kommen. Diese dürfen sich dann aber nicht stauen und müssen alle der Reihe nach bearbeitet werden.
ADS?
Ist die Sekunde zu lang, weil dadurch der Hauptthread blockiert wird und daher keine Daten mehr ankommen?
In diesem Fall einfach die Datenbankoperationen in einen Thread auslagern (oder mehrere, jeweils mit einer Connection pro Client-Thread).
Und man kann die eintreffenden Daten erst mal in einer in-memory Queue speichern, um kurze Spitzenlasten abfangen zu können.
Sind es asynchrone Sockets, die die Haupt-Messageloop verwenden? Auch diesen Bereich könnte man in einen oder mehrere Hintergrundthreads auslagern, mit
Indy oder Synapse und blockierenden Sockets wird es dann deutlich einfacher und performanter.
Es kann eh nur ein Auftrag entgegen genommen werden, siehe oben. Verwenden blockierende Sockets.
Kann die Daten aber auch nicht zwischenspeichern oder in einer Queue speichern. Wenn der Rechner abschmiert gehen eventuell 200 Einträge verloren.