【问题标题】:spring websockets - is it possible to send a message to an offline user? [duplicate]spring websockets - 是否可以向离线用户发送消息? [复制]
【发布时间】:2014-07-14 05:56:20
【问题描述】:

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

类似的东西:

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

这个功能可能吗?

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

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

谢谢!

【问题讨论】:

  • 如何将消息存储给不在线的用户在数据库中,当用户上线时查找数据库中是否有新消息。
  • 当然可以。其实很简单。如果您使用真正的消息代理 - 如 ActiveMQ 或 RabbitMQ - 这是开箱即用的。
  • Boris - 我用 activemq 创建了一个简单的应用程序,每当我向离线用户发送消息时 - 消息都会丢失。你能用链接或其他东西引用我吗?

标签: java spring websocket spring-websocket


【解决方案1】:

following

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

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

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

【讨论】:

  • 感谢您的回答,我的目的是为指定给特定用户的所有消息设置过期时间(1-2 天),因此系统资源的耗尽对我来说不是问题。
  • 这只是一个例子,但您可以使用相同的策略来解决您的问题
猜你喜欢
  • 2023-03-28
  • 2018-12-16
  • 2014-02-21
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 2011-06-25
相关资源
最近更新 更多