0Pricing
RabbitMQ Messaging & Async Systems · Ders

Kümeleme için Federation Eklentisi

Karmaşık ağ yapılandırmalarına gerek kalmadan birden çok RabbitMQ aracısını mantıksal bir kümeye bağlamak için Federation eklentisini keşfedin. Veri merkezlerini kapsayan dağıtık mesajlaşma sistemleri oluşturun.

Kümeleme için Federation Eklentisi, CoddyKit'te ücretsiz bir RabbitMQ Messaging & Async Systems dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, RabbitMQ Messaging & Async Systems öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. RabbitMQ Messaging & Async Systems kursu toplamda 4 dersten oluşur.

Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.

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_management

Configuring 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.

Sıkça Sorulan Sorular

“Kümeleme için Federation Eklentisi” dersi ücretsiz mi?

Evet — “Kümeleme için Federation Eklentisi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve RabbitMQ Messaging & Async Systems kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. RabbitMQ Messaging & Async Systems kursu toplamda 4 dersten oluşur.

“Kümeleme için Federation Eklentisi” dersinde ne öğreneceğim?

Karmaşık ağ yapılandırmalarına gerek kalmadan birden çok RabbitMQ aracısını mantıksal bir kümeye bağlamak için Federation eklentisini keşfedin. Veri merkezlerini kapsayan dağıtık mesajlaşma sistemler… RabbitMQ Messaging & Async Systems ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

RabbitMQ Messaging & Async Systems öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te RabbitMQ Messaging & Async Systems, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Kümeleme için Federation Eklentisi” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu RabbitMQ Messaging & Async Systems dersinde kod yazıp çalıştırabilir miyim?

Evet. Her RabbitMQ Messaging & Async Systems dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Gecikmeli Mesajlar Eklentisi
  2. Federasyon için Shovel Eklentisi
  3. Kümeleme için Federation Eklentisi
  4. İleti Tekilleştirme ve Tutarlı Karma Değiş Tokuş Eklentileri
← RabbitMQ Messaging & Async Systems Sayfasına Dön