我正在开发基于 spring webscokets 的聊天。我正在使用 rabbitmq 作为代理。当我向订阅用户发送消息时,一切正常。但是永远不会向离线用户发送消息。正如我理解的那样,当使用 rabbitmq 订阅时默认情况下是持久的,消息应该在用户订阅后从队列中推出。但它在我的代码中确实是这样工作的。
花了一整天的时间试图找到解决方案。但对我来说没有任何效果。我错过了什么?
WebSocketConfig
public void configureMessageBroker(MessageBrokerRegistry config) {
config.setApplicationDestinationPrefixes("/app");
config.setUserDestinationPrefix("/users");
config
.enableStompBrokerRelay("/topic","/queue")
.setAutoStartup(true)
.setRelayHost("localhost")
.setRelayPort(61613)
.setClientLogin("guest")
.setClientPasscode("guest");
}
@MessageMapping("/聊天")
messagingTemplate.convertAndSendToUser(recipient, "/queue/hello", message)