baize.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. // 创建基础设施
  15. infrastructureConfig := new(infrastructure.Config)
  16. infrastructureConfig.DatabaseConfig = conf.InfrastructureConfig.Database
  17. infrastructureConfig.CacheConfig = conf.InfrastructureConfig.Cache
  18. infrastructureConfig.MessageQueueConfig = conf.InfrastructureConfig.MessageQueue
  19. infrastructureInstance := infrastructure.NewInfrastructure(*infrastructureConfig)
  20. app := application.New(apiInstance, infrastructureInstance)
  21. // 添加MqttApi
  22. if conf.MqttApiConfig != nil {
  23. mqttConfig := conf.MqttApiConfig
  24. mqttApi, err := mqtt_api.New(mqtt_api.WithTopicPrefix(mqttConfig.TopicPrefix),
  25. mqtt_api.WithLogSkipPaths(mqttConfig.LogSkipPaths...),
  26. mqtt_api.WithMqttOptions(&mqtt_api.MqttClientOptions{
  27. UserName: mqttConfig.MqttConfig.UserName,
  28. Password: mqttConfig.MqttConfig.Password,
  29. Address: mqttConfig.MqttConfig.Address,
  30. ClientID: mqttConfig.MqttConfig.ClientID,
  31. KeepAliveSec: mqttConfig.MqttConfig.KeepAliveSec,
  32. PingTimeoutSec: mqttConfig.MqttConfig.PingTimeoutSec,
  33. WriteTimeoutSec: mqttConfig.MqttConfig.WriteTimeoutSec,
  34. }))
  35. if err != nil {
  36. panic(err)
  37. }
  38. app.AddMqttApi(mqttApi)
  39. }
  40. return app
  41. }
  42. func DestroyApplication(app *application.App) {
  43. if app == nil {
  44. return
  45. }
  46. mqttApi := app.MqttApi()
  47. if mqttApi != nil {
  48. mqtt_api.Destroy(mqttApi)
  49. }
  50. infrastructure.DestroyInfrastructure(app.Infrastructure())
  51. }