package main import ( "fmt" "github.com/nats-io/nats.go" "runtime" "strings" ) func newConn(svr string) (*nats.Conn, error) { options := nats.GetDefaultOptions() //options.Url = nats.DefaultURL _, file, _, _ := runtime.Caller(0) fileDirs := strings.Split(file, "/") name := strings.Split(fileDirs[len(fileDirs) - 1], ".")[0] options.Name = name servers := strings.Split(svr, ",") options.Servers = servers options.MaxReconnect = nats.DefaultMaxReconnect options.ReconnectWait = nats.DefaultReconnectWait options.Timeout = nats.DefaultTimeout if conn, err := options.Connect(); err != nil { return nil, err } else { return conn, nil } } func newStream(streamName string, conn *nats.Conn) (js nats.JetStreamContext, err error) { js, err = conn.JetStream() if err != nil { return nil, fmt.Errorf("new jetstream error: %v", err) } stream, _ := js.StreamInfo(streamName) if stream == nil { _, err := js.AddStream(&nats.StreamConfig{ Name: streamName, Subjects: []string{streamName + ".>"}, }) if err != nil { return nil, fmt.Errorf("new stream '%s' error: %v", streamName, err) } } return js, nil }