softonic/homing-pigeon!overview
Homing Pigeon是一款用于轻松连接读写适配器的应用程序。无论输入接口接收什么消息,都会将其发送到特定的输出接口,无需编写常规样板代码。该工具设计为可轻松插入任何类型的输入和输出适配器,可用于消息存储或消息代理等场景,例如AMQP到Elasticsearch、HTTP到MySQL、HTTP到HTTP或任何其他组合。
重要细节:消息将“原样”从读取接口转发到写入接口,因此预期格式取决于所连接的写入适配器。
RabbitMQ
Elasticsearch(使用Bulk API)
更多信息请参见Elasticsearch官方文档json{ "meta": { "index" : { "_index" : "test", "_id" : "1" } }, "data": { "field1" : "value1" } }
适用于需要在不同系统间转发消息的场景,例如:
示例场景:
假设拥有example.com,需跟踪多种用户事件(点击按钮、填写表单等)并快速可视化。可部署Homing Pigeon连接现有RabbitMQ和Elasticsearch集群,网站发送事件消息到指定交换机(按特定格式),消息将自动持久化到Elasticsearch,最后部署Kibana即可实现数据可视化。
所有版本均通过Docker镜像发布:softonic/homing-pigeon
提供Helm Chart便于K8s部署:homing-pigeon-chart
bashdocker run -d \ -e READ_ADAPTER=AMQP \ -e WRITE_ADAPTER=ELASTIC \ -e RABBITMQ_URL=amqp://user:password@rabbitmq:5672/ \ -e ELASTICSEARCH_URL=http://elasticsearch:9200 \ softonic/homing-pigeon
| 名称 | 说明 |
|---|---|
| MESSAGE_BUFFER_LENGTH | 用于消息传递的内部Golang通道缓冲区长度 |
| ACK_BUFFER_LENGTH | 用于确认消息的内部Golang通道缓冲区长度 |
| REQUEST_MIDDLEWARES_SOCKET | 连接读取器和写入器之间中间件的套接字,例:passthrough:///unix://tmp/test.sock |
| RESPONSE_MIDDLEWARES_SOCKET | 连接写入器和读取器之间中间件的套接字,例:passthrough:///unix://tmp/test.sock |
| READ_ADAPTER | 读取接口实现,默认:AMQP |
| WRITE_ADAPTER | 写入接口实现,默认:ELASTIC |
| MIDDLEWARE_BATCH_SIZE | 批量发送到中间件的消息数量,默认:50 |
| MIDDLEWARE_BATCH_TIMEOUT_MS | 等待批量达到最大大小的最长时间(毫秒),默认:100 |
| 名称 | 说明 |
|---|---|
| RABBITMQ_URL | RabbitMQ连接URL |
| RABBITMQ_CA_PATH | RabbitMQ服务器SSL证书的CA路径 |
| RABBITMQ_TLS_CLIENT_CERT | 连接RabbitMQ服务器的客户端证书路径 |
| RABBITMQ_TLS_CLIENT_KEY | 连接RabbitMQ服务器的客户端密钥路径 |
| RABBITMQ_DLX_NAME | RabbitMQ死信交换机名称 |
| RABBITMQ_DLX_QUEUE_NAME | RabbitMQ死信交换机的队列名称 |
| RABBITMQ_EXCHANGE_NAME | RabbitMQ消息交换机名称 |
| RABBITMQ_EXCHANGE_TYPE | RabbitMQ消息交换机类型 |
| RABBITMQ_EXCHANGE_INTERNAL | RabbitMQ消息交换机是否为内部交换机 |
| RABBITMQ_OUTER_EXCHANGE_NAME | RabbitMQ外部交换机名称 |
| RABBITMQ_OUTER_EXCHANGE_TYPE | RabbitMQ外部交换机类型 |
| RABBITMQ_OUTER_EXCHANGE_BINDING_KEY | RabbitMQ外部交换机的绑定键 |
| RABBITMQ_QUEUE_NAME | RabbitMQ消息交换机的队列名称 |
| RABBITMQ_CONSUMER_NAME | RabbitMQ消费者名称(可选,默认:主机名) |
| RABBITMQ_QOS_PREFETCH_COUNT | RabbitMQ QoS预取计数(默认:0) |
输入格式
仅支持批量操作,格式如下:
json{ "meta": { "<operation>": { ... } }, // 操作元数据,如索引信息 "data": { "<field>": "<value>" } // 文档数据 }
详细格式参见Elasticsearch Bulk API文档
配置参数
| 名称 | 说明 |
|---|---|
| ELASTICSEARCH_URL | Elasticsearch连接URL |
| ELASTICSEARCH_FLUSH_MAX_SIZE | 发送到Elasticsearch Bulk API的最大批量大小 |
| ELASTICSEARCH_FLUSH_MAX_INTERVAL_MS | 刷新到Elasticsearch Bulk API的最大间隔时间(毫秒) |
bashmake docker-build
bashdocker compose up -d
bashmake test
特别感谢Adrià Compte设计的Homing Pigeon logo。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务