RabbitMQ
Datafly Signal delivers events to RabbitMQ for flexible, open-source message brokering with advanced routing, dead-letter queues, and broad protocol support (AMQP, MQTT, STOMP).
Prerequisites
Before configuring RabbitMQ in Signal, you need a RabbitMQ server (self-hosted or managed), an exchange, and a routing key configuration.
Set Up a RabbitMQ Server
You have several options:
Option A: CloudAMQP (Managed)
- Sign up at cloudamqp.com.
- Create a new instance and select a plan and region.
- Note the AMQP URL from the instance details (e.g.
amqps://user:pass@host/vhost).
Option B: Amazon MQ for RabbitMQ
- In the AWS console, go to Amazon MQ > Create broker.
- Select RabbitMQ as the engine type.
- Configure the broker and note the AMQP endpoint.
Option C: Self-Hosted RabbitMQ
- Install RabbitMQ using the official guide.
- Start the RabbitMQ server.
- Enable the management plugin for the web UI:
rabbitmq-plugins enable rabbitmq_management. - Access the management UI at
http://hostname:15672.
Create a Virtual Host (Optional)
If you want to isolate Signal events:
- In the RabbitMQ management UI, go to Admin > Virtual Hosts > Add a new virtual host.
- Enter a name (e.g.
datafly). - Click Add virtual host.
Create an Exchange
- In the management UI, go to Exchanges > Add a new exchange.
- Enter a Name (e.g.
datafly.events). - Choose the Type:
- topic — routes messages based on routing key patterns (recommended for flexibility).
- direct — routes messages to queues with an exact routing key match.
- fanout — routes messages to all bound queues (ignores routing key).
- Set Durable to
Yesto survive broker restarts. - Click Add exchange.
Create a Queue and Binding
- Go to Queues > Add a new queue.
- Enter a Name (e.g.
datafly-events-queue). - Set Durable to
Yes. - Click Add queue.
- Click on the queue, scroll to Bindings, and add a binding:
- From exchange:
datafly.events - Routing key:
events(or a pattern likeevents.#for topic exchanges)
- From exchange:
Create a User for Signal
- In the management UI, go to Admin > Users > Add a user.
- Enter a Username (e.g.
datafly_signal) and Password. - Set Tags to empty (no management access needed).
- Click Add user.
- Click on the user and set Permissions for the virtual host: Configure
.*, Write.*, Read.*(or restrict to specific exchanges).
Get the AMQP URL
The AMQP connection URL format is:
amqps://username:password@hostname:5671/vhost- Port
5671for AMQPS (TLS), port5672for AMQP (plaintext). - URL-encode the virtual host if it contains special characters (e.g.
/becomes%2F).
⚠️
Always use amqps:// (with TLS) in production. The amqp:// protocol transmits credentials and data in cleartext.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
amqp_url | secret | Yes | The AMQP connection URL (e.g. amqps://user:pass@host:5671/vhost). |
exchange | string | Yes | The exchange name to publish messages to. |
routing_key | string | No | The routing key for published messages. Defaults to events. |
Signal Setup
Quick Setup
- Navigate to Integrations in the sidebar.
- Open the Integration Library tab.
- Find RabbitMQ or filter by Cloud Storage.
- Click Install, select a variant if available, and fill in the required fields.
- Click Install Integration to create the integration with a ready-to-use default blueprint.
API Setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/rabbitmq/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "RabbitMQ",
"variant": "default",
"config": {
"amqp_url": "amqps://datafly_signal:[email protected]:5671/datafly",
"exchange": "datafly.events",
"routing_key": "events"
},
"delivery_mode": "server_side"
}'Testing
- Enable the integration in Signal and trigger a test event on your website.
- In the RabbitMQ management UI, go to Queues and select the queue bound to your exchange.
- Check the Messages count — it should increase.
- Click Get messages to inspect the message payload.
- In Signal, check the Live Events view to confirm delivery status shows as successful.
Troubleshooting
| Problem | Solution |
|---|---|
| Events not appearing in the queue | Verify the AMQP URL, exchange name, and routing key are correct. Check that a queue is bound to the exchange with a matching routing key. |
ACCESS_REFUSED | The username or password is incorrect, or the user lacks permissions on the virtual host. Verify credentials and user permissions. |
| Connection refused / timeout | Check that the RabbitMQ server is accessible on port 5671 (TLS) or 5672 (plaintext). Verify firewall rules. |
NOT_FOUND - no exchange | The exchange does not exist. Create it in the management UI or via rabbitmqadmin. |
| Messages published but not in queue | The exchange exists but no queue is bound with the routing key. Add a binding from the exchange to the queue. |
| TLS handshake failure | If using amqps://, ensure the RabbitMQ server has a valid TLS certificate and the CA is trusted by Signal. |
| Virtual host not found | The virtual host in the URL does not exist. Create it or update the URL. Remember to URL-encode the vhost name. |
Visit RabbitMQ documentation for full AMQP reference, exchange types, and clustering guides.