向非 Stomp/Websocket 消费者发送消息

Posted

技术标签:

【中文标题】向非 Stomp/Websocket 消费者发送消息【英文标题】:Sending messages to non-Stomp/Websocket consumers 【发布时间】:2014-02-28 22:35:46 【问题描述】:

我在我的应用程序中添加了 Stomp/Websocket 支持,这使得从服务器端向 Web 客户端发送通知变得容易。但是,由于这需要服务器端消息代理,我想知道是否可以让服务器端组件订阅从服务器发布的“主题”?

例如,我正在使用 SimpMessagingTemplate 向所有连接的 Stomp 客户端广播某些状态更新,但我也可以在服务器端订阅一个对象吗?

我现在的解决方案有点小题大做。服务器端不使用 SimpMessagingTemplate,而是使用 Project Reactor 生成通知类型广播,其中我的一个消费者是使用 SimpMessagingTemplate 中继消息的桥梁。这允许我的 Java 组件以及我的 Stomp 客户端获取更新,但对我来说这似乎有点矫枉过正。

【问题讨论】:

【参考方案1】:

您还可以在“brokerChannel”上注册 ChannelInterceptor。这是 SimplMessagingTemplate 向其发送消息的通道。这将允许您检测从应用程序流向消息代理的所有消息。

这对于许多情况来说可能已经足够了,但是在更分散的环境中可能会有多个应用程序实例,在这种情况下,您只能检测来自一个应用程序实例的消息。我们可以考虑提供一些机制来接收给定主题列表的代理消息。您只需配置主题列表并提供 MessageHandler。如果可以请create a ticket in JIRA。

【讨论】:

以上是关于向非 Stomp/Websocket 消费者发送消息的主要内容,如果未能解决你的问题,请参考以下文章

使用 Rabbitmq STOMP websocket 获取队列大小

GCM 和 WNS 禁止向非活动设备发送推送通知的策略

向非活动应用程序发送密钥

向非联系人发送谷歌群聊邀请

是否可以构建应用程序以向非应用程序用户发送通知

使用 firebase 云功能向非谷歌服务器发送 GET 请求