首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试NATS-以最小的努力在Kubernetes中进行流

测试NATS-以最小的努力在Kubernetes中进行流
EN

Stack Overflow用户
提问于 2021-05-07 15:48:00
回答 1查看 1K关注 0票数 0

我想测试一个非常基本的NATS应用程序-- Kubernetes上的流。要做到这一点,我听从了官方NATS-docs的命令

基本上可以归结为跑步

代码语言:javascript
复制
kubectl apply -f https://raw.githubusercontent.com/nats-io/k8s/master/nats-server/single-server-nats.yml
kubectl apply -f https://raw.githubusercontent.com/nats-io/k8s/master/nats-streaming-server/single-server-stan.yml

在一个能够访问集群的终端中(在我的例子中,它是一个仁爱-cluster )。

我使用stan.go作为NATS流客户端.下面是我试图连接到NATS流服务器的代码:

代码语言:javascript
复制
package main

import stan "github.com/nats-io/stan.go"

func main() {
    sc, err := stan.Connect("stan", "test-client")

    if err != nil {
        panic(err)
    }
    if err := sc.Publish("test-subject", []byte("This is a test-message!")); err != nil {
        panic(err)
    }
}

这就是我所犯的错误:

代码语言:javascript
复制
panic: nats: no servers available for connection

goroutine 1 [running]:
main.main()
    /Users/thilt/tmp/main.go:9 +0x15d
exit status 2

所以我想是用了另一个名字来形容集群之类的。如果我使用上面docs.nats-链接中提供的nats-box示例,它也不起作用!我哪里出问题了?

如果需要的话,我很乐意提供更多的信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-10 08:30:30

有一个stan.go文档中的一个很好的例子

代码语言:javascript
复制
// Connect to NATS
nc, err := nats.Connect(URL, opts...)
if err != nil {
    log.Fatal(err)
}
defer nc.Close()

sc, err := stan.Connect(clusterID, clientID, stan.NatsConn(nc))
if err != nil {
    log.Fatalf("Can't connect: %v.\nMake sure a NATS Streaming Server is running at: %s", err, URL)
}
defer sc.Close()

发生错误是因为默认情况下stan连接到本地主机地址(源代码):

代码语言:javascript
复制
// DefaultNatsURL is the default URL the client connects to
DefaultNatsURL = "nats://127.0.0.1:4222"

注意上面的例子覆盖了这个默认连接。

Stan源代码很短,易于分析。我真的建议你试着分析它,找出它的作用。

现在,让我们把它们放在一起;下面是一个有用的示例:

代码语言:javascript
复制
package main

import (
    nats "github.com/nats-io/nats.go"
    stan "github.com/nats-io/stan.go"
)

func main() {
    // Create a NATS connection 
    nc, err := nats.Connect("nats://nats:4222")
    if err != nil {
        panic(err)
    }

    // Then pass it to the stan.Connect() call.
    sc, err := stan.Connect("stan", "me", stan.NatsConn(nc))
    if err != nil {
        panic(err)
    }
    if err := sc.Publish("test-subject", []byte("This is a test-message!")); err != nil {
        panic(err)
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67438050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档