postgresql-to-amqp
postgresql-to-amqp copied to clipboard
PostgreSQL to AMQP, forward PostgreSQL notifications to an AMQP queue.
trafficstars
:warning: Discontinued
@subzerocloud took inspiration from this project and built pg-amqp-bridge which now has more options, use it instead :+1:
🚇 PostgreSQL to AMQP gateway
Forward PostgreSQL pg_notify notifications to an AMQP queue.

⛴ Cargo
cargo install postgresql-to-amqp
🐳 Docker
docker run --rm -it \
-e POSTGRESQL_URI=postgresql://username:[email protected]:port/database \
-e POSTGRESQL_CHANNEL=foo \
-e AMQP_URI=amqp://127.0.0.1:5672/ \
-e AMQP_QUEUE_NAME=queueName fgribreau/postgresql-to-amqp
⚙ Configuration
Configuration is done through environment variables:
- POSTGRESQL_URI: e.g.
postgresql://username:[email protected]:port/database - POSTGRESQL_CHANNEL: e.g.
foo - AMQP_URI: e.g.
amqp://127.0.0.1:5672/ - AMQP_QUEUE_NAME: e.g.
queueName
🎩 Usage
Start the forwarder:
POSTGRESQL_URI="postgresql://username:[email protected]:port/database" POSTGRESQL_CHANNEL="foo" AMQP_URI="amqp://127.0.0.1:5672/" AMQP_QUEUE_NAME="queueName" postgresql-to-amqp
Execute in psql:
SELECT pg_notify('foo', 'payload');
The forwarder will log and forward the notification to the amqp queue:
Forwarding Notification { process_id: 31694, channel: "foo", payload: "payload" } to queue "queueName"
👁 Philosophy
- Low memory consumption (1,9Mo)
- Single binary
- No dependency
- Predictable performance
🔫 Todo
I will happily accept PRs for this:
- [ ] AMQP connection string (AMQP authentication support) 👻
- [ ] Support JSON message
- [ ] Publish to exchange
- [ ] Add original channel as message property
- [ ] Add postgresql-to-amqp
versionas message property - [ ] Let environment variables specify additional message properties
- [ ] Handle AMQP disconnection/reconnection
- [ ] Handle PostgreSQL disconnection/reconnection
- [ ] Health check route
- [ ] Metric route
- [x] Docker support
- [ ] Kubernetes support 😍
- [ ] Make a first major release with tests ☝️
Related work
- pgsql-listen-exchange - RabbitMQ Exchange that publishes messages received from PostgreSQL Notifications