From e7a1db46b8eebb9d6f1ce9c2c23c4cfe0763441a Mon Sep 17 00:00:00 2001 From: Azuki-bar <42642269+Azuki-bar@users.noreply.github.com> Date: Fri, 17 Nov 2023 02:18:54 +0900 Subject: [PATCH] =?UTF-8?q?DB=E3=81=A8mqtt=E3=81=AE=E3=82=B3=E3=83=8D?= =?UTF-8?q?=E3=82=AF=E3=82=B7=E3=83=A7=E3=83=B3=E3=82=92=E4=BD=BF=E3=81=84?= =?UTF-8?q?=E5=9B=9E=E3=81=99=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/state-manager/cmd/main.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/backend/state-manager/cmd/main.go b/backend/state-manager/cmd/main.go index b26069e..13b5e3c 100644 --- a/backend/state-manager/cmd/main.go +++ b/backend/state-manager/cmd/main.go @@ -10,6 +10,7 @@ import ( "os/signal" "time" + mqtt "github.com/eclipse/paho.mqtt.golang" mqtt "github.com/eclipse/paho.mqtt.golang" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" @@ -18,8 +19,10 @@ import ( "github.com/ueckoken/plarail2023/backend/spec/state/v1/statev1connect" connectHandler "github.com/ueckoken/plarail2023/backend/state-manager/pkg/connect" "github.com/ueckoken/plarail2023/backend/state-manager/pkg/db" + "github.com/ueckoken/plarail2023/backend/state-manager/pkg/db" "github.com/ueckoken/plarail2023/backend/state-manager/pkg/mqtt_handler" "go.mongodb.org/mongo-driver/mongo/options" + "go.mongodb.org/mongo-driver/mongo/options" "golang.org/x/net/http2" "golang.org/x/net/http2/h2c" "golang.org/x/sync/errgroup" @@ -92,6 +95,7 @@ func main() { go func() { <-ctx.Done() slog.Default().Info("signal received or canceled") + slog.Default().Info("signal received or canceled") }() eg, ctx := errgroup.WithContext(ctx) @@ -120,11 +124,36 @@ func main() { return mqttHandler.Start(ctx) }) + DBOpts := options.Client().ApplyURI(os.Getenv("MONGODB_URI")) + DBHandler, err := db.Open(ctx, DBOpts) + if err != nil { + slog.Default().Error("database connection failed", slog.Any("err", err)) + cancel() + return + } + mqttClientOpts := mqtt.NewClientOptions() + mqttClientOpts.AddBroker(os.Getenv("MQTT_BROKER_ADDR")) + mqttClientOpts.Username = os.Getenv("MQTT_USERNAME") + mqttClientOpts.Password = os.Getenv("MQTT_PASSWORD") + mqttClientOpts.ClientID = os.Getenv("MQTT_CLIENT_ID") + + mqttHandler, err := mqtt_handler.NewHandler(mqttClientOpts, DBHandler) + if err != nil { + slog.Default().Error("mqtt create client or handler failed,", slog.Any("err", err)) + cancel() + return + } + eg.Go(func() error { + slog.Default().Info("start mqtt handler") + return mqttHandler.Start(ctx) + }) + r := chi.NewRouter() // r.Use(middleware.Recoverer) r.Use(middleware.Heartbeat("/debug/ping")) r.Mount("/debug", middleware.Profiler()) r.Handle(statev1connect.NewStateManagerServiceHandler(&connectHandler.StateManagerServer{DBHandler: DBHandler, MqttHandler: mqttHandler})) + r.Handle(statev1connect.NewStateManagerServiceHandler(&connectHandler.StateManagerServer{DBHandler: DBHandler, MqttHandler: mqttHandler})) r.Use(httplog.RequestLogger( httplog.NewLogger( "http_server",