RabbitMQ 插件
RabbitMQ 插件是一个由 runtime 管理的消息客户端,内部维护命名 producer channel 和 consumer channel。
Runtime 事实
| 项目 | 值 |
|---|---|
| Go module | github.com/go-lynx/lynx-rabbitmq |
| 配置前缀 | rabbitmq |
| Runtime 插件名 | rabbitmq |
| 公开 API 形态 | 通过 plugin-manager 取 rabbitmq,再使用 rabbitmq.ClientInterface 方法 |
实现支持什么
从代码看,这个插件提供:
- 一个受管的 AMQP 连接
- 命名 producer channel
- 命名 consumer channel
- 启动阶段完成 exchange 和 queue 声明
- health checker 和 connection manager
- retry 处理
这比“支持发布和订阅”要具体得多。
配置
rabbitmq:
urls:
- "amqp://guest:guest@localhost:5672/"
virtual_host: "/"
dial_timeout: 3s
heartbeat: 30s
channel_pool_size: 10
producers:
- name: "order-producer"
enabled: true
exchange: "orders.exchange"
exchange_type: "direct"
routing_key: "orders.create"
consumers:
- name: "order-consumer"
enabled: true
queue: "orders.queue"
exchange: "orders.exchange"
routing_key: "orders.create"
官方模板实际怎么用
官方模板默认并不会启用 RabbitMQ。
这是有意为之:
- 脚手架不会预设每个服务都需要 AMQP 基础设施
- 只有服务真正拥有 queue / exchange 语义时,才应该加 RabbitMQ
- 所以这页是后续消息选型的接入页,不是默认模板 runtime 的描述
要注意,当前插件前缀是 rabbitmq,不是 lynx.rabbitmq。
如何使用
plugin := lynx.Lynx().GetPluginManager().GetPlugin("rabbitmq")
client := plugin.(rabbitmq.ClientInterface)
之后再通过 client interface 暴露的命名 producer / consumer API 使用能力。