Go 把你的发球带进高尔夫球场

Go 把你的发球带进高尔夫球场,go,Go,我很难估计在goroutine中运行http.ListenAndServe是否会有副作用 使prometheus能够从运行kafka客户端(在无限for循环中运行kafka使用者)的服务的/metrics端点收集统计数据 启动监视端点并运行无限循环的最佳实践是什么?最佳实践是检查和处理错误。忽略http.ListenAndServe中的错误 如果从http.listendServe返回对应用程序来说是致命的,那么使用以下代码或其上的一些变体来处理错误 go func() { log.

我很难估计在goroutine中运行http.ListenAndServe是否会有副作用

使prometheus能够从运行kafka客户端(在无限for循环中运行kafka使用者)的服务的/metrics端点收集统计数据


启动监视端点并运行无限循环的最佳实践是什么?

最佳实践是检查和处理错误。忽略http.ListenAndServe中的错误

如果从http.listendServe返回对应用程序来说是致命的,那么使用以下代码或其上的一些变体来处理错误

go func() { 
     log.Fatal(http.ListenAndServe(*addr, nil)) 
}()

对log.Fatal的调用会记录错误并退出应用程序。

同时运行http.listendandserve到其他应用程序没有问题。您可以做两件事:将ListendService放在自己的goroutine或Kafka消费者上。没关系。但不要像您这样做,因为这会吞噬ListendServe返回的任何错误。您能解释一下为什么这个问题对您如此不利吗?并非所有错误都是致命的-
http.ErrServerClosed
。请参见示例代码@colminator http.ListenAndServe的任何返回对OP的应用程序都是致命的。是。我的评论仅仅表明http服务器可以以可控的方式旋转和关闭。
go func() { 
     log.Fatal(http.ListenAndServe(*addr, nil)) 
}()