package main import ( "assets/consts/public" assetController "assets/controller/asset" enumController "assets/controller/enum" procurementController "assets/controller/procurement" stockController "assets/controller/stock" syncController "assets/controller/sync" stockService "assets/service/stock" "context" "os" "os/signal" "syscall" _ "gitea.com/red-future/common/config" "gitea.com/red-future/common/http" "gitea.com/red-future/common/jaeger" _ "gitea.com/red-future/common/swagger" gmq "github.com/bjang03/gmq/core/gmq" "github.com/bjang03/gmq/mq" "github.com/bjang03/gmq/types" _ "github.com/gogf/gf/contrib/drivers/pgsql/v2" "github.com/gogf/gf/v2/frame/g" ) func main() { ctx := context.Background() defer jaeger.ShutDown(ctx) // 注册路由 //http.Httpserver.BindMiddleware("/*", http.SkipMiddleware(middleware.ModuleTenantCheck, "/*")) http.RouteRegister([]interface{}{ assetController.Asset, assetController.AssetSku, assetController.Category, assetController.PrivateSku, assetController.PrivateCategory, enumController.Enum, stockController.StockManage, stockController.StockDetails, stockController.StockBatch, stockController.PrivateStock, stockController.InventoryCount, stockController.InventoryCountDetail, stockController.InventoryWarning, stockController.InventoryWarningHistory, stockController.Location, stockController.Warehouse, stockController.Zone, stockController.UnitConversion, procurementController.Supplier, procurementController.PurchaseOrder, procurementController.PurchaseOrderItem, syncController.Sync, }) // 注册RPC服务 //if err := message.AutoRegisterServices(ctx, map[string]interface{}{ // "assetSkuService": assetService.AssetSku, //}); err != nil { // g.Log().Warningf(ctx, "RPC 服务注册失败,服务将无法通过 NATS 调用: %v", err) //} else { // g.Log().Info(ctx, "RPC 服务注册成功") //} // 注册消息队列消费者 //msgPlugin, err := message.GetMsgPlugin(context.TODO(), message.MessageNATS) //if err != nil { // g.Log().Warningf(ctx, "消息队列插件获取失败,服务将无法消费消息: %v", err) //} else { // msgPlugin.Subscribe(ctx, &message.NatsSubscribeMsgConfig{ // QueueName: public.StockDetailGroupName, // Durable: true, // DelayTime: 10, // ConsumerName: public.StockDetailConsumerName, // AutoAck: public.StockDetailAutoAck, // PrefetchCount: public.StockDetailPrefetchCount, // HandleFunc: stockService.StockManage.AddStock, // }) //} //plugin, err := message.GetMsgPlugin(message.MessageRedis) //if err != nil { // g.Log().Warningf(ctx, "消息队列插件获取失败,服务将无法消费消息: %v", err) //} else { // plugin.Subscribe(ctx, &message.RedisSubscribeMsgConfig{ // QueueName: public.StockDetailQueueName, // ConsumerName: public.StockDetailConsumerName, // PrefetchCount: public.StockDetailPrefetchCount, // AutoAck: public.StockDetailAutoAck, // HandleFunc: stockService.StockManage.AddStock, // }) //} gmq.Init("config.yml") err := gmq.GetGmq("primary").GmqSubscribe(ctx, &mq.RedisSubMessage{ SubMessage: types.SubMessage{ Topic: public.StockDetailQueueName, ConsumerName: public.StockDetailConsumerName, AutoAck: public.StockDetailAutoAck, FetchCount: public.StockDetailPrefetchCount, HandleFunc: stockService.StockManage.AddStock, }, }) if err != nil { return } // 监听退出信号 quit := make(chan os.Signal, 1) signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) <-quit g.Log().Info(ctx, "收到退出信号,正在关闭服务...") }