小编Ali*_* Ja的帖子

Spring data Redis Pub/Sub 和 Websockets:接收消息

我正在为我的 Web 应用程序使用 Spring Boot 和 Redis 服务器。当客户端发送帖子时,一条消息将通过“聊天”通道发送到 Redis。这效果很好。为了接收消息,我创建了 RedisMessageSubscriber 类,它从 Redis 接收消息。所有客户端都订阅了 STOMP Websocket 客户端“主题/测试”。

我的问题是:如何将 RedisMessageSubscriber 中收到的消息重定向到客户端 Websocket 通道?

我下面的第一次尝试没有成功,因为控制器在从 Redis 接收消息之前将消息从队列发送到客户端。

DwittrController.class(消息在此处发送给客户端):

@MessageMapping("/newPost")
@SendTo("/topic/test")
public Message message(ClientMessage message) {
    log.debug("a message from client was recieved");
    userRepository.sendMessage(message.getMessage());
    String redisMessage = RedisMessageSubscriber.messageList.get(0);
    RedisMessageSubscriber.messageList.remove(0);
    return new Message("New post from " + redisMessage + " is available.");
}
Run Code Online (Sandbox Code Playgroud)

UserRepositoryImpl.类:

public void sendMessage(String message) {
    stringRedisTemplate.convertAndSend("chat", message);
}
Run Code Online (Sandbox Code Playgroud)

RedisMessageSubscriber.class:

@Component
public class RedisMessageSubscriber implements MessageListener {

    private final Logger log = LoggerFactory.getLogger(this.getClass()); …
Run Code Online (Sandbox Code Playgroud)

java spring websocket redis

5
推荐指数
1
解决办法
4649
查看次数

标签 统计

java ×1

redis ×1

spring ×1

websocket ×1