A single shared queue worked with one WebSocket server, but competing consumers sent some messages to servers that did not own the target session. This case study explains the failure and the routing topology that fixed it.
A real-time service created a new RabbitMQ connection and channel for every publish. This case study explains why that lifecycle was wasteful, how I moved ownership to the application, and what to verify when resources are reused.
Every connected browser originally subscribed to the same STOMP topics. I changed the destination model so the application selected a target user before WebSocket delivery, then verified the behavior with subscription and packet-level tests.