Go 以最小的工作量在Kubernetes中测试NATS流
我想在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
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)
}
}