RabbitMQ Messaging & Async Systems · Pelajaran

Plugin Federation untuk Clustering

Jelajahi plugin Federation untuk menghubungkan beberapa broker RabbitMQ menjadi cluster logis tanpa jaringan yang rumit. Buat sistem pengiriman pesan terdistribusi yang mencakup beberapa pusat data.

Pelajaran 3 dari 411 langkah

Plugin Federation untuk Clustering adalah pelajaran RabbitMQ Messaging & Async Systems gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar RabbitMQ Messaging & Async Systems, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus RabbitMQ Messaging & Async Systems mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

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.

Gratis untuk memulai

Belajar RabbitMQ Messaging & Async Systems dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
11
Pelajaran
44

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Plugin Federation untuk Clustering” gratis?

Ya — teks lengkap “Plugin Federation untuk Clustering” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus RabbitMQ Messaging & Async Systems, upgrade ke CoddyKit PRO. Kursus RabbitMQ Messaging & Async Systems mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Plugin Federation untuk Clustering”?

Jelajahi plugin Federation untuk menghubungkan beberapa broker RabbitMQ menjadi cluster logis tanpa jaringan yang rumit. Buat sistem pengiriman pesan terdistribusi yang mencakup beberapa pusat data. Kamu berlatih RabbitMQ Messaging & Async Systems dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai RabbitMQ Messaging & Async Systems?

Tidak diperlukan pengalaman sebelumnya. RabbitMQ Messaging & Async Systems di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Plugin Federation untuk Clustering” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran RabbitMQ Messaging & Async Systems ini?

Ya. Setiap pelajaran RabbitMQ Messaging & Async Systems menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Plugin Pesan Tertunda
  2. Plugin Shovel untuk Federasi
  3. Plugin Federation untuk Clustering
  4. Deduplikasi Pesan & Plugin Exchange Hash Konsisten
← Kembali ke RabbitMQ Messaging & Async Systems