2016-11-19 1 views
0

Mein Programm sollte seine Abonnenten über neue Anrufe, beendete Anrufe, Übertragungen und so weiter informieren.Wie schnell CEL-Ereignisse in die Datenbank geschrieben werden?

Ich kann CEL-Ereignisse in der AMI hören, aber einfachere Lösung Datenbank alle X Sekunden abzufragen und Datensätze von dort zu behandeln, da ich es trotzdem tun muss, um Anrufe zu verarbeiten, die stattfanden, als mein Programm warn Ich renne nicht.
(Ja, ich weiß, in der Regel geschoben Ereignisse sind besser als Polling, aber nicht in diesem Fall, IMO)

Aber ich bin nicht sicher, wie schnell CEL Ereignisse in die Datenbank ausgegeben werden. Gibt es Verzögerungen oder Warteschlangen?

Ich habe auf meinem lokalen Asterisk getestet und Ereignisse erschienen in der Datenbank sofort, aber auf einigen hoch belasteten Instanzen ist dies möglicherweise nicht so.

Antwort

1

Es gibt keine Warteschlange. Wenn der CEL-Treiber der Back-End-Datenbank geladen wird, initialisiert er die Verbindung zur Datenbank. Wenn ein Ereignis eintritt, blockiert es im Grunde die Ausführung dieses Aufrufs, bis der Datenbankvorgang beendet ist (Erfolg, Fehlschlag, Zeitüberschreitung).

Wenn ODBC verwendet wird, ist das ein bisschen anders, wie ich mich erinnere. Es verarbeitet Datenbanktransaktionen und Cursor, aber immer noch keine Warteschlange. Ich bin mir nicht sicher über Verbindungspooling.

+0

Dieses Verhalten ist auch der Nachteil von Asterisk. Es ist nicht für Systeme mit hohem Verkehr geeignet. – viktike

Verwandte Themen