propagate context and SuccessAutoAck option other brokers
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
parent
504bebc2e7
commit
ae10eb2ab8
37
context.go
Normal file
37
context.go
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
package nats
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/micro/go-micro/broker"
|
||||||
|
)
|
||||||
|
|
||||||
|
// setSubscribeOption returns a function to setup a context with given value
|
||||||
|
func setSubscribeOption(k, v interface{}) broker.SubscribeOption {
|
||||||
|
return func(o *broker.SubscribeOptions) {
|
||||||
|
if o.Context == nil {
|
||||||
|
o.Context = context.Background()
|
||||||
|
}
|
||||||
|
o.Context = context.WithValue(o.Context, k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// setBrokerOption returns a function to setup a context with given value
|
||||||
|
func setBrokerOption(k, v interface{}) broker.Option {
|
||||||
|
return func(o *broker.Options) {
|
||||||
|
if o.Context == nil {
|
||||||
|
o.Context = context.Background()
|
||||||
|
}
|
||||||
|
o.Context = context.WithValue(o.Context, k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// setPublishOption returns a function to setup a context with given value
|
||||||
|
func setPublishOption(k, v interface{}) broker.PublishOption {
|
||||||
|
return func(o *broker.PublishOptions) {
|
||||||
|
if o.Context == nil {
|
||||||
|
o.Context = context.Background()
|
||||||
|
}
|
||||||
|
o.Context = context.WithValue(o.Context, k, v)
|
||||||
|
}
|
||||||
|
}
|
7
nats.go
7
nats.go
@ -3,13 +3,14 @@ package nats
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/micro/go-micro/broker"
|
"github.com/micro/go-micro/broker"
|
||||||
"github.com/micro/go-micro/cmd"
|
"github.com/micro/go-micro/cmd"
|
||||||
"github.com/micro/go-micro/codec/json"
|
"github.com/micro/go-micro/codec/json"
|
||||||
"github.com/nats-io/go-nats"
|
nats "github.com/nats-io/go-nats"
|
||||||
)
|
)
|
||||||
|
|
||||||
type nbroker struct {
|
type nbroker struct {
|
||||||
@ -144,6 +145,10 @@ func (n *nbroker) Publish(topic string, msg *broker.Message, opts ...broker.Publ
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (n *nbroker) Subscribe(topic string, handler broker.Handler, opts ...broker.SubscribeOption) (broker.Subscriber, error) {
|
func (n *nbroker) Subscribe(topic string, handler broker.Handler, opts ...broker.SubscribeOption) (broker.Subscriber, error) {
|
||||||
|
if n.conn == nil {
|
||||||
|
return nil, errors.New("not connected")
|
||||||
|
}
|
||||||
|
|
||||||
opt := broker.SubscribeOptions{
|
opt := broker.SubscribeOptions{
|
||||||
AutoAck: true,
|
AutoAck: true,
|
||||||
}
|
}
|
||||||
|
11
options.go
11
options.go
@ -1,20 +1,13 @@
|
|||||||
package nats
|
package nats
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
|
|
||||||
"github.com/micro/go-micro/broker"
|
"github.com/micro/go-micro/broker"
|
||||||
"github.com/nats-io/go-nats"
|
nats "github.com/nats-io/go-nats"
|
||||||
)
|
)
|
||||||
|
|
||||||
type optionsKey struct{}
|
type optionsKey struct{}
|
||||||
|
|
||||||
// Options accepts nats.Options
|
// Options accepts nats.Options
|
||||||
func Options(opts nats.Options) broker.Option {
|
func Options(opts nats.Options) broker.Option {
|
||||||
return func(o *broker.Options) {
|
return setBrokerOption(optionsKey{}, opts)
|
||||||
if o.Context == nil {
|
|
||||||
o.Context = context.Background()
|
|
||||||
}
|
|
||||||
o.Context = context.WithValue(o.Context, optionsKey{}, opts)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user