RabbitMQ Component

Message broker using RabbitMQ Operator. Auto-generates complete topology (exchanges, queues, bindings) via definitions.json loaded at cluster boot.

Architecture

RabbitmqCluster - Operator-managed cluster
definitions.json - Topology loaded at boot
Exchanges - Message routers (sub-component)
Queues - Message stores (sub-component)
Bindings - Exchange-to-Queue routing

Quick Reference

Attribute Example Default Effect
namespace REQ rabbitmq - Kubernetes namespace
username REQ appuser - Application username
password REQ secret123 - Application password (auto-hashed)
vhost / / Virtual host for isolation
admin_username admin admin Admin console user
admin_password adminpass - Admin password (auto-hashed)
replicas 3 1 Cluster node count
storage_size 10Gi 10Gi PVC storage per node

Link Variables

Variable Link Type Purpose
__prometheus prometheus-rabbitmq Metrics scraping via ServiceMonitor
__exchange (sub-component) Exchange definitions for definitions.json
__queue (sub-component) Queue definitions for definitions.json
__binding exchange-queue Bindings from exchange-to-queue links

Sub-Components

Type Purpose Key Attributes
exchange Message router name, exchange_type, durable, routing_key
queue Message store name, durable, auto_delete

Exchange Types

Type Routing Behavior Use Case
topic Pattern matching (order.*) Flexible routing with wildcards
direct Exact match routing Specific queue targeting
fanout Broadcast to all queues Pub/sub notifications
headers Route by message headers Complex routing rules

definitions.json Auto-Generation

Generated from component + sub-components:

users[] - From username/password + admin_username/admin_password
vhosts[] - From vhost attribute
exchanges[] - From all exchange sub-components
queues[] - From all queue sub-components
bindings[] - From exchange-to-queue links
permissions[] - Auto-generated for users

Passwords auto-hashed using: local_extensions.password_hash

Generated Files

File Condition Contains
cluster.yaml Always RabbitmqCluster CRD with definitions mount
rabbitmq.yaml Always RabbitMQ Operator deployment
secret/definitions.json Always Complete topology (users, vhosts, exchanges, queues, bindings)
secret/rabbitmq.env Always Connection credentials
service-monitor.yaml __prometheus Prometheus ServiceMonitor

Ports

Port Purpose Protocol
5672 AMQP messaging AMQP
15672 Management UI HTTP
15692 Prometheus metrics HTTP
4369 EPMD (peer discovery) TCP
25672 Inter-node clustering Erlang

Connection String Format

AMQP URI:
amqp://{username}:{password}@{service}.{namespace}.svc.cluster.local:5672/{vhost}

Example:
amqp://appuser:secret@rabbitmq.rabbitmq.svc.cluster.local:5672/

Technical Info

Chart Version: 14.3.1
Ports: 5672 (AMQP), 15672 (UI), 15692 (metrics)
Extensions: local_extensions.password_hash
CRD: RabbitmqCluster (rabbitmq.com/v1beta1)