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)