plugin

package
v2.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 4, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package plugin 定义 mgin v2 的统一插件契约与注册表。

所有对外框架组件(数据源、缓存、消息队列、注册中心、定时任务、对象存储等)均实现 Plugin 接口,并在 mgin.Init 阶段由注册表按 Order 升序统一初始化,在 SafeExit 阶段按 Order 逆序统一关闭。业务侧也可通过 mgin.Use / mgin.UsePlugin 注册自定义插件。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CloseAll

func CloseAll(ctx context.Context) error

CloseAll 按 Order 逆序对 Enabled()==true 的插件调用 Close。 设计要点(防漏关):

  • 单插件 Close 返回 error 仅记入首个错误并继续关闭其余插件;
  • 单插件 Close 若 panic,由 defer+recover 兜底,保证不会中断整条关闭链。

func HealthAll

func HealthAll() map[string]error

HealthAll 汇总各 Enabled()==true 插件的 Health() 结果,供 /health/ready 使用。

func InitAll

func InitAll(ctx context.Context) error

InitAll 按 Order 升序对 Enabled()==true 的插件调用 Init。 任一插件 Init 失败仅记录首个错误并继续,不会中断其余插件的初始化 (与旧 mgin.Init 的 if 链“不中断”语义一致)。

func Register

func Register(p Plugin)

Register 注册一个插件。按 Name 去重:同名插件后注册者覆盖先注册者, 但注册顺序(order 切片)仅在首次出现时记录。

func RegisterBuiltins

func RegisterBuiltins()

RegisterBuiltins 注册全部内置插件。在 mgin.Init 中、配置加载之后调用, 之后由 plugin.InitAll 统一驱动初始化。

func Unregister

func Unregister(name string)

Unregister 按名称注销插件。

Types

type Plugin

type Plugin interface {
	Name() string
	Order() int
	Init(ctx context.Context) error
	Close(ctx context.Context) error
	Health() error
	Enabled() bool
}

Plugin 是 mgin v2 的统一组件契约。

字段/方法语义:

  • Name:唯一名称,如 "mysql" "redis" "kafka" "nacos" "job" "s3"。
  • Order:启动顺序,数值越小越先 Init;Close 时按逆序执行。
  • Init:框架启动时调用,完成组件连接/初始化;失败返回 error。
  • Close:框架退出时调用,释放资源;失败返回 error(不应 panic)。
  • Health:供 /health/ready 自报健康;无依赖可返回 nil。
  • Enabled:是否由配置启用(通常读 go.config.used)。

func All

func All() []Plugin

All 返回全部已注册插件(按注册顺序)。

func Clickhouse

func Clickhouse() Plugin

func Elasticsearch

func Elasticsearch() Plugin

func GetByName

func GetByName(name string) Plugin

GetByName 按名称获取已注册插件,未找到返回 nil。

func Job

func Job() Plugin

func Kafka

func Kafka() Plugin

func Mongodb

func Mongodb() Plugin

func Mysql

func Mysql() Plugin

func Postgres

func Postgres() Plugin

func Redis

func Redis() Plugin

func Registry

func Registry() Plugin

---- 注册中心 适配 ---- 仅处理旧 mgin.Init 中实际注册的三类(nacos/etcd/consul),与既有行为保持一致。

func S3

func S3() Plugin

func Sqlite

func Sqlite() Plugin

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL