本文整理汇总了Golang中github.com/cloudfoundry/yagnats.NATSConn.Subscribe方法的典型用法代码示例。如果您正苦于以下问题:Golang NATSConn.Subscribe方法的具体用法?Golang NATSConn.Subscribe怎么用?Golang NATSConn.Subscribe使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/cloudfoundry/yagnats.NATSConn
的用法示例。
在下文中一共展示了NATSConn.Subscribe方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: NewStartStopListener
func NewStartStopListener(messageBus yagnats.NATSConn, conf *config.Config) *StartStopListener {
listener := &StartStopListener{
messageBus: messageBus,
}
messageBus.Subscribe(conf.SenderNatsStartSubject, func(message *nats.Msg) {
startMessage, err := models.NewStartMessageFromJSON([]byte(message.Data))
if err != nil {
panic(err)
}
listener.mutex.Lock()
listener.starts = append(listener.starts, startMessage)
listener.mutex.Unlock()
})
messageBus.Subscribe(conf.SenderNatsStopSubject, func(message *nats.Msg) {
stopMessage, err := models.NewStopMessageFromJSON([]byte(message.Data))
if err != nil {
panic(err)
}
listener.mutex.Lock()
listener.stops = append(listener.stops, stopMessage)
listener.mutex.Unlock()
})
return listener
}
示例2: Register
func (c *VcapComponent) Register(mbusClient yagnats.NATSConn) error {
mbusClient.Subscribe("vcap.component.discover", func(msg *nats.Msg) {
if msg.Reply == "" {
log.Warnf("Received message with empty reply on subject %s", msg.Subject)
return
}
c.Uptime = c.StartTime.Elapsed()
b, e := json.Marshal(c)
if e != nil {
log.Warnf(e.Error())
return
}
mbusClient.Publish(msg.Reply, b)
})
b, e := json.Marshal(c)
if e != nil {
log.Error(e.Error())
return e
}
mbusClient.Publish("vcap.component.announce", b)
log.Infof("Component %s registered successfully", c.Type)
return nil
}
示例3: StartFakeRouter
func StartFakeRouter() {
var startMessage = func() []byte {
d := RouterStart{
MinimumRegisterIntervalInSeconds: 20,
}
value, _ := json.Marshal(d)
return value
}
natsMembers := make([]string, 1)
uri := url.URL{
Scheme: "nats",
User: url.UserPassword("", ""),
Host: "127.0.0.1:4222",
}
natsMembers = append(natsMembers, uri.String())
var natsClient yagnats.NATSConn
var err error
for i := 0; i < 10; i++ {
natsClient, err = yagnats.Connect(natsMembers)
if err == nil {
break
}
time.Sleep(time.Second)
}
Expect(err).ToNot(HaveOccurred())
natsClient.Subscribe("router.register", func(msg *nats.Msg) {
})
natsClient.Subscribe("router.greet", func(msg *nats.Msg) {
natsClient.Publish(msg.Reply, startMessage())
})
natsClient.Publish("router.start", startMessage())
}
示例4:
if natsRunner != nil {
natsRunner.Stop()
}
if router != nil {
router.Stop()
}
})
Context("NATS", func() {
Context("Router Greetings", func() {
It("RouterGreets", func() {
response := make(chan []byte)
mbusClient.Subscribe("router.greet.test.response", func(msg *nats.Msg) {
response <- msg.Data
})
mbusClient.PublishRequest("router.greet", "router.greet.test.response", []byte{})
var msg []byte
Eventually(response).Should(Receive(&msg))
var message vcap.RouterStart
err := json.Unmarshal(msg, &message)
Expect(err).NotTo(HaveOccurred())
Expect(message.MinimumRegisterIntervalInSeconds).To(Equal(5))
Expect(message.PruneThresholdInSeconds).To(Equal(120))
})
示例5:
component.Varz.Type = "TestType"
component.Logger = logger
err := component.Start()
Expect(err).ToNot(HaveOccurred())
err = component.Register(mbusClient)
Expect(err).ToNot(HaveOccurred())
_, err = mbusClient.Subscribe("subject", func(msg *nats.Msg) {
defer GinkgoRecover()
data := make(map[string]interface{})
err := json.Unmarshal(msg.Data, &data)
Expect(err).ToNot(HaveOccurred())
for _, key := range members {
_, ok := data[key]
Expect(ok).To(BeTrue())
}
close(done)
})
Expect(err).ToNot(HaveOccurred())
err = mbusClient.PublishRequest("vcap.component.discover", "subject", []byte(""))
Expect(err).ToNot(HaveOccurred())
Eventually(done).Should(BeClosed())
})
It("publishes to vcap.component.announce on start-up", func() {