gintx

module
v0.1.5 Latest Latest
Warning

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

Go to latest
Published: Mar 5, 2026 License: Apache-2.0

README

gintx - 运行时框架

gintx 提供微服务运行时基础设施组件。

安装

go get github.com/ink-yht-code/gintx

模块

log - 日志

基于 zap 的结构化日志,支持 ctx 注入 request_id。

import "github.com/ink-yht-code/gintx/log"

// 初始化
log.Init(log.Config{
    Level:    "info",
    Encoding: "json",
    Output:   "stdout",
})

// 使用
log.Info("message", zap.String("key", "value"))
log.InfoCtx(ctx, "message with request_id")
tx - 事务管理

事务管理器,支持 ctx 注入事务 DB。

import "github.com/ink-yht-code/gintx/tx"

// 创建事务管理器
txMgr := tx.NewManager(db)

// 在事务中执行
err := txMgr.Do(ctx, func(ctx context.Context) error {
    // 获取事务 DB
    txDB := tx.FromContext(ctx, db)
    return txDB.Create(&model).Error
})

// 在 DAO 层获取 DB
func (d *DAO) Create(ctx context.Context, m *Model) error {
    db := tx.GetDB(ctx, d.db) // 自动使用事务 DB
    return db.Create(m).Error
}
db - 数据库

GORM 数据库初始化。

import "github.com/ink-yht-code/gintx/db"

db, err := db.New(db.Config{
    DSN:      "user:pass@tcp(127.0.0.1:3306)/db",
    MaxOpen:  100,
    MaxIdle:  10,
    LogLevel: "info",
})
redis - Redis

Redis 客户端初始化。

import "github.com/ink-yht-code/gintx/redis"

client := redis.New(redis.Config{
    Addr:     "127.0.0.1:6379",
    Password: "",
    DB:       0,
})
httpx - HTTP 服务器

Gin HTTP 服务器,内置中间件。

import "github.com/ink-yht-code/gintx/httpx"

server := httpx.NewServer(httpx.Config{
    Enabled: true,
    Addr:    ":8080",
})

// 注册路由
server.Engine.GET("/api/v1/hello", handler)

// 启动
server.Run()

// 关闭
server.Shutdown(ctx)

内置中间件:

  • RequestID() - 请求 ID
  • Logger() - 访问日志
  • Recovery() - Panic 恢复
rpc - gRPC 服务器

gRPC 服务器,内置拦截器。

import "github.com/ink-yht-code/gintx/rpc"

server := rpc.NewServer(rpc.Config{
    Enabled: true,
    Addr:    ":9090",
})

// 注册服务
pb.RegisterUserServiceServer(server.Server, userService)

// 启动
server.Run()

// 关闭
server.Shutdown(ctx)
health - 健康检查

HTTP 和 gRPC 健康检查。

import "github.com/ink-yht-code/gintx/health"

// HTTP 健康检查
server.Engine.GET("/health", health.HTTPHandler())

// HTTP 就绪检查
server.Engine.GET("/ready", health.ReadyHandler(
    checkDB,
    checkRedis,
))

// gRPC 健康检查
healthServer := health.NewHealthServer()
healthServer.Register("user-service", &DBChecker{db})
grpc_health_v1.RegisterHealthServer(server.Server, healthServer)
error - 错误映射

业务错误到 HTTP/gRPC 响应映射。

import "github.com/ink-yht-code/gintx/error"

// 实现 BizError 接口
type BizError struct {
    code int
    msg  string
}

func (e *BizError) BizCode() int { return e.code }
func (e *BizError) BizMsg() string { return e.msg }
func (e *BizError) Error() string { return e.msg }

// 映射到 HTTP
error.MapToHTTP(c, err)
outbox - Outbox 模式

事件发布 Outbox 模式(TODO)。

app - 应用启动器

应用生命周期管理。

import "github.com/ink-yht-code/gintx/app"

app, err := app.New(&app.Config{
    Service: app.ServiceConfig{ID: 101, Name: "user"},
    HTTP:    httpx.Config{Enabled: true, Addr: ":8080"},
    Log:     log.Config{Level: "info", Encoding: "json"},
    DB:      db.Config{DSN: "..."},
    Redis:   redis.Config{Addr: "..."},
})

app.Run()
app.Shutdown(ctx)

错误码规范

业务码 = ServiceID * 10000 + BizCode

BizCode 含义
0 成功
1 参数错误
2 未授权
3 无权限
4 未找到
5 冲突
9999 内部错误

License

Apache License 2.0

Directories

Path Synopsis
Package app 提供应用启动器
Package app 提供应用启动器
Package db 提供 GORM 数据库初始化
Package db 提供 GORM 数据库初始化
Package error 提供错误映射功能
Package error 提供错误映射功能
Package health 提供健康检查功能
Package health 提供健康检查功能
Package httpx 提供 HTTP server 初始化和中间件
Package httpx 提供 HTTP server 初始化和中间件
Package log 提供全局日志功能,支持 ctx 注入 request_id
Package log 提供全局日志功能,支持 ctx 注入 request_id
Package outbox 提供 Outbox 模式实现
Package outbox 提供 Outbox 模式实现
Package redis 提供 Redis 客户端初始化
Package redis 提供 Redis 客户端初始化
Package rpc 提供 gRPC server 初始化和拦截器
Package rpc 提供 gRPC server 初始化和拦截器
Package tx 提供事务管理,支持 ctx 注入事务 DB
Package tx 提供事务管理,支持 ctx 注入事务 DB

Jump to

Keyboard shortcuts

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