
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
!overview
Homing Pigeon是一款用于轻松连接读写适配器的应用程序。无论输入接口接收什么消息,都会将其发送到特定的输出接口,无需编写常规样板代码。该工具设计为可轻松插入任何类型的输入和输出适配器,可用于消息存储或消息代理等场景,例如AMQP到Elasticsearch、HTTP到MySQL、HTTP到HTTP或任何其他组合。
重要细节:消息将“原样”从读取接口转发到写入接口,因此预期格式取决于所连接的写入适配器。
读取接口
RabbitMQ
写入接口
Elasticsearch(使用Bulk API)
更多信息请参见https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.htmljson{ "meta": { "index" : { "_index" : "test", "_id" : "1" } }, "data": { "field1" : "value1" } }
适用于需要在不同系统间转发消息的场景,例如:
示例场景:
假设拥有example.com,需跟踪多种用户事件(点击按钮、填写表单等)并快速可视化。可部署Homing Pigeon连接现有RabbitMQ和Elasticsearch集群,网站发送事件消息到指定交换机(按特定格式),消息将自动持久化到Elasticsearch,最后部署Kibana即可实现数据可视化。
Docker镜像
所有版本均通过Docker镜像发布:softonic/homing-pigeon
Kubernetes部署
提供Helm Chart便于K8s部署:https://github.com/softonic/homing-pigeon-chart
Docker运行示例
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 \ docker.xuanyuan.run/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_*** | 读取接口实现,默认:AMQP |
| WRITE_*** | 写入接口实现,默认:ELASTIC |
| MIDDLEWARE_BATCH_SIZE | 批量发送到中间件的消息数量,默认:50 |
| MIDDLEWARE_BATCH_TIMEOUT_MS | 等待批量达到最大大小的最长时间(毫秒),默认:100 |
读取适配器配置:RabbitMQ
| 名称 | 说明 |
|---|---|
| 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_***DING_KEY | RabbitMQ外部交换机的绑定键 |
| RABBITMQ_QUEUE_NAME | RabbitMQ消息交换机的队列名称 |
| RABBITMQ_CONSUMER_NAME | RabbitMQ消费者名称(可选,默认:主机名) |
| RABBITMQ_QOS_PREFETCH_COUNT | RabbitMQ QoS预取计数(默认:0) |
写入适配器配置:Elasticsearch
输入格式
仅支持批量操作,格式如下:
json{ "meta": { "<operation>": { ... } }, // 操作元数据,如索引信息 "data": { "<field>": "<value>" } // 文档数据 }
详细格式参见https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html
配置参数
| 名称 | 说明 |
|---|---|
| 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
特别感谢https://dribbble.com/muniatu%E8%AE%BE%E8%AE%A1%E7%9A%84Homing Pigeon logo。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务