argoproj/amqp-gatewayAMQP网关是基于AMQP(Advanced Message Queuing Protocol)协议的消息网关服务,旨在作为消息中间件的桥梁,实现不同服务、系统间的消息路由、转换与集成。该镜像封装了AMQP网关核心功能,提供轻量级、可扩展的部署方式,简化分布式架构中消息流转的管理与控制。
bashdocker run -d \ --name amqp-gateway \ -p 5672:5672 \ # AMQP服务端口 -p 8080:8080 \ # 管理API/监控端口 -e AMQP_HOST=rabbitmq-server \ # AMQP服务器地址 -e AMQP_PORT=5672 \ # AMQP服务器端口 -e AMQP_USER=guest \ # AMQP认证用户名 -e AMQP_PASSWORD=guest \ # AMQP认证密码 -e ROUTE_CONFIG=/etc/gateway/routes.yaml \ # 路由规则配置文件路径 -v ./routes.yaml:/etc/gateway/routes.yaml \ # 挂载路由规则配置文件 amqp-gateway:latest
yamlversion: '3.8' services: amqp-gateway: image: amqp-gateway:latest container_name: amqp-gateway ports: - "5672:5672" # AMQP服务端口 - "8080:8080" # 管理API端口 environment: - AMQP_HOST=rabbitmq # 关联RabbitMQ服务名(需在同一网络) - AMQP_PORT=5672 - AMQP_USER=admin - AMQP_PASSWORD=admin123 - LOG_LEVEL=info # 日志级别:debug/info/warn/error - MAX_CONCURRENT=1000 # 最大并发消息处理数 volumes: - ./routes.yaml:/etc/gateway/routes.yaml # 路由规则配置 - ./logs:/var/log/amqp-gateway # 日志持久化 depends_on: - rabbitmq restart: unless-stopped rabbitmq: image: rabbitmq:3-management container_name: rabbitmq ports: - "5672:5672" - "***:***" # RabbitMQ管理界面 environment: - RABBITMQ_DEFAULT_USER=admin - RABBITMQ_DEFAULT_PASS=admin123 volumes: - rabbitmq-data:/var/lib/rabbitmq volumes: rabbitmq-data:
| 环境变量名 | 描述 | 默认值 | 示例 |
|---|---|---|---|
AMQP_HOST | AMQP服务器地址 | localhost | rabbitmq-server |
AMQP_PORT | AMQP服务器端口 | 5672 | 5672 |
AMQP_USER | AMQP认证用户名 | guest | admin |
AMQP_PASSWORD | AMQP认证密码 | guest | admin123 |
AMQP_VHOST | AMQP虚拟主机 | / | /my-vhost |
ROUTE_CONFIG | 路由规则配置文件路径 | /etc/gateway/routes.yaml | /app/routes.yaml |
LOG_LEVEL | 日志级别 | info | debug |
MAX_CONCURRENT | 最大并发消息处理数 | 500 | 1000 |
HEALTH_CHECK_PORT | 健康检查端口 | 8080 | 8081 |
yamlroutes: - name: "order-service-route" # 路由名称 source: # 消息来源 exchange: "order.exchange" # 源交换机 routingKey: "order.created" # 源路由键 queue: "order.queue" # 绑定的源队列(可选) destination: # 消息目标 exchange: "shipping.exchange" # 目标交换机 routingKey: "shipping.request" # 目标路由键 filters: # 消息过滤规则(可选) - type: "header" # 基于消息头过滤 key: "priority" operator: "gte" # 大于等于 value: 2 transform: # 消息转换规则(可选) type: "json" # JSON格式转换 operations: - action: "add" # 添加字段 path: "$.timestamp" value: "{{timestamp}}" # 使用当前时间戳 - action: "remove" # 删除字段 path: "$.internal_id"
启动容器后,通过管理API检查服务状态:
bashcurl http://localhost:8080/health
预期返回:{"status":"UP"}
发送测试消息至源交换机,检查目标队列是否接收到消息。
MAX_CONCURRENT参数,并配置资源限制(如Docker内存、CPU限制)。AMQP_TLS_ENABLE=true及相关证书配置)。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务