baize.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package baize
  2. import (
  3. "git.sxidc.com/go-framework/baize/framework/core/api"
  4. "git.sxidc.com/go-framework/baize/framework/core/application"
  5. "git.sxidc.com/go-framework/baize/framework/core/infrastructure"
  6. "git.sxidc.com/go-framework/baize/framework/core/mqtt_api"
  7. )
  8. func NewApplication(conf application.Config) *application.App {
  9. // 创建API
  10. apiConfig := conf.ApiConfig
  11. apiInstance := api.New(api.WithUrlPrefix(apiConfig.UrlPrefix),
  12. api.WithPort(apiConfig.Port),
  13. api.WithLogSkipPaths(apiConfig.LogSkipPaths...),
  14. api.WithDumpPermissionItemsOption(&api.DumpPermissionItemsOption{
  15. Namespace: conf.DumpPermissionItem.Namespace,
  16. Gateway: conf.DumpPermissionItem.Gateway,
  17. SaveDir: conf.DumpPermissionItem.SaveDir,
  18. }))
  19. // 创建基础设施
  20. infrastructureConfig := new(infrastructure.Config)
  21. infrastructureConfig.DatabaseConfig = conf.InfrastructureConfig.Database
  22. infrastructureConfig.CacheConfig = conf.InfrastructureConfig.Cache
  23. infrastructureConfig.MessageQueueConfig = conf.MessageQueue
  24. infrastructureInstance := infrastructure.NewInfrastructure(*infrastructureConfig)
  25. app := application.New(apiInstance, infrastructureInstance)
  26. // 添加MqttApi
  27. if conf.MqttApiConfig != nil {
  28. mqttConfig := conf.MqttApiConfig
  29. mqttApi, err := mqtt_api.New(mqtt_api.WithTopicPrefix(mqttConfig.TopicPrefix),
  30. mqtt_api.WithLogSkipPaths(mqttConfig.LogSkipPaths...),
  31. mqtt_api.WithMqttOptions(&mqtt_api.MqttClientOptions{
  32. UserName: mqttConfig.MqttConfig.UserName,
  33. Password: mqttConfig.MqttConfig.Password,
  34. Address: mqttConfig.MqttConfig.Address,
  35. ClientID: mqttConfig.MqttConfig.ClientID,
  36. KeepAliveSec: mqttConfig.MqttConfig.KeepAliveSec,
  37. PingTimeoutSec: mqttConfig.MqttConfig.PingTimeoutSec,
  38. WriteTimeoutSec: mqttConfig.MqttConfig.WriteTimeoutSec,
  39. }))
  40. if err != nil {
  41. panic(err)
  42. }
  43. app.AddMqttApi(mqttApi)
  44. }
  45. return app
  46. }
  47. func DestroyApplication(app *application.App) {
  48. if app == nil {
  49. return
  50. }
  51. mqttApi := app.MqttApi()
  52. if mqttApi != nil {
  53. mqtt_api.Destroy(mqttApi)
  54. }
  55. infrastructure.DestroyInfrastructure(app.Infrastructure())
  56. }