以下是一个完整的示例代码,展示了如何使用Golang进行Consul服务注册和发现:
package main
import (
"fmt"
"log"
"net/http"
"github.com/hashicorp/consul/api"
)
func main() {
// 创建 Consul 客户端
config := api.DefaultConfig()
client, err := api.NewClient(config)
if err != nil {
log.Fatal(err)
}
// 注册服务
reg := &api.AgentServiceRegistration{
ID: "my-service-1",
Name: "My Service",
Port: 8080,
}
err = client.Agent().ServiceRegister(reg)
if err != nil {
log.Fatal(err)
}
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello from My Service")
})
go func() {
log.Fatal(http.ListenAndServe(":8080", nil))
}()
fmt.Println("My Service is running on port 8080")
// 发现服务
services, _, err := client.Catalog().Service("My Service", "", nil)
if err != nil {
log.Fatal(err)
}
for _, service := range services {
fmt.Printf("Found service: %s, address: %s:%d\n", service.ServiceName, service.ServiceAddress, service.ServicePort)
// 可以根据需要处理找到的服务信息
}
select {}
}
请确保您已经安装了Consul并启动了Consul服务器。运行上述代码后,您将能够在本地的8080端口上看到输出“Hello from My Service”,并且可以从Consul中发现该服务的信息。
内容由零声教学AI助手提供,问题来源于学员提问