2017-02-21 1 views
0

Ich habe nach einer JMS-Lösung gesucht, und ich (überraschend) konnte keine einfache Antwort finden. Ich suche vielleicht nach dem Falschen, also hoffentlich kann die Community auf stackoverflow helfen.Mehrere Cluster, die dieselbe JMS-Nachrichtenwarteschlange hören

Was ich arbeite sollte ziemlich einfach sein: Verwenden von JMS für Ereignisbenachrichtigung über Cluster von Microservices. Die Einrichtung ist einfach. Angenommen, ich habe 3 Cluster mit jeweils 3 Instanzen, die alle auf ihren eigenen EE-Server-Instanzen auf verschiedenen Rechnern laufen.

Cluster A 
A1, A2, A3 

Cluster B 
  B1, B2, B3 

Cluster C 
  B1, B2, B3 

Und ich habe einen zentralen JMS-Server, die eine Warteschlange alle sie hat hören:

A1, A2, A3 | 
B1, B2, B3 |<-------> JMS Queue (Q1) 
C1, C2, C3 | 

Micro Instanz verarbeitet A2 eine Anfrage und veröffentlicht Nachricht (M) auf (Q1). Was ich möchte, ist, dass für jede der anderen Cluster - B, C - eine Instanz in diesem Cluster die Nachricht aufnimmt und für den Cluster verarbeitet. Es ist offensichtlich egal, welche Instanz es aufnimmt, solange es nur einmal pro Cluster verarbeitet wird. So würde es aussehen

A2 | ---> publish (M) ----> JMS Queue (Q1) 


B2 | 
    | <---- (M) <----- JMS Queue (Q1) 
C1 | 

Dies scheint ein sehr häufig, fast Standard-Setup, dass jeder braucht. Aber was ich bisher mit der Art und Weise herausgefunden habe, wie Warteschlangen funktionieren, ist, dass wenn (M) veröffentlicht wird (Q1), dann wird nur eins von B1, B2, B3, C1, C2, C3 es aufnehmen und verarbeiten und nicht eins von jedem Cluster wie ich suche. Wenn ich ein Thema verwende, würde jede Instanz in jedem Cluster eine Nachricht erhalten, so scheint es, dass ich nicht danach suche.

Also das ist es. Gedanken? Danke im Voraus!

+0

Wenn Sie Weblogic als EE-Server und MDBs als Listener verwenden, können Sie Themen verwenden und 'Eine Kopie pro Anwendung' angeben, um zu erreichen, was Sie wollen. "https://docs.oracle.com/cd/E17904_01/web.1111/e15493/dist_topics.htm#WLMDB10081 – ramp

Antwort

0

Wir haben Thema verwendet, um dieses Problem zu lösen. Also statt JMS-Warteschlange JMS-Thema verwenden. Lassen Sie alle Webanwendungen auf allen Clustern dieses Thema abonnieren. Wir haben auch eine Autorenkomponente, so dass sie alle zum Thema schreiben können.

Verwandte Themen