Zum Inhalt springen

AMQP-Konnektor

Der AMQP-Konnektor ermöglicht Publish/Subscribe-Messaging über RabbitMQ und jeden AMQP 0.9.1-Broker, mit Exchanges, Queues und Routing-Keys.

Konnektor-Typen:

  • AmqpReader - Nachrichten aus einer Queue oder Exchange-Bindung konsumieren
  • AmqpWriter - Nachrichten an einen Exchange mit einem Routing-Key veröffentlichen

Nachrichten aus einer bestehenden Queue konsumieren:

{
"type": "AmqpReader",
"config": {
"url": "amqp://guest:guest@localhost:5672/",
"queue": "sensor_events",
"autoAck": false,
"prefetchCount": 10,
"consumerTag": "meddle-reader"
}
}

Wenn queue leer ist und exchange gesetzt ist, deklariert der Reader eine temporäre exklusive Queue und bindet sie unter Verwendung von routingKey an den Exchange:

{
"type": "AmqpReader",
"config": {
"url": "amqp://user:password@rabbit.example.com:5672/",
"exchange": "factory.events",
"routingKey": "line1.*.temperature",
"autoAck": true
}
}
{
"type": "AmqpReader",
"config": {
"url": "amqps://user:password@rabbit.example.com:5671/",
"queue": "secure_events",
"tls": true,
"autoAck": false
}
}

Nachrichten an einen Exchange veröffentlichen:

{
"type": "AmqpWriter",
"config": {
"url": "amqp://guest:guest@localhost:5672/",
"exchange": "factory.events",
"routingKey": "line1.temperature",
"mandatory": false,
"contentType": "application/json"
}
}

An Standard-Exchange veröffentlichen (Direkt zur Queue)

Abschnitt betitelt „An Standard-Exchange veröffentlichen (Direkt zur Queue)“

exchange leer lassen und den Queue-Namen als Routing-Key verwenden:

{
"type": "AmqpWriter",
"config": {
"url": "amqp://guest:guest@localhost:5672/",
"exchange": "",
"routingKey": "sensor_events"
}
}
  • url: AMQP-Verbindungs-URI (amqp://user:pass@host:port/vhost oder amqps://...)
  • exchange: Exchange-Name (leerer String zielt auf den Standard-Exchange)
  • queue: Queue-Name, aus dem konsumiert wird (nur Reader)
  • routingKey: Routing-Key oder Bindungsmuster
  • tls: TLS für die Verbindung verwenden
  • prefetchCount: (Reader) Maximale unbestätigte Nachrichten auf dem Kanal
  • autoAck: (Reader) Nachrichten bei Zustellung automatisch bestätigen
  • consumerTag: (Reader) Client-bereitgestellte Konsumenten-Kennung
  • mandatory: (Writer) Nachricht an Publisher zurückgeben, wenn sie nicht geroutet werden kann
  • contentType: (Writer) MIME-Typ für veröffentlichte Nachrichten (Standard: application/json)
  • autoAck: true - Der Broker betrachtet Nachrichten als zugestellt, sobald sie gesendet werden. Schneller, aber Nachrichten können bei Konsumenten-Crash verloren gehen.
  • autoAck: false - Meddle bestätigt jede erfolgreiche Nachricht explizit und negiert bei Payload-Fehlern. Mit prefetchCount verwenden, um In-Flight-Nachrichten zu begrenzen.

Topic-Exchanges unterstützen Wildcards in Bindungsschlüsseln:

  • * entspricht genau einem Wort: line1.*.temperature
  • # entspricht null oder mehr Wörtern: factory.#
  • MQTT - Leichtgewichtige Pub/Sub-Alternative
  • Kafka - Hochdurchsatziges log-basiertes Messaging
  • NATS - Cloud-native Pub/Sub-Alternative