Files
common/nats/nats_publish.go

29 lines
572 B
Go

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
}