Skip to content

Commit

Permalink
DBとmqttのコネクションを使い回すようにした
Browse files Browse the repository at this point in the history
  • Loading branch information
Azuki-bar committed Nov 21, 2023
1 parent 7f80f7e commit e7a1db4
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions backend/state-manager/cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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",
Expand Down

0 comments on commit e7a1db4

Please sign in to comment.