java - spring websockets - 是否可以向离线用户发送消息?

标签 java spring websocket spring-websocket

<分区>

我的数据库中有很多用户。 我希望能够通过 websockets 向他们发送消息,即使他们没有连接。 每当我向离线用户发送消息时 - 我希望在他连接之前为他排队消息,然后将所有消息推送给他。

类似的东西:

template.convertAndSendToUser(
                              "user123",
                               queue,
                               hello);

这个功能是否可行?

请记住,我使用 activeMQ 作为我的消息总线。 (消息代理)。我上面描述的功能是 jms\message queues 中的标准

编辑:我用 activemq 创建了一个应用程序 - 当我向离线用户发送消息时,消息没有排队,它丢失了。有什么想法吗?

谢谢!

最佳答案

查看following :

系统通常不需要长时间离线的持久主题订阅者。这样做的原因是代理需要为所述订阅者保留发送到这些主题的所有消息。并且这种消息堆积会随着时间的推移耗尽经纪人商店的限制,并导致系统整体变慢。

您始终可以使用 JConsole 或 Web Console 等管理工具手动取消订阅不活动的持久订阅者,但显然还有更多工作可以帮助管理使用持久订阅者的系统(可能来自他们无法控制的环境) 从 5.6 版开始,我们在这方面引入了一些改进。

这只是一个示例,但您可以使用相同的策略来解决您的问题。

关于java - spring websockets - 是否可以向离线用户发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23853524/

相关文章:

java - 使用 JDBC 连接到数据库服务器的简单 Java 程序的执行时间随处变化

c# - c#、java中的null是什么?

java - 在MVC模式中,在View部分使用构建器模式是否合适

database - 使用 Hibernate 和 Spring 根据用户登录连接到租户数据库

java - Elasticsearch无节点可用异常

swift - 使用 Vapor 3 保持套接字事件

javascript - 无法使用 Vue 插件连接到 WebSocket

java - 一代的大小会影响垃圾收集中其他一代的吞吐量

java - 自定义注释初始化方法不起作用

node.js - 使用端口 80 的 AWS Elastic Beanstalk 上的 WebSocket 问题