重构了一下 rag的方法, 使用 goframe的框架, 还有redis连接部分
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user