
templum/rabbitmq-connectorOpenFaaS RabbitMQ Connector 是一个非官方的 OpenFaaS 触发器,基于 RabbitMQ 消息触发 OpenFaaS 函数。它通过 RabbitMQ 的 Routing keys 调用监听特定 topic 的 OpenFaaS 函数,实现从 RabbitMQ 消息到 OpenFaaS 函数的事件驱动触发。
log,monitoring,billing适用于需要通过 RabbitMQ 消息异步触发 OpenFaaS 函数的场景,例如:
需通过 OpenFaaS CLI 或 REST API 部署函数,并添加 topic 注解,指定函数监听的主题(逗号分隔)。
编写函数配置文件 stack.yml,添加 annotations 字段:
yamlversion: 1.0 provider: name: openfaas gateway: [***] functions: log-processor: image: your-registry/log-processor:latest annotations: topic: "log,monitoring" # 监听 log 和 monitoring 主题
部署函数:
bashfaas-cli deploy -f stack.yml
| 参数名 | 说明 | 默认值 | 可选值 |
|---|---|---|---|
basic_auth | 是否启用 basic_auth 认证(OpenFaaS 网关) | - | 1/true(启用)、0/false(禁用) |
secret_mount_path | 存储 basic_auth 密钥的文件路径 | - | 密钥文件绝对路径 |
OPEN_FAAS_GW_URL | OpenFaaS 网关 URL | [***] | 网关地址(如 [***]) |
REQ_TIMEOUT | 函数调用请求超时时间 | 30s | 时间字符串(如 10s、2m) |
TOPIC_MAP_REFRESH_TIME | 主题映射刷新时间(刷新函数与主题的关联关系) | 60s | 时间字符串(如 30s、5m) |
INSECURE_SKIP_VERIFY | 是否跳过 OpenFaaS 网关 HTTPS 证书验证(不推荐生产环境启用) | false | true/false |
MAX_CLIENT_PER_HOST | 单个函数主机的最大连接数 | 256 | 正整数 |
| 参数名 | 说明 | 默认值 | 可选值 |
|---|---|---|---|
TLS_ENABLED | 是否启用 TLS 连接 RabbitMQ | false | true/false |
TLS_CA_CERT_PATH | CA 证书文件路径(需确保进程有权限访问) | - | 证书文件绝对路径 |
TLS_SERVER_CERT_PATH | 客户端证书文件路径(需确保进程有权限访问) | - | 证书文件绝对路径 |
TLS_SERVER_KEY_PATH | 客户端密钥文件路径(需确保进程有权限访问) | - | 密钥文件绝对路径 |
注意:启用 TLS 时,
RMQ_HOST需与证书中的通用名称(Common Name)一致,否则连接会失败。
| 参数名 | 说明 | 默认值 | 可选值 |
|---|---|---|---|
RMQ_HOST | RabbitMQ 主机名或 IP | - | 字符串(如 rabbitmq:5672) |
RMQ_PORT | RabbitMQ 端口号 | - | 整数(如 5672 或 TLS 端口 5671) |
RMQ_VHOST | RabbitMQ 虚拟主机(vhost) | / | 字符串 |
RMQ_USER | RabbitMQ 用户名(与 RMQ_PASS 同时为空时不使用认证) | "" | 字符串 |
RMQ_PASS | RabbitMQ 密码(与 RMQ_USER 同时为空时不使用认证) | "" | 字符串 |
PATH_TO_TOPOLOGY | RabbitMQ 交换器(Exchange)拓扑配置文件路径(必填) | - | YAML 文件绝对路径 |
需通过 YAML 文件定义 RabbitMQ 交换器(Exchange)配置,路径由 PATH_TO_TOPOLOGY 指定。配置格式如下:
yaml# 交换器配置列表 - name: Exchange_Name # 交换器名称(必填) topics: [Foo, Bar] # 交换器关联的主题列表(必填) declare: true # 是否声明交换器(若已存在,会验证配置是否匹配),默认:false type: "direct" # 交换器类型(必填,仅支持 direct 或 topic) durable: false # 交换器是否持久化(RabbitMQ 重启后保留),默认:false auto-deleted: false # 所有消费者断开后是否自动删除交换器,默认:false
OpenFaaS_{Exchange_Name}_{Topic}(如交换器 logs 的主题 error,队列名为 OpenFaaS_logs_error)。durable 和 auto-deleted 属性与所属交换器保持一致。bashdocker run -d \ --name rabbitmq-connector \ -e RMQ_HOST=rabbitmq \ -e RMQ_PORT=5672 \ -e RMQ_USER=guest \ -e RMQ_PASS=guest \ -e OPEN_FAAS_GW_URL=[***] \ -e PATH_TO_TOPOLOGY=/topology/topology.yaml \ -e TOPIC_MAP_REFRESH_TIME=30s \ -e REQ_TIMEOUT=15s \ -v /path/to/your/topology.yaml:/topology/topology.yaml \ -v /path/to/basic-auth-secret:/secret/basic-auth \ # 若启用 basic_auth templum/rabbitmq-connector:latest
yaml- name: logs-exchange topics: [error, info, warn] declare: true type: "topic" durable: true auto-deleted: false - name: billing-exchange topics: [invoice, payment] declare: false type: "direct" durable: false
如有 Bug 报告或功能需求,请通过 GitHub Issues 提交。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务