This commit is contained in:
2026-04-24 18:26:01 +08:00
parent 9274ef4689
commit 7583eceede
4 changed files with 23 additions and 2 deletions

View File

@@ -1,11 +1,30 @@
package main
import (
"fmt"
"os"
"git.apinb.com/quant/collector/internal/impl"
"git.apinb.com/quant/collector/internal/logic"
"github.com/marcsauter/single"
)
func main() {
// 互斥体名称Global\CollectorSingleInstance 确保会话全局唯一
s := single.New("CollectorSingleInstance")
// 尝试加锁,如果已有实例运行会返回错误
if err := s.CheckLock(); err != nil {
if err == single.ErrAlreadyRunning {
fmt.Println("collector.exe 已有实例正在运行,本次启动退出。")
os.Exit(0)
}
fmt.Fprintf(os.Stderr, "检查单实例失败: %v\n", err)
os.Exit(1)
}
// 进程退出时自动释放锁
defer s.TryUnlock()
impl.NewImpl()
logic.Boot()
}

1
go.mod
View File

@@ -47,6 +47,7 @@ require (
github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/marcsauter/single v0.0.0-20201009143647-9f8d81240be2
golang.org/x/crypto v0.48.0 // indirect
golang.org/x/sync v0.20.0 // indirect
golang.org/x/text v0.36.0 // indirect

2
go.sum
View File

@@ -44,6 +44,8 @@ github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/marcsauter/single v0.0.0-20201009143647-9f8d81240be2 h1:TyUcIW0tpCQzV4Hpe9jF3p590EQFnMQV3sv6DhoxV6Q=
github.com/marcsauter/single v0.0.0-20201009143647-9f8d81240be2/go.mod h1:uUA07IN7rYmbr5YlZM5nDVLyoxiqqpprFlXBrjqI24A=
github.com/oklog/ulid/v2 v2.1.1 h1:suPZ4ARWLOJLegGFiZZ1dFAkqzhMjL3J1TzI+5wHz8s=
github.com/oklog/ulid/v2 v2.1.1/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ=
github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=

View File

@@ -1,3 +1,2 @@
#!/bin/bash
go build -o D:\work\quant\qmt\bin\collector.exe ./cmd/main.go
go build -ldflags="-s -w" -o D:\work\quant\qmt\bin\collector.exe ./cmd/main.go