package nats import ( "context" "encoding/json" "fmt" ) // publish 发布消息到指定主题 func publish(ctx context.Context, subject string, data any) (err error) { if !IsConnected() { return fmt.Errorf("NATS 未连接") } // 序列化数据 dataBytes, err := json.Marshal(data) if err != nil { return fmt.Errorf("序列化数据失败: %w", err) } // 发布消息 metrics.PublishCount.Add(1) _, err = js.Publish(ctx, subject, dataBytes) if err != nil { metrics.PublishError.Add(1) return fmt.Errorf("发布消息失败: %w", err) } return }