2016-06-15 17 views
0

Ich versuche zu verstehen, die Anwendungsfälle/Architektur der typischen Benutzer von CometD zu sehen, ob ich auf dem richtigen Weg bin. Hier ist ein Diagramm, das unseren Verwendungszweck beschreibt.CometD: veröffentlichen von externen Server

CometD with web services

Wir möchten die CometD Server eines für unsere Web-Services Event pub/sub mehr haben, wird NO CONTENT durch CometD passieren, nur Datenereignis. Die Web-Services können Ereignisse basierend auf einer Aktion, die sie verarbeiten, oder bei einem Prozess, der lange ausgeführt wird und geplant ist, auf den Clients veröffentlichen.

auf dem Java-Client Meine Fragen zugrunde:

  • Ist dies eine angemessene Nutzung von CometD Java-Client? Aus der Dokumentation scheint wie der Java-Client für kurzfristige Anwendungen wie Desktop-Anwendungen verwendet wird.
  • Gibt es angesichts des Java-Clients für CometD eine einzige Instanz oder einen Pool von Clients, die Ereignisse von einer Web-Service-Instanz an CometD senden?
  • Der Client-Code scheint durchdacht genug, um stapelweise Nachrichten und mehrere Threads zu verarbeiten, die ihn aufrufen, und es scheint teuer zu sein, einen Client zu erstellen, wenn er benötigt wird, um eine Nachricht zu veröffentlichen.

Vielen Dank für Ihre Zeit!

Antwort

1

Ja, dies ist eine angemessene Verwendung des CometD Java-Clients.

Sie können eine einzelne Instanz des CometD-Java-Clients verwenden, sie ist sicher für Multithread-Nutzung oder Sie können einen CometD-Java-Client für jeden Web-Service verwenden, wahrscheinlich die empfohlene Vorgehensweise (wie Sie in der CometD erkennen können) Server welcher Web Service was gesendet hat).

Beachten Sie, dass der CometD-Java-Client asynchron ist.

Wenn Sie eine Antwort oder eine Bestätigung benötigen, dass die gesendete Nachricht vom CometD-Server verarbeitet wurde, müssen Sie die Web-Service-Anfrage unterbrechen (über HttpServletRequest.startAsync() oder ähnliche), den CometD-Java-Client aufrufen und wann Sie erhalten die Nachrichtenbestätigung zurück, um die Web-Service-Antwort an den Client zu vervollständigen.

Sie können Bestätigungen mit Rückrufen in den CometD Java-Client-APIs erhalten, siehe CometD Java client API documentation.

Wenn Sie einen Broadcast-Kanal verwenden, um eine Nachricht vom Web-Service zu veröffentlichen, wird die Nachricht sofort vom CometD-Server an die Remote-Clients gesendet.

Wenn Sie andererseits einen Dienstkanal verwenden, um eine Nachricht vom Web-Service zu veröffentlichen, können Sie die Nachricht auf dem CometD-Server bearbeiten (und sie möglicherweise anreichern oder nach einer Geschäftslogik löschen) die Möglichkeit haben, es erneut zu senden oder es an einen bestimmten Kunden zu senden.

+0

Super, vielen Dank für die Hilfe! – Chap

Verwandte Themen