重构了一下 rag的方法, 使用 goframe的框架, 还有redis连接部分

This commit is contained in:
Cold
2025-12-06 18:04:29 +08:00
committed by 张斌
parent f7cb007491
commit 4b2b5e6177
16 changed files with 398 additions and 260 deletions

View File

@@ -2,11 +2,12 @@ package rabbitmq
import (
"context"
"fmt"
"sync"
"time"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
amqp "github.com/rabbitmq/amqp091-go"
)
@@ -33,13 +34,7 @@ func Init(ctx context.Context, cfg *Config) error {
var err error
once.Do(func() {
// 构建连接字符串
url := fmt.Sprintf("amqp://%s:%s@%s:%d/%s",
cfg.Username,
cfg.Password,
cfg.Host,
cfg.Port,
cfg.VHost,
)
url := "amqp://" + cfg.Username + ":" + cfg.Password + "@" + cfg.Host + ":" + gconv.String(cfg.Port) + "/" + cfg.VHost
// 创建连接
conn, err = amqp.Dial(url)
@@ -89,7 +84,7 @@ func GetChannel() (*amqp.Channel, error) {
defer mu.RUnlock()
if channel == nil || channel.IsClosed() {
return nil, fmt.Errorf("RabbitMQ Channel 未初始化或已关闭")
return nil, gerror.New("RabbitMQ Channel 未初始化或已关闭")
}
return channel, nil
@@ -101,7 +96,7 @@ func GetConnection() (*amqp.Connection, error) {
defer mu.RUnlock()
if conn == nil || conn.IsClosed() {
return nil, fmt.Errorf("RabbitMQ 连接未初始化或已关闭")
return nil, gerror.New("RabbitMQ 连接未初始化或已关闭")
}
return conn, nil
@@ -160,13 +155,7 @@ func reconnect(ctx context.Context) {
VHost: g.Cfg().MustGet(ctx, "rabbitmq.vhost", "/").String(),
}
url := fmt.Sprintf("amqp://%s:%s@%s:%d/%s",
cfg.Username,
cfg.Password,
cfg.Host,
cfg.Port,
cfg.VHost,
)
url := "amqp://" + cfg.Username + ":" + cfg.Password + "@" + cfg.Host + ":" + gconv.String(cfg.Port) + "/" + cfg.VHost
var err error
conn, err = amqp.Dial(url)
@@ -190,7 +179,7 @@ func reconnect(ctx context.Context) {
}
// Close 关闭连接
func Close(ctx context.Context) error {
func Close(ctx context.Context) (err error) {
mu.Lock()
defer mu.Unlock()
@@ -201,21 +190,21 @@ func Close(ctx context.Context) error {
}
if channel != nil {
if err := channel.Close(); err != nil {
if err = channel.Close(); err != nil {
g.Log().Errorf(ctx, "关闭 RabbitMQ Channel 失败: %v", err)
}
channel = nil
}
if conn != nil {
if err := conn.Close(); err != nil {
if err = conn.Close(); err != nil {
g.Log().Errorf(ctx, "关闭 RabbitMQ 连接失败: %v", err)
return err
return
}
conn = nil
}
watcherStarted = false
g.Log().Info(ctx, "RabbitMQ 连接已关闭")
return nil
return
}