federation

___ tag123rabbitmq ___ RabbitMQ ist ein Open-Source-Nachrichtenbroker, der ursprünglich das AMQP-Protokoll mit zusätzlichen Nachrichtenprotokollen implementiert, die über eine Plug-in-Architektur unterstützt werden. Dieses Tag sollte bei Fragen verwendet werden, die das Message Broker-Produkt des RabbitMQ-Servers betreffen, oder bei Fragen zum Quellcode und zur Implementierung des RabbitMQ-Produkts. Ein bestimmtes Protokoll-Tag, wie beispielsweise amqp oder mqtt, kann ebenso geeignet sein wie das Betriebssystem und die verwendete Programmiersprache. ___ answer28638585 ___

Sehen Sie sich org.springframework.amqp.rabbit.connection.AbstractRoutingConnectionFactory an. Es ermöglicht Ihnen, mehrere Verbindungsfabriken zu verschiedenen vhosts oder verschiedenen rabbitmq-Instanzen zu erstellen. Wir verwenden es für eine Multi-Tenant-Rabbitmq-Anwendung.

    
___ qstnhdr ___ RabbitMQ RPC über mehrere rabbitMQ-Instanzen hinweg ___ tag123springamqp ___ Spring-Komponenten für AMQP-basierte Nachrichten. ___ answer41344691 ___

Es ist eine Weile her, aber wenn Sie Spring verwenden, können Sie so viele Verbindungsfactories erstellen, wie Sie möchten, mit ihren eigenen Konfigurationen (host, user / pass, vhost, etc.), genau wie Sie es getan haben:

> %Vor%

Und dein Kaninchen Admin / Vorlage ist wie du gehst:

%Vor%

Beachten Sie, dass Sie das %code% -Tag angeben müssen, um eine Haupt-Bean zu aktivieren, sobald Spring nicht weiß, welches zu wählen ist, wenn Sie %code% nicht explizit angeben.

Mit diesen Händen injizieren Sie sie einfach normal entlang Ihrer Komponenten:

%Vor%

Hoffe es hilft! :)

    
___ qstntxt ___

Ich habe drei Clients mit jeweils eigenen RabbitMQ-Instanzen und ich habe eine Anwendung (nennen wir sie appA), die eine eigene RabbitMQ-Instanz hat, die drei Client-Anwendungen (app1, app2, app3) einen Dienst nutzen wollen AppA.

Der Dienst in AppA erfordert RPC-Kommunikation, app1, app2 und app3 haben jeweils eine Reservierungswarteschlange und eine Reservierungswarteschlange.

Mit dem Shovel-Plugin kann ich alle booking.request-Nachrichten von app1-3 an appA weiterleiten:

%Vor%

Jetzt AppA wird auf die Anfrage in der Warteschlange booking.response reagieren, ich brauche die Buchungsantwort Nachricht auf RabbitMQ-appA zurück zu der richtigen booking.response Warteschlange entweder auf app1, app2 oder app3, aber nicht auf alle sie - wie richte ich eine schaufel- / föderierte queue auf der rabbitMQ-appA ein, die die antwort an die korrekte rabbitMQ (app1, app2, app3) weiterleitet, die eine antwort in ihrer eigenen booking.response queue erwartet?

Alle diese Apps verwenden spring-amqp (falls relevant) Alternativ könnte ich im Frühjahr eine rabbitMQ-Vorlage einrichten, die mehrere rabbitMQ-Warteschlangen abfragt und von jedem einzelnen abfragt.

Aus der Dokumentation sieht das so aus, wie ein typischer Verbraucher aussieht:

%Vor%

Ist es möglich, mehrere Verbindungsfactorys zu spezifizieren, um dies zu tun, selbst wenn die Verbindungsfabriken zu derselben RabbitMQ-Instanz gehören, sondern nur verschiedene vhosts:

Aktualisieren :

Basierend auf Joshs Antwort hätte ich mehrere Verbindungsfabriken:

%Vor%

Dann würde ich die SimpleRoutingConnectionFactory verwenden, um beide Verbindungsfactorys zu umbrechen:

%Vor%

Wenn ich meine rabbitMQ-Vorlage deklariere, würde ich sie stattdessen auf die SimpleRoutingConnectionFactory anstatt auf die einzelnen Connection Factories verweisen:

%Vor%

... und dann benutze die Vorlage so, wie ich sie normalerweise benutzen würde ...

%Vor%

// und Nachrichten werden von beiden rabbitMQ-Instanzen verwendet

... und ...

%Vor%

// und die Nachricht wird in beiden Warteschlangen veröffentlicht

Habe ich Recht?

    
___ tag123föderation ___ hilf uns dieses Wiki zu bearbeiten ___ tag123rabbitmqshovel ___ hilf uns dieses Wiki zu bearbeiten ___
2
Antworten

RabbitMQ RPC über mehrere rabbitMQ-Instanzen hinweg

Ich habe drei Clients mit jeweils eigenen RabbitMQ-Instanzen und ich habe eine Anwendung (nennen wir sie appA), die eine eigene RabbitMQ-Instanz hat, die drei Client-Anwendungen (app1, app2, app3) einen Dienst nutzen wollen AppA. Der Dienst i...
14.02.2015, 22:00