mirror of
https://github.com/go-micro/go-micro.git
synced 2025-06-30 22:33:49 +02:00
* feat: more plugins * chore(ci): split out benchmarks Attempt to resolve too many open files in ci * chore(ci): split out benchmarks * fix(ci): Attempt to resolve too many open files in ci * fix: set DefaultX for cli flag and service option * fix: restore http broker * fix: default http broker * feat: full nats profile * chore: still ugly, not ready * fix: better initialization for profiles * fix(tests): comment out flaky listen tests * fix: disable benchmarks on gha * chore: cleanup, comments * chore: add nats config source
55 lines
1.0 KiB
Go
55 lines
1.0 KiB
Go
package nats
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
natsgo "github.com/nats-io/nats.go"
|
|
"go-micro.dev/v5/config/source"
|
|
)
|
|
|
|
type (
|
|
urlKey struct{}
|
|
bucketKey struct{}
|
|
keyKey struct{}
|
|
)
|
|
|
|
// WithUrl sets the nats url.
|
|
func WithUrl(a ...string) source.Option {
|
|
return func(o *source.Options) {
|
|
if o.Context == nil {
|
|
o.Context = context.Background()
|
|
}
|
|
o.Context = context.WithValue(o.Context, urlKey{}, a)
|
|
}
|
|
}
|
|
|
|
// WithBucket sets the nats key.
|
|
func WithBucket(a string) source.Option {
|
|
return func(o *source.Options) {
|
|
if o.Context == nil {
|
|
o.Context = context.Background()
|
|
}
|
|
o.Context = context.WithValue(o.Context, bucketKey{}, a)
|
|
}
|
|
}
|
|
|
|
// WithKey sets the nats key.
|
|
func WithKey(a string) source.Option {
|
|
return func(o *source.Options) {
|
|
if o.Context == nil {
|
|
o.Context = context.Background()
|
|
}
|
|
o.Context = context.WithValue(o.Context, keyKey{}, a)
|
|
}
|
|
}
|
|
|
|
func Client(url string) (natsgo.JetStreamContext, error) {
|
|
nc, err := natsgo.Connect(url)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return nc.JetStream(natsgo.MaxWait(10 * time.Second))
|
|
}
|