- 引入 net/http 包 - 启动一个 goroutine 运行 HTTP 服务器监听 6060 端口 - 支持性能分析和调试接口的访问 - 便于远程监控和采集服务指标数据
73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"gateway/internal/cache"
|
|
"gateway/internal/config"
|
|
_ "gateway/internal/models"
|
|
"gateway/internal/otelTrace"
|
|
"gateway/internal/proxy"
|
|
_ "gateway/internal/routers"
|
|
"gateway/internal/schema/query"
|
|
"gateway/internal/service"
|
|
_ "gateway/internal/service/message"
|
|
"gateway/internal/service/notify"
|
|
"gateway/internal/service/supplier/third_party"
|
|
"gateway/internal/service/supplier/third_party/queue"
|
|
"gateway/internal/utils"
|
|
"github.com/beego/beego/v2/server/web"
|
|
_ "github.com/go-sql-driver/mysql"
|
|
"log"
|
|
"net/http"
|
|
_ "net/http/pprof"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
config.GetMQAddress()
|
|
// 初始化代理池
|
|
if err := proxy.InitProxyPool(); err != nil {
|
|
log.Printf("初始化代理池失败: %v", err)
|
|
return
|
|
}
|
|
go func() {
|
|
log.Println(http.ListenAndServe(":6060", nil))
|
|
}()
|
|
// 初始化 OpenTelemetry
|
|
cleanup1, cleanup2, cleanup3 := otelTrace.InitTracer()
|
|
defer func() {
|
|
// 使用带超时的 context 来关闭导出器
|
|
ctx := context.Background()
|
|
shutdownCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
|
|
defer cancel()
|
|
|
|
if cleanup1 != nil {
|
|
_ = cleanup1(shutdownCtx)
|
|
}
|
|
if cleanup2 != nil {
|
|
_ = cleanup2(shutdownCtx)
|
|
}
|
|
if cleanup3 != nil {
|
|
_ = cleanup3(shutdownCtx)
|
|
}
|
|
}()
|
|
|
|
// 使用 context.Background() 作为基础 context
|
|
ctx := context.Background()
|
|
|
|
go notify.CreateOrderNotifyConsumer(ctx)
|
|
go query.CreateSupplierOrderQueryCuConsumer(ctx)
|
|
// go query.CreatePayForQueryConsumer(ctx)
|
|
go service.OrderSettleInit(ctx)
|
|
|
|
cache.Start()
|
|
utils.StartProxyPool()
|
|
//tasks.Start(ctx)
|
|
|
|
// 初始化队列系统
|
|
queue.Init(ctx)
|
|
third_party.StartOrderPool(ctx)
|
|
|
|
web.Run()
|
|
}
|