重构了一下 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"
)
@@ -24,16 +24,16 @@ func NewPublisher(exchange, routingKey string) *Publisher {
}
// Publish 发布消息
func (p *Publisher) Publish(ctx context.Context, message interface{}) error {
func (p *Publisher) Publish(ctx context.Context, message interface{}) (err error) {
ch, err := GetChannel()
if err != nil {
return err
}
// 序列化消息
body, err := json.Marshal(message)
body, err := gjson.Encode(message)
if err != nil {
return fmt.Errorf("消息序列化失败: %v", err)
return gerror.Newf("消息序列化失败: %v", err)
}
// 发布消息
@@ -59,21 +59,21 @@ func (p *Publisher) Publish(ctx context.Context, message interface{}) error {
g.Log().Debugf(ctx, "消息发布成功: exchange=%s, routingKey=%s",
p.exchange, p.routingKey)
return nil
return
}
// PublishDelayed 发布延时消息
// delaySeconds: 延时秒数
func (p *Publisher) PublishDelayed(ctx context.Context, message interface{}, delaySeconds int) error {
func (p *Publisher) PublishDelayed(ctx context.Context, message interface{}, delaySeconds int) (err error) {
ch, err := GetChannel()
if err != nil {
return err
}
// 序列化消息
body, err := json.Marshal(message)
body, err := gjson.Encode(message)
if err != nil {
return fmt.Errorf("消息序列化失败: %v", err)
return gerror.Newf("消息序列化失败: %v", err)
}
// 发布延时消息(需要 rabbitmq_delayed_message_exchange 插件)
@@ -102,13 +102,13 @@ func (p *Publisher) PublishDelayed(ctx context.Context, message interface{}, del
g.Log().Debugf(ctx, "延时消息发布成功: exchange=%s, routingKey=%s, delay=%ds",
p.exchange, p.routingKey, delaySeconds)
return nil
return
}
// PublishBatch 批量发布消息
func (p *Publisher) PublishBatch(ctx context.Context, messages []interface{}) error {
func (p *Publisher) PublishBatch(ctx context.Context, messages []interface{}) (err error) {
if len(messages) == 0 {
return nil
return
}
ch, err := GetChannel()
@@ -117,7 +117,7 @@ func (p *Publisher) PublishBatch(ctx context.Context, messages []interface{}) er
}
for i, message := range messages {
body, err := json.Marshal(message)
body, err := gjson.Encode(message)
if err != nil {
g.Log().Errorf(ctx, "消息 %d 序列化失败: %v", i, err)
continue
@@ -143,5 +143,5 @@ func (p *Publisher) PublishBatch(ctx context.Context, messages []interface{}) er
}
g.Log().Infof(ctx, "批量发布完成: 共 %d 条消息", len(messages))
return nil
return
}