【发布时间】:2018-10-18 18:55:46
【问题描述】:
我正在使用 Spring stomp websocket 框架向客户端发送订阅消息。我们使用 ActiveMQ 作为消息代理 并且正在使用 stomp javascript 客户端。 Spring 4.1.5 和在这个架构中,消息是使用
发送的simplemessagingTemplate.convertAndSendToUser(user, "/queue/msg", serverMsg, map);
为了确保只有正确的用户才能收到他们的消息,我还使用了实现 ChannelInterceptor 的 QueueSubscriptionInterceptor。 消息正确地传递到目的地。像这样使用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 文档,我知道这是默认行为。 谁能告诉我我做错了什么。
谢谢。
【问题讨论】:
标签: spring activemq stomp spring-websocket