OpenFaaS 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 提交。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429