
Service - Chatbot
Funktionen
- Einhaltung von Message/Zeitspanne Restriktionen
- Kommunikation via IRC Protokoll (Twitch)
- Prüfung des Moderator-Statuses, erfolgter Bans oder Timeouts für den Chat-Bot
- Versand von Nachrichten mit zukünftigen Zeitstempel
- Auslesen/Vorbereiten der Nachrichten aus Datenbank/Rückmeldung an Datenbank
- Konfigurierbar über JSON Datei
- Autark
Besonderheiten
Lesen von Nachrichten
Um einen Rückstau von Nachrichten zu vermeiden, wurden folgende Muster integriert:
Maximale Kanäle je Verbindung abhängig von Gewichtung
Es werden jeder Verbindung eine Kategorie zugeordnet. Chaträume werden entsprechend Ihrer Größe in diese Kategorien eingeteilt und auf die entsprechenden Verbindungen gesetzt. So haben riesige Chaträume eine eigene Verbindung, wohingegen mehrere kleine Chaträume auf einer Verbindung gehandlet werden. Die Anpassungen erfolgen automatisch.
Verwendung von ArrayBlockingQueues und Reader Arrays
Das Auslesen der empfangenen Daten muss mit der höchstem Priorität erfolgen, da es je nach Implementierung auf der Gegenseite es bei Daten-Rückstau zu Verbindungsabbrüchen kommen kann. Um das zu gewährleisten werden allen Daten vom Verbindungsthread ohne Manipulation in eine ArrayBlockingQueue geschrieben. So ist dieser in kürzester Zeit wieder bereit neue Daten aufzunehmen. Reader Threads lesen die Nachrichten aus und kümmern sich um die entsprechende Weiterverarbeitung. Je nach Backlog Größe werden automatisch neue Reader Threads initialisiert.
Autark
Der Chatbot ist für eine 24/7 Laufzeit ausgelegt. So erfolgt bei einem Absturz des Programms innerhalb von 2 Minuten ein Neustart und bei Verbindungsabbrüchen werden Verbindungen mit Ihrer Kanalstruktur wieder hergestellt.