Wer schon einmal Systeme gebaut hat, bei denen viele Clients gleichzeitig Nachrichten empfangen und verarbeiten sollen, kennt das Problem: Wie verteile ich Messages effizient, ohne dass ein zentraler Server jede Nachricht individuell zustellen muss? Oft wird dabei auf klassische Message-Broker wie Kafka, RabbitMQ oder MQTT gesetzt. Diese bringen aber ihre eigene Komplexität mit – Setup, Konfiguration, Rechte- und Themenverwaltung. Für viele Szenarien, in denen man einfach nur schnell und flexibel Daten „in die Runde werfen“ möchte, sind solche Schwergewichte schlicht überdimensioniert.
Genau hier setzt der dynamic messaging broadcast server von Symolo an: Ein einfacher Ansatz, Nachrichten über TCP-Sockets (genauer gesagt WebSockets) an viele Teilnehmer gleichzeitig zu verteilen.
Ein wichtiger Unterschied zu klassischen Broadcast-Mechanismen liegt in der Wahl des Protokolls: TCP. Während UDP-Broadcasts nur innerhalb eines lokalen Netzwerks funktionieren – also typischerweise nicht über Routergrenzen hinweg –, ermöglicht TCP die Kommunikation über das Internet hinweg.
Das bedeutet:
Dadurch ist es möglich, dass sich beliebige Teilnehmer – unabhängig von ihrem Standort – in die Nachrichten-Pipeline „reinhängen“ und sofort Teil des Systems werden.
Ein weiterer Vorteil: Das Tool ist bereits fester Bestandteil des Symolo DSF-Servers. Das bedeutet, bei jeder Installation des DSF-Servers steht die Nachrichten-Pipeline sofort zur Verfügung – ohne zusätzlichen Setup-Aufwand oder externe Abhängigkeiten. Entwickler und Administratoren müssen nichts weiter konfigurieren, sondern können direkt nach der Installation Clients anbinden, Filter setzen und Nachrichten verteilen. Damit wird die Funktion nahtlos in bestehende Symolo-Workflows integriert und ist „out of the box“ einsatzbereit.
Die Grundidee ist simpel:
/
beginnen) wird an alle Clients verteilt.Das Besondere: Jeder, der verbunden ist, kann nicht nur empfangen, sondern auch senden. Dadurch entsteht ein sehr flexibles Kommunikationsmodell, das sowohl für Debugging, Event-Streaming als auch für kollaborative Anwendungen nützlich ist.
Sehen wir uns an, wie ein Client aussieht, der sich mit dem Symolo-Server verbindet:
const dmbLogger = new WebSocket("wss://<MEINSERVER>/dmb");
dmbLogger.onopen = () => {
dmbLogger.send("123"); // Erst Authentifizierung mit Passwort
};
dmbLogger.onmessage = (d) => {
// Nach erfolgreicher Authentifizierung
if (d.data === "Welcome") {
// Filter setzen – in diesem Fall nur Nachrichten, die mit "MDE" beginnen
dmbLogger.send("/filter.add>MEINFILTER");
}
// Ab jetzt kommen gefilterte Nachrichten an
if (d.data.startsWith("MEINFILTER")) {
const msgSplit = d.data.split('|');
console.log("Gefilterte Nachricht:", msgSplit);
}
};
Verbindung & Authentifizierung
Der Client verbindet sich mit wss://<MEINSERVER>/dmb
und sendet als Erstes ein Passwort.
Willkommensnachricht
Der Server bestätigt den erfolgreichen Login mit "Welcome"
.
Filter setzen
Anschließend legt der Client fest, welche Nachrichten er empfangen möchte (z. B. /filter.add>MDE
).
Nachrichten empfangen & verarbeiten
Alle Nachrichten, die mit MEINFILTER
beginnen, landen nun im Client, werden geparst und können beliebig weiterverarbeitet werden.
Mit diesem Ansatz gelingt es Symolo, ein leichtgewichtiges, flexibles Nachrichtenverteilungssystem bereitzustellen, das ganz ohne schwerfällige Broker-Lösungen auskommt. Jeder Client kann gleichzeitig Sender und Empfänger sein, und durch die Filterlogik bleibt die Datenflut dennoch kontrollierbar.
Besonders spannend ist der Einsatz von TCP statt UDP-Broadcast: Nachrichten können nicht nur im lokalen Netz, sondern auch problemlos über das Internet verteilt werden – ohne auf spezielle Netzwerk-Setups angewiesen zu sein.
Ob für Debugging, Monitoring oder den schnellen Aufbau von Echtzeitkommunikation – dieses Modell zeigt, wie einfach Messaging über TCP-Sockets sein kann.
Ab Januar tritt eine wichtige Änderung in Kraft: Unternehmen sind gesetzlich verpflichtet, elektronische Rechnungen empfangen zu können. Diese Neuerung betrifft nahezu alle Organisationen, die geschäftliche Transaktionen abwickeln. Doch damit stellt sich die Frage, wie man sicher erkennen kann, ob eine Rechnung tatsächlich eine elektronische Rechnung ist und somit den gesetzlichen Anforderungen entspricht. Der Unterschied zwischen einer klassischen Papierrechnung, einer PDF-Datei und einer echten elektronischen Rechnung ist für viele nicht auf den ersten Blick erkennbar, da sie optisch oft ähnlich wirken.
Um diese Herausforderung zu lösen, wurde ein hilfreiches Werkzeug entwickelt: der sogenannte "Symolo Validator". Dieses Tool wurde speziell dafür geschaffen, Rechnungen zu analysieren und zu prüfen, ob sie den technischen Standards einer elektronischen Rechnung entsprechen. Elektronische Rechnungen sind an bestimmte Formate und Datenstrukturen gebunden, die eine automatisierte Verarbeitung ermöglichen. Der Validator erkennt diese Merkmale und gibt eine klare Auskunft, ob das vorliegende Dokument als elektronische Rechnung gilt oder nicht. Dies ist besonders für Unternehmen wichtig, die sich auf die Einhaltung der neuen Vorschriften verlassen müssen.
Die Nutzung des Symolo Validators ist denkbar einfach und erfordert keinerlei technisches Vorwissen. Um die Prüfung durchzuführen, müssen Sie lediglich die betreffende Datei hochladen. Das Tool analysiert das Dokument und liefert innerhalb kurzer Zeit ein Ergebnis. Dieses zeigt an, ob die hochgeladene Datei die Anforderungen an eine elektronische Rechnung erfüllt. Durch diese einfache Handhabung wird nicht nur sichergestellt, dass Unternehmen gesetzeskonform handeln, sondern auch der Übergang zur Nutzung elektronischer Rechnungen deutlich erleichtert.
Besonders erwähnenswert ist, dass Symolo den Validator kostenlos zur Verfügung stellt. Unternehmen und Nutzer können das Tool nutzen, ohne für die Analyse Gebühren zahlen zu müssen. Allerdings weist Symolo ausdrücklich darauf hin, dass das Tool ohne jegliche Garantie angeboten wird. Das bedeutet, dass die Ergebnisse des Validators zwar hilfreich sind, jedoch nicht als rechtlich bindend oder fehlerfrei garantiert werden können. Nutzer sollten sich dieser Einschränkung bewusst sein und im Zweifel weitere Prüfungen durchführen.
Die Einführung des Symolo Validators ist dennoch ein wertvoller Schritt, um Unsicherheiten im Umgang mit elektronischen Rechnungen zu beseitigen. Unternehmen können sich so auf ihre Kernaufgaben konzentrieren, ohne Zeit und Ressourcen für komplizierte Prüfungen aufwenden zu müssen. Mit diesem praktischen Tool wird die Umstellung auf die neuen Anforderungen effizienter und sorgt dafür, dass Unternehmen auf der sicheren Seite sind. Die kostenfreie Bereitstellung zeigt außerdem, wie Technologie zugänglich gemacht werden kann, um bürokratische Herausforderungen zu meistern und den Arbeitsalltag zu erleichtern.
Hier der Link: https://symolo.de/tools/zugferd_validate.html
Das PDF Format ist ein hervorragendes Format um Dokumente nicht nur per Email zu transportieren, sondern auch zum Drucken oder Archivieren. Die Unterstützung dieses Formats ist inzwischen so ziemlich überall verfügbar. Daher ist es naheliegend, dass auch Symolo dieses Format vollständig unterstützt. Intern wird zum Beispiel jeder einzelne Druckauftrag zuerst als PDF abgebildet und dann an den Drucker weitergereicht. Das bedeutet, dass immer die Möglichkeit zur Verfügung steht, dass gegebenenfalls das Dokument auch nur gespeichert wird oder zusätzlich als Archiveintrag hinterlegt werden kann. Zudem ist das zu erwartende Druckbild immer schon vorher ersichtlich. C# bietet hier schon seit langem Bibliotheken, die aus Java übernommen wurden. Jetzt ist es immer recht aufwendig in C# einfache Aufgaben mit PDFs zu erledigen, da dann immer erstmal ein komplettes Projekt aufgemacht werden muss und wir die ganzen großartigen Typenprüfungen haben. Mit Python kann man meistens schneller ein Prototyp entwickeln und die Logik grundsätzlich mal prüfen, bevor das Ganze dann sauber als C# in den Symoloserver wandert. Alternativ kann man natürlich auch das Python in de Server verfrachten und nutzen. Dazu ist gar nicht so viel notwendig.
Wie immer geht es mit entsprechenden Bibliotheken los:
Plumber wird hierbei für die Analyse verwendet und PyPDF2 für die Verwaltung der Datei.
Fangen wir mal mit der Verwaltung an. Möchte man z.B. die Dateien in einzelne Seiten splitten ist das jetzt ganz einfach:
Die Analyse des Inhaltes kann, mithilfe von pdfplumber, genauso einfach erfolgen:
Und schon kann man die Text zum Beispiel mithilfe von Regex einfach analysieren und Informationen aus den Dateien gewinnen.
Hier sollte vielleicht noch erwähnt werden, dass das Verfahren so nicht auf Bilder in PDFs anwendbar ist. Entweder ist die PDF Datei einen elektronisch erstellte Datei oder es wurde nachträglich entsprechende OCR Daten angefügt. Für einen schnellen Test ist dieses Verfahren aber mehr als ausreichend. Wenn eine OCR Analyse benötigt wird, bringt der Symoloserver dafür bereits passende Funktionen mit. Da der Server ja unkompliziert via Python angesprochen werden kann, ist auch dann immer noch ein schnelles Prototypen unkompliziert realisierbar.
Wenn man mit dem Symolo Server kommunizieren will, ist nicht einfacher als mit einem Websocket darauf zuzugreifen. Das Protokoll ist einfach und lässt sich schnell umsetzten. Keine kompizierten XML Querys oder umfangreiche Anmeldung ist erforderlich. Lediglich ein Autentifizierungstoken muss vorliegen und kann im Vorfeld angefragt werden. Oder, wenn es komplizierter sein soll, kann man auch eine Sitzung anfordern und ist da sogar mit einer Benutzerkennung unterwegs. Mithilfe dieses Verfahrens lassen sich kleinere Anforderungen schnell umsetzten und der Websocket ist inzwischen in den meisten höheren Programmiersprachen Out-of-the-Box verfügbar. Zumindest in den Programmiersprachen in denen Symolo am meisten unterwegs ist. Inzwischen gehört auch Python dazu, da getreu dem Motto, "the right tool for the job", Python bestimmte Aufgaben deutlich eleganter oder effektiver erledigen kann als eine andere höhere Programmiersprache.
Um nun mit dem Symoloserver in Kontakt zu treten ist lediglich das websocket-client paket erforderlich.
Um die Kommunikation zu vereinfachen können wir noch die JSON Bibliothek importieren, die unser Nachrichtenerstellen nochmal vereinfacht.
Nun ist es uns zum Beispiel möglich ein einfaches Dateihochladen zu realisieren:
Damit kann nun eine Datei im Server hinterlegt werden. Wir verzichten hier auf die Auswertung der Antwort, weil diese hier nicht relevant ist. Wenn das schief geht, kann das im Serverlog eingesehen werden.
Natürlich kann man den Server auch nach Informationen fragen und bekommt sogar Antwort. Auch hier ist das Protokoll einfach gehalten:
Hier ist die Interpretation der Antwort von der Frage abhängig, der Server versucht immer den einfachsten Datentypen zu senden. Kompliziertere Strukturen werden in JSON abgebildet. Das lässt sich in Python aber auch wieder einfach laden:
Mithilfe dieser Werkzeuge wird die Kommunikation mit dem Symoloserver einfach möglich und sämtliche Funktionen des Servers können nun verwendet werden. Hierzu zählen z.B. dynamicszugriff via SQL, erstellen und drucken von PDFs unter Windows wie Linux, Zugriff auf verschiedenste objektrelationale Datenbanken, Dateiverwaltung oder Nachrichtenverteilsystem. Darüber sollte ich mal was schreiben.
Nachdem das jetzt geklärt ist, bin ich mal gespannt, was in Python damit alles angestellt wird.