From a85b519051c3593f34b3a387e1e4b44ae51cd487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Untersch=C3=BCtz?= Date: Sun, 4 Jan 2026 16:32:47 +0100 Subject: [PATCH] Enable NATS Queue Groups for `game.join`, `game.start`, and `game.input` handlers to support load balancing. --- cmd/server/main.go | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/cmd/server/main.go b/cmd/server/main.go index 1df8530..a85362c 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -100,8 +100,8 @@ func main() { } log.Printf("βœ… Verbunden mit NATS: %s", natsURL) - // 3. HANDLER: GAME JOIN - sub, err := ec.Subscribe("game.join", func(req *game.JoinRequest) { + // 3. HANDLER: GAME JOIN (mit Queue Group fΓΌr Load Balancing) + sub, err := ec.QueueSubscribe("game.join", "game-servers", func(req *game.JoinRequest) { log.Printf("πŸ“₯ JOIN empfangen: Name=%s, RoomID=%s", req.Name, req.RoomID) playerID := req.Name @@ -139,15 +139,10 @@ func main() { if err != nil { log.Fatal("❌ Fehler beim Subscribe auf game.join:", err) } - log.Printf("πŸ‘‚ Lausche auf 'game.join'... (Sub Valid: %v)", sub.IsValid()) + log.Printf("πŸ‘‚ Lausche auf 'game.join' in Queue Group 'game-servers'... (Sub Valid: %v)", sub.IsValid()) - // TEST: Auch mit Raw-NATS lauschen - nc.Subscribe("game.join", func(m *nats.Msg) { - log.Printf("πŸ” RAW NATS: Nachricht empfangen auf game.join: %s", string(m.Data)) - }) - - // 4. HANDLER: GAME START - _, _ = ec.Subscribe("game.start", func(req *game.StartRequest) { + // 4. HANDLER: GAME START (mit Queue Group) + _, _ = ec.QueueSubscribe("game.start", "game-servers", func(req *game.StartRequest) { log.Printf("▢️ START empfangen: RoomID=%s", req.RoomID) mu.RLock() @@ -164,8 +159,8 @@ func main() { } }) - // 5. HANDLER: INPUT - _, _ = ec.Subscribe("game.input", func(input *game.ClientInput) { + // 5. HANDLER: INPUT (mit Queue Group) + _, _ = ec.QueueSubscribe("game.input", "game-servers", func(input *game.ClientInput) { mu.RLock() room, ok := playerSessions[input.PlayerID] mu.RUnlock()