stackit.guru
DE

RabbitMQ auf STACKIT – Managed Message Broker

#messaging
messaging rabbitmq queues

RabbitMQ auf STACKIT – Managed Message Broker

Wenn deine Microservices direkt miteinander kommunizieren, entsteht enge Kopplung – fällt ein Service aus, reißt er andere mit. Ein Message Broker wie RabbitMQ entkoppelt deine Services über Queues und ermöglicht zuverlässige, asynchrone Kommunikation. STACKIT bietet dir RabbitMQ als vollständig verwalteten Service.


Was ist Managed RabbitMQ auf STACKIT?

STACKIT RabbitMQ ist ein Managed Message Broker, der dir den operativen Aufwand abnimmt:

  • Managed Service – Automatische Updates, Backups und Hochverfügbarkeit ohne eigenen Betrieb.
  • Queues & Exchanges – Zuverlässige Nachrichtenzustellung mit flexiblem Routing über Direct, Topic, Fanout und Header Exchanges.
  • Pub/Sub-Patterns – Entkoppelte Kommunikation zwischen Producern und Consumern.
  • Management UI – Web-Oberfläche zur Überwachung von Queues, Connections und Message-Raten.
  • AMQP 0-9-1 – Standard-Protokoll, kompatibel mit allen gängigen Client-Libraries.

Tutorial: RabbitMQ-Instanz einrichten und Nachrichten senden

1. RabbitMQ-Instanz erstellen

Erstelle eine Instanz über die STACKIT CLI:

stackit rabbitmq instance create \
  --project-id your-project-id \
  --name "prod-broker" \
  --plan "rabbitmq-standard"

2. Credentials anlegen

Erstelle Zugangsdaten für deine Anwendungen:

stackit rabbitmq credentials create \
  --project-id your-project-id \
  --instance-id your-instance-id

3. Nachrichten senden (Python)

Installiere die pika-Library und sende eine Nachricht:

import pika

connection = pika.BlockingConnection(
    pika.URLParameters("amqps://user:password@your-rabbitmq-host.stackit.cloud:5671/")
)
channel = connection.channel()

channel.queue_declare(queue="orders", durable=True)
channel.basic_publish(
    exchange="",
    routing_key="orders",
    body="Neue Bestellung: #12345",
    properties=pika.BasicProperties(delivery_mode=2),
)
print("Nachricht gesendet")
connection.close()

4. Nachrichten empfangen (Node.js)

Installiere amqplib und konsumiere Nachrichten:

const amqp = require("amqplib");

async function consume() {
  const conn = await amqp.connect(
    "amqps://user:password@your-rabbitmq-host.stackit.cloud:5671/"
  );
  const ch = await conn.createChannel();

  await ch.assertQueue("orders", { durable: true });
  ch.consume("orders", (msg) => {
    console.log("Empfangen:", msg.content.toString());
    ch.ack(msg);
  });
}

consume();

5. Pub/Sub mit Topic Exchange

Richte ein Topic-Exchange für Event-basierte Kommunikation ein:

import pika

connection = pika.BlockingConnection(
    pika.URLParameters("amqps://user:password@your-rabbitmq-host.stackit.cloud:5671/")
)
channel = connection.channel()

channel.exchange_declare(exchange="events", exchange_type="topic", durable=True)

# Publisher: Event senden
channel.basic_publish(
    exchange="events",
    routing_key="order.created",
    body='{"order_id": "12345", "total": 99.90}',
)

# Subscriber: Events empfangen (in separatem Prozess)
result = channel.queue_declare(queue="", exclusive=True)
channel.queue_bind(exchange="events", queue=result.method.queue, routing_key="order.*")

Nächste Schritte

  • Implementiere Dead Letter Queues für Nachrichten, die nicht verarbeitet werden können.
  • Richte Monitoring über STACKIT Observability ein, um Queue-Tiefen und Consumer-Lag zu überwachen.
  • Nutze Quorum Queues für höhere Datensicherheit bei kritischen Nachrichten.
  • Evaluiere Message TTL und Queue-Limits, um Speicherprobleme bei hohem Nachrichtenaufkommen zu vermeiden.