Tomcat uses AtomicLong for generating id for web socket sessions
then the id transferred to Spring WebSocket package
In case of user destination subscriptions
will pass message to user queue on RabbitMQ with name "events-user0".
Sending message to "/app/thread"
will trigger controller with @MessageMapping. But in case when there is the second node and other client (different login) will also subscribe to "/user/queue/events" and its session id is the same as on the first node (because names just simple sequences ) The second user will receive the message instead of the first user, because first node created RibbitMQ queue with name "events-user0" and the second node subscribed to the queue.
The generated unique ids for the WebSocket session or different names for Broker queues can handle this issue.