Federation Plugin für Clustering
Erkunden Sie das Federation Plugin, um mehrere RabbitMQ-Broker ohne komplexe Netzwerkkonfiguration zu einem logischen Cluster zu verbinden. Erstellen Sie verteilte Messaging-Systeme, die sich über mehrere Rechenzentren erstrecken.
Federation Plugin für Clustering ist eine kostenlose RabbitMQ Messaging & Async Systems-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des RabbitMQ Messaging & Async Systems-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der RabbitMQ Messaging & Async Systems-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
What is RabbitMQ Federation?
Imagine you have RabbitMQ brokers in different data centers or cloud regions. How do they share messages without complex network setups?
The Federation plugin allows you to loosely connect these brokers. It enables messages to flow between them, creating a distributed messaging system across geographical boundaries.
Federation vs. Traditional Clustering
It's important to distinguish Federation from traditional RabbitMQ clustering:
- Clustering: Tightly couples nodes, sharing state and data. Best for high availability within a single, low-latency network (e.g., a data center).
- Federation: Loosely connects brokers by replicating messages. Ideal for spanning wide area networks (WANs) or connecting brokers managed by different teams. It doesn't share state like a cluster.
Key Components: Upstreams & Policies
Federation relies on two main concepts:
- Upstreams: These define the source broker from which messages will be pulled. An upstream specifies the connection details (like URI) of the remote RabbitMQ instance.
- Policies: These rules determine which exchanges or queues on your downstream broker should connect to which upstream broker. They use regular expressions to match names.
Enabling the Federation Plugin
Before you can use federation, you need to enable the plugin on all participating RabbitMQ brokers. This is done using the RabbitMQ command-line tool.
Run this command on each broker:
rabbitmq-plugins enable rabbitmq_federation rabbitmq_federation_managementConfiguring an Upstream Link
An 'upstream' tells your local broker where to pull messages from. You define it using the rabbitmqctl set_parameter command.
This example sets up an upstream named 'my-upstream' pointing to a remote broker:
rabbitmqctl set_parameter federation-upstream my-upstream \
'{"uri":"amqp://guest:guest@remote-host:5672","expires":3600000}'Creating a Federation Policy for Exchanges
Once an upstream is defined, you apply it to exchanges using a policy. This policy tells your local broker to federate messages for matching exchanges from the specified upstream.
This policy federates all exchanges starting with 'fed.' from 'my-upstream':
rabbitmqctl set_policy --apply-to exchanges \
fed-exchanges ".^fed\\..*" \
'{"federation-upstream":"my-upstream"}'How Federated Exchanges Work
With a federated exchange:
- A producer publishes messages to an exchange on the upstream broker.
- The federation plugin on the downstream broker pulls these messages from the upstream exchange.
- The messages then arrive at the corresponding federated exchange on the downstream broker, where local consumers can receive them.
The consumer only interacts with its local (downstream) broker.
Client Example: Consuming from Federated Exchange
Here's a Python consumer that connects to a downstream broker and receives messages from a federated exchange. It doesn't need to know the messages originated from an upstream broker.
To run this, ensure you have pika installed (pip install pika).
import pika
import sys
import os
def main():
# Connect to the local (downstream) RabbitMQ broker
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# Declare the exchange that is federated from an upstream broker
# (e.g., using the policy created in previous steps for 'fed_logs')
channel.exchange_declare(exchange='fed_logs', exchange_type='fanout', durable=True)
result = channel.queue_declare(queue='', exclusive=True)
queue_name = result.method.queue
channel.queue_bind(exchange='fed_logs', queue=queue_name)
print(' [*] Waiting for federated messages. To exit press CTRL+C')
def callback(ch, method, properties, body):
print(f" [x] Received: {body.decode()}")
channel.basic_consume(queue=queue_name, on_message_callback=callback, auto_ack=True)
channel.start_consuming()
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
print(' Interrupted')
try:
sys.exit(0)
except SystemExit:
os._exit(0)Federating Queues
You can also federate queues. When a queue is federated, messages published to that queue on the upstream broker will be pulled and added to the corresponding queue on the downstream broker.
The policy setup is very similar, just specify --apply-to queues:
rabbitmqctl set_policy --apply-to queues \
fed-queues ".^fed\\..*" \
'{"federation-upstream":"my-upstream"}'Quick Check on Federation
Which of the following best describes the primary use case for RabbitMQ Federation?
Recap: Federation for Distributed Messaging
In this lesson, you learned about the RabbitMQ Federation plugin:
- It allows you to connect RabbitMQ brokers across different locations.
- It uses upstreams to define source brokers and policies to apply federation rules.
- Federation differs from clustering by offering loose coupling, suitable for WANs.
- You can federate both exchanges and queues, enabling flexible message distribution in a distributed system.
This powerful plugin helps you build robust, geographically distributed messaging architectures.
Häufig gestellte Fragen
Ist die Lektion „Federation Plugin für Clustering“ kostenlos?
Ja — der vollständige Text von „Federation Plugin für Clustering“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des RabbitMQ Messaging & Async Systems-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der RabbitMQ Messaging & Async Systems-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Federation Plugin für Clustering“?
Erkunden Sie das Federation Plugin, um mehrere RabbitMQ-Broker ohne komplexe Netzwerkkonfiguration zu einem logischen Cluster zu verbinden. Erstellen Sie verteilte Messaging-Systeme, die sich über me… Du übst RabbitMQ Messaging & Async Systems mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um RabbitMQ Messaging & Async Systems zu starten?
Keine Vorkenntnisse erforderlich. RabbitMQ Messaging & Async Systems auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Federation Plugin für Clustering“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser RabbitMQ Messaging & Async Systems-Lektion Code schreiben und ausführen?
Ja. Jede RabbitMQ Messaging & Async Systems-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Plugin für verzögerte Nachrichten
- Shovel Plugin für Federation
- Federation Plugin für Clustering
- Nachrichtenduplikatserkennung & Consistent-Hash-Exchange-Plugins