Wie schreibe ich Nachrichten-Warteschlange Handhabung in einer objektorientierten Art und Weise?

StackOverflow https://stackoverflow.com/questions/346105

  •  19-08-2019
  •  | 
  •  

Frage

Wenn Sie Code schreiben hatte, die Nachrichten aus einer Nachrichtenwarteschlange nimmt und aktualisiert eine Tabelle in einer Datenbank, wie würden Sie gehen über die es in einer guten Art und Weise oo zu strukturieren. Wie würden Sie es strukturieren? Die Nachrichten sind XML-Daten, einen Knoten pro Zeile in der Tabelle. Die Zeilen in der Tabelle aktualisiert werden können, gelöscht oder eingefügt.

War es hilfreich?

Lösung

Normalerweise mit OO-Implementierungen von Message Queues machen Sie die Klassen, die die einzelnen Arten von Nachrichten selbst darstellen. In dem Maß, dass die verschiedenen Nachrichtentypen, die Sie erwarten, sind Derivate von ihnen zu erhalten, dies stellt Ihre Klassenhierarchie für die Nachrichten.

Mit Konfiguration basiert Persistenz-Frameworks können Sie einfach direkt presistence für diese Klassen einrichten.

Dann gibt es eine oder mehr Klassen, die an die Nachrichtenwarteschlange hören und bleiben nur die Nachrichten, die wahrscheinlich nur eine. Es ist nicht aufwendiger zu sein als das.

Andere Tipps

Ich glaube nicht, dass Sie genügend Informationen für eine gute Antwort zur Verfügung gestellt haben. Wie sehen die Nachrichten wie? Sie variieren sie in Inhalt / Typ, oder sind sie alle nur „Nachrichten“? Haben sie miteinander interagieren, oder ist das nur eine Datenformatumwandlung? Einer der Schlüssel zu OO Entwicklung ist zu erkennen, dass die „die Substantive-n-Verben finden“ Spiel (was so viel wie Sie beschrieben haben) führt selten zur besten Lösung. Es wird sicherlich nicht die schlechteste, aber Sie werden mit Datenaggregation und eine Reihe von prozeduralen Code enden.

Verfahrenscode ist nicht schlecht, aber. Warum braucht es OO zu sein? Tritt das Problem selbst Polymorphismus und Verstecken von Daten erfordern? Gibt es ein komplexes Verhalten, das Sie versuchen zu modellieren? Es ist keine Schande, eine nicht-OO-Lösung bei der Verwendung, wenn das Problem einfach ist.

Die beste Art und Weise des Gebäude OO-Code, wenn Messaging tut oder mit jeder Art von Middleware zu tun ist, um den Middleware-APIs aus dem Code zu verstecken und nur mit Business-Logik befassen.

z. siehe diese Beispiele

  • POJO Verbrauchen die so ziemlich die Verwendung Fall ist Sie beschreiben und
  • POJO Producing wenn immer Sie Nachrichten an eine Nachrichtenwarteschlange senden müssen .

Dann brauchen Sie nur zu definieren, was Ihre Datenübertragung Objekte aussehen; wie Sie die Dinge auf den Draht in XML / JSON / was auch immer.

kodieren möchten

Das Tolle an diesem Ansatz ist, der Code jetzt völlig Middleware-agnostisch ist - Sie Ihre Message Queue auslagern und einen Datenbank oder Javaspace oder im Speicher SEDA oder Dateien oder andere Kommunikationsprotokolle oder Middleware API .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top