Я использую платформу Spring Stomp WebSocket для отправки сообщений подписки клиентам. Мы используем ActiveMQ в качестве брокера сообщений и используем javascript-клиент Stomp. Spring 4.1.5 и в этой архитектуре сообщения отправляются с использованием
simplemessagingTemplate.convertAndSendToUser(user, "/queue/msg", serverMsg, map);
Чтобы гарантировать, что только правильный пользователь получит свое сообщение, я также использую QueueSubscriptionInterceptor, который реализует ChannelInterceptor. Сообщения доставляются по назначению правильно. Сообщения принимаются с использованием JS-клиента следующим образом.
stompClient.subscribe('/user/guest/queue/msg', function(greeting){
x = JSON.parse(greeting.body);
...
}
Все идет нормально. Однако при наличии нескольких пользовательских сеансов сообщение получает только один сеанс. Например, если два «гостевых» пользователя вошли в систему, я бы хотел, чтобы все два «гостевых» пользователя получили сообщение. Кажется, этого не происходит. Заглядывая в логи, вижу, что сообщение вроде как отправлено ..
2015-04-11 14:39:40 DEBUG StompBrokerRelayMessageHandler:738 - Forwarding SEND /queue/msg-user1 session=_system_ application/json;charset=UTF-8 payload={"my message to you...)
2015-04-11 14:39:40 DEBUG StompBrokerRelayMessageHandler:738 - Forwarding SEND /queue/msg-user0 session=_system_ application/json;charset=UTF-8 payload={"my message to you...)
Я вижу, что сообщение получает только один клиент, а другой нет. Читая документацию Spring, я понимаю, что это поведение по умолчанию. Может кто подскажет, что я делаю не так.
Спасибо.