跳转到主要内容

MongoDB 插件

MongoDB 插件是一个由 runtime 持有的 Mongo Client,同时负责连接池、超时、指标和健康检查。

Runtime 事实

项目
Go modulegithub.com/go-lynx/lynx-mongodb
配置前缀lynx.mongodb
Runtime 插件名mongodb.client
公开 APIGetMongoDB()GetMongoDBPlugin()GetMongoDBDatabase()GetMongoDBCollection()GetMetricsGatherer()

实现里真正做了什么

插件会初始化一个受管的 MongoDB Client,并可按配置启用:

  • 连接池和超时控制
  • TLS 配置
  • read concern 与 write concern
  • Prometheus command 与 pool 监控
  • 周期性健康检查

也就是说,插件负责连接性和运行时行为;集合设计、索引设计和查询模型仍然归你的 repository 层。

配置

lynx:
mongodb:
uri: "mongodb://localhost:27017"
database: "app"
max_pool_size: 100
min_pool_size: 5
connect_timeout: 30s
server_selection_timeout: 30s
enable_metrics: true
enable_health_check: true

官方模板实际怎么用

官方模板默认并不会接 MongoDB。它当前在 bootstrap.local.yaml 里是从 MySQL + Redis 起步的。

这不是文档漏写,而是模板有意做的取舍:

  • 模板先选一条具体 SQL 路径
  • MongoDB 仍然是你在服务真正需要文档型存储时再补进去的可选数据层
  • 所以这页描述的是“受支持插件”,不是“默认脚手架依赖”

如何使用

import mongodb "github.com/go-lynx/lynx-mongodb"

client := mongodb.GetMongoDB()
db := mongodb.GetMongoDBDatabase()
orders := mongodb.GetMongoDBCollection("orders")
gatherer := mongodb.GetMetricsGatherer()

如果你想把插件指标并入应用自身的 /metricsGetMetricsGatherer() 就很重要。

实际注意点

  • 插件会在启动阶段测试连接。
  • 只有启用相关功能时,后台 metrics 和 health-check goroutine 才会启动。
  • 如果需要更高层的仓储抽象,应当构建在插件之上,而不是塞回插件内部。

相关页面