Something went wrong. Try again.
Something went wrong. Try again.
nats-study main.go
986 B · 52 lines
Go
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253package main
import ( "context" "fmt" "log" "os" "os/signal"
"github.com/nats-io/nats.go")
func cancelationSignal() context.Context { c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt)
ctx, cancel := context.WithCancel(context.Background())
go func() { <-c cancel() }()
return ctx}
func listenChannel(title string, ch chan *nats.Msg) { for msg := range ch { fmt.Printf("%s received message: %s\n", title, string(msg.Data)) }}
func main() { ctx := cancelationSignal()
nc, err := nats.Connect(nats.DefaultURL) if err != nil { log.Fatal(err) } defer nc.Drain()
balanceCh := make(chan *nats.Msg) nc.QueueSubscribeSyncWithChan("test1", "balance", balanceCh) go listenChannel("[Balance]", balanceCh)
transactionCh := make(chan *nats.Msg) nc.QueueSubscribeSyncWithChan("test1", "transaction", transactionCh) go listenChannel("[Transaction:first]", transactionCh) go listenChannel("[Transaction:second]", transactionCh)
<-ctx.Done()}