Go 以最小的工作量在Kubernetes中测试NATS流

Go 以最小的工作量在Kubernetes中测试NATS流,go,kubernetes,nats.io,kubernetes-custom-resources,nats-streaming-server,Go,Kubernetes,Nats.io,Kubernetes Custom Resources,Nats Streaming Server,我想在Kubernetes上测试一个非常基本的NATS流应用程序。为此 基本上可以归结为跑步 kubectl应用-fhttps://raw.githubusercontent.com/nats-io/k8s/master/nats-server/single-server-nats.yml kubectl应用-fhttps://raw.githubusercontent.com/nats-io/k8s/master/nats-streaming-server/single-server-stan

我想在Kubernetes上测试一个非常基本的NATS流应用程序。为此

基本上可以归结为跑步

kubectl应用-fhttps://raw.githubusercontent.com/nats-io/k8s/master/nats-server/single-server-nats.yml
kubectl应用-fhttps://raw.githubusercontent.com/nats-io/k8s/master/nats-streaming-server/single-server-stan.yml
在可以访问集群的终端中(在我的例子中是一个集群)

我使用NATS流式客户端。以下是我尝试连接到NATS流服务器的代码:

主程序包
导入stan“github.com/nats io/stan.go”
func main(){
sc,err:=stan.Connect(“stan”,“测试客户端”)
如果错误!=零{
恐慌(错误)
}
如果err:=sc.Publish(“测试主题”,“这是测试消息!”);err!=nil{
恐慌(错误)
}
}
这就是我得到的错误:

panic: nats: no servers available for connection

goroutine 1 [running]:
main.main()
    /Users/thilt/tmp/main.go:9 +0x15d
exit status 2
所以我认为集群或其他东西使用了另一个名称。如果我使用上面docs.nats-link中的
nats-box
提供的示例,它也不起作用!我哪里出了问题

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

有:

发生错误的原因是默认情况下stan连接到localhost address():

请注意,上面提供的示例将覆盖此默认连接

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


现在,让我们把这一切放在一起;以下是一个工作示例:

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)
    }
}
// DefaultNatsURL is the default URL the client connects to
DefaultNatsURL = "nats://127.0.0.1:4222"
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)
    }
}