@subzerocloud took inspiration from this project and built pg-amqp-bridge which now has more options, use it instead 👍
cargo install postgresql-to-amqp
docker run --rm -it \
-e POSTGRESQL_URI=postgresql://username:password@domain.tld: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 is done through environment variables:
- POSTGRESQL_URI: e.g.
postgresql://username:password@domain.tld:port/database
- POSTGRESQL_CHANNEL: e.g.
foo
- AMQP_URI: e.g.
amqp://127.0.0.1:5672/
- AMQP_QUEUE_NAME: e.g.
queueName
Start the forwarder:
POSTGRESQL_URI="postgresql://username:password@domain.tld: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"
- Low memory consumption (1,9Mo)
- Single binary
- No dependency
- Predictable performance
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
version
as message property - Let environment variables specify additional message properties
- Handle AMQP disconnection/reconnection
- Handle PostgreSQL disconnection/reconnection
- Health check route
- Metric route
- Docker support
- Kubernetes support 😍
- Make a first major release with tests ☝️
- pgsql-listen-exchange - RabbitMQ Exchange that publishes messages received from PostgreSQL Notifications