5个版本
使用旧的Rust 2015
0.1.4-pre | 2017年7月23日 |
---|---|
0.1.3 | 2017年4月5日 |
0.1.2 | 2017年4月5日 |
0.1.1 | 2017年4月5日 |
0.1.0 | 2017年4月4日 |
#1530 在 数据库接口
8KB
79 行
⚠️ 已弃用
@subzerocloud 从此项目中获得灵感,构建了 pg-amqp-bridge,它现在有更多选项,请使用它而不是此项目 👍
🚇 PostgreSQL到AMQP网关
将PostgreSQL的pg_notify
通知转发到AMQP队列。
⛴ 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
⚙ 配置
配置通过环境变量完成
- POSTGRESQL_URI: 例如
postgresql://username:[email protected]:port/database
- POSTGRESQL_CHANNEL: 例如
foo
- AMQP_URI: 例如
amqp://127.0.0.1:5672/
- AMQP_QUEUE_NAME: 例如
queueName
🎩 使用方法
启动转发器
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
在psql中执行
SELECT pg_notify('foo', 'payload');
转发器将记录并将通知转发到amqp队列
Forwarding Notification { process_id: 31694, channel: "foo", payload: "payload" } to queue "queueName"
👁 哲学
- 低内存消耗(1,9Mo)
- 单个二进制文件
- 无依赖
- 可预测的性能
🔫 待办事项
我将很高兴接受对这个项目的PR
- AMQP连接字符串(AMQP身份验证支持)👻
- 支持JSON消息
- 发布到交换
- 将原始通道作为消息属性添加
- 将postgresql-to-amqp
version
作为消息属性添加 - 允许环境变量指定额外的消息属性
- 处理AMQP断开/重新连接
- 处理PostgreSQL断开/重新连接
- 健康检查路由
- 度量路由
- 支持Docker
- 支持Kubernetes 😍
- 发布第一个主要版本,包含测试 ☝️
相关工作
- pgsql-listen-exchange - 发布从PostgreSQL通知接收到的消息的RabbitMQ交换
依赖项
~26MB
~590K SLoC