Skip to content
This repository has been archived by the owner on Jan 21, 2022. It is now read-only.

Commit

Permalink
Support multiple Nats URIs
Browse files Browse the repository at this point in the history
Signed-off-by: Phan Le <ple@pivotallabs.com>
  • Loading branch information
Chris Adams authored and Phan Le committed Apr 11, 2014
1 parent 5ca83c0 commit 80a2640
Showing 1 changed file with 20 additions and 9 deletions.
29 changes: 20 additions & 9 deletions cfcomponent/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ package cfcomponent
import (
"errors"
"fmt"

"github.com/cloudfoundry/gosteno"
"github.com/cloudfoundry/yagnats"
"strconv"
)

type Config struct {
Syslog string
VarzPort uint32
VarzUser string
VarzPass string
NatsHost string
NatsHosts []string
NatsPort int
NatsUser string
NatsPass string
Expand All @@ -27,17 +27,28 @@ var DefaultYagnatsClientProvider = func(logger *gosteno.Logger) yagnats.NATSClie
}

func (c *Config) Validate(logger *gosteno.Logger) (err error) {
c.MbusClient = DefaultYagnatsClientProvider(logger)
members := []yagnats.ConnectionProvider{}

for _, natsHost := range c.NatsHosts {
members = append(members, &yagnats.ConnectionInfo{
Addr: fmt.Sprintf("%s:%d", natsHost, c.NatsPort),
Username: c.NatsUser,
Password: c.NatsPass,
})
}

addr := c.NatsHost + ":" + strconv.Itoa(c.NatsPort)
info := &yagnats.ConnectionInfo{
Addr: addr,
Username: c.NatsUser,
Password: c.NatsPass,
connectionInfo := &yagnats.ConnectionCluster{
Members: members,
}
err = c.MbusClient.Connect(info)

natsClient := yagnats.NewClient()

err = natsClient.Connect(connectionInfo)

if err != nil {
return errors.New(fmt.Sprintf("Could not connect to NATS: %v", err.Error()))
}

c.MbusClient = natsClient
return
}

0 comments on commit 80a2640

Please sign in to comment.