package main
import (
"fmt"
"github.com/TarsCloud/TarsGo/tars"
"time"
)
func main() {
// 初始化配置,这里可以指定配置文件路径,也可以使用默认路径
// 如果需要指定配置文件路径,可以使用 tars.InitConfig("your_config_path.conf")
tars.InitPatch()
// 定义服务的信息,包括服务名、服务IP、端口等
obj := tars.GetServerConfig()
app := obj.App
server := obj.Server
basepath := obj.LogPath
srvobj := fmt.Sprintf("@tcp -h %s -p %s", obj.Adapters["Adapter"].Host, obj.Adapters["Adapter"].Port)
// 初始化日志
tars.InitLog(basepath, fmt.Sprintf("%s_%s", app, server))
// 打印服务信息
fmt.Printf("application: %s\n", app)
fmt.Printf("server: %s\n", server)
fmt.Printf("srvobj: %s\n", srvobj)
// 注册服务对象,这里的MyServer应该是实现了特定接口的服务对象
comm := tars.NewCommunicator()
obj := fmt.Sprintf("tars.tarsprotocol.TarsServantName=%s", srvobj)
app := new(MyServer)
comm.StringToProxy(obj, app)
// 启动服务
tars.AddServant<MyServer>(&MyServer{})
// 等待中断信号以优雅地关闭服务
fmt.Println("服务启动成功,等待中断信号...")
sc := make(chan os.Signal, 1)
signal.Notify(sc, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGUSR1, syscall.SIGUSR2)
<-sc
fmt.Println("收到中断信号")
// 优雅关闭服务
tars.Destroy()
}
这个示例代码展示了如何在Go语言中使用Tars-go框架初始化服务,包括配置、日志和服务对象的注册。它还展示了如何处理系统信号以优雅地关闭服务。这是学习使用Tars-go框架的一个基本入门示例。