重构了一下 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,9 +2,9 @@ package rabbitmq
import (
"context"
"encoding/json"
"fmt"
"github.com/gogf/gf/v2/encoding/gjson"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
amqp "github.com/rabbitmq/amqp091-go"
)
@@ -74,7 +74,7 @@ func NewConsumer(queue string, handler MessageHandler, opts ...ConsumerOption) *
}
// Start 启动消费者
func (c *Consumer) Start(ctx context.Context) error {
func (c *Consumer) Start(ctx context.Context) (err error) {
// 创建可取消的 context
workerCtx, cancel := context.WithCancel(ctx)
c.cancel = cancel
@@ -90,7 +90,7 @@ func (c *Consumer) Start(ctx context.Context) error {
false, // global: false 表示仅应用于当前 channel
)
if err != nil {
return fmt.Errorf("设置 QoS 失败: %v", err)
return gerror.Newf("设置 QoS 失败: %v", err)
}
// 开始消费
@@ -104,7 +104,7 @@ func (c *Consumer) Start(ctx context.Context) error {
nil, // args
)
if err != nil {
return fmt.Errorf("开始消费失败: %v", err)
return gerror.Newf("开始消费失败: %v", err)
}
g.Log().Infof(ctx, "消费者已启动: queue=%s, prefetch=%d, workers=%d",
@@ -115,7 +115,7 @@ func (c *Consumer) Start(ctx context.Context) error {
go c.worker(workerCtx, i, msgs)
}
return nil
return
}
// worker 工作协程
@@ -168,8 +168,8 @@ func StartTypedConsumer[T any](
// 包装处理函数
wrappedHandler := func(ctx context.Context, body []byte) error {
var msg T
if err := json.Unmarshal(body, &msg); err != nil {
return fmt.Errorf("反序列化消息失败: %v", err)
if err := gjson.DecodeTo(body, &msg); err != nil {
return gerror.Newf("反序列化消息失败: %v", err)
}
return handler(ctx, &msg)