aboutsummaryrefslogtreecommitdiff
path: root/setup/jetstream/nats.go
diff options
context:
space:
mode:
Diffstat (limited to 'setup/jetstream/nats.go')
-rw-r--r--setup/jetstream/nats.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/setup/jetstream/nats.go b/setup/jetstream/nats.go
index 01fec9ad..48683789 100644
--- a/setup/jetstream/nats.go
+++ b/setup/jetstream/nats.go
@@ -20,6 +20,8 @@ import (
type NATSInstance struct {
*natsserver.Server
+ nc *natsclient.Conn
+ js natsclient.JetStreamContext
}
var natsLock sync.Mutex
@@ -69,11 +71,18 @@ func (s *NATSInstance) Prepare(process *process.ProcessContext, cfg *config.JetS
if !s.ReadyForConnections(time.Second * 10) {
logrus.Fatalln("NATS did not start in time")
}
+ // reuse existing connections
+ if s.nc != nil {
+ return s.js, s.nc
+ }
nc, err := natsclient.Connect("", natsclient.InProcessServer(s))
if err != nil {
logrus.Fatalln("Failed to create NATS client")
}
- return setupNATS(process, cfg, nc)
+ js, _ := setupNATS(process, cfg, nc)
+ s.js = js
+ s.nc = nc
+ return js, nc
}
func setupNATS(process *process.ProcessContext, cfg *config.JetStream, nc *natsclient.Conn) (natsclient.JetStreamContext, *natsclient.Conn) {