发布/订阅如何通知登录订阅者应用程序的用户



我在理论上知道pub/sub模式,现在我想在实践中实现它。

我有一个web应用程序(订阅者),其中包含一个服务,该服务正在收听一个名为"新闻"的频道。此通道由其他应用程序(发布者)的列表填充。

所以,我想知道,如何通知登录用户实时收到的新闻。(就像twitter的"new twitts"一样)。

我的想法:

在我的消费者服务中,我可以将收到的新闻存储在List中,类似于:

@Consumer("myChannel")
public void recNews(New new) {
    allNews.add(new);
}

然后,在我的应用程序中配置一个计时器来读取和重置列表,并将当前状态(lastNews)发送到我的web控制器:

@Timer("1 per minute")
public void lastNews() {
    lastNews.add(allNews);
    allNews = new ArrayList();
}

我说的对吗?还是有更好的解决方案?

与其构建自定义解决方案,不如看看SignalR (https://github.com/SignalR/SignalR/wiki)。它为您处理了许多管道和基础设施问题,是web应用程序的理想选择。

订阅者在尝试接收消息之前告诉发布者(通道)它想要接收消息。通道不是某种被动的流动,它是一个主动的过程。

使用Apache Camel

相关内容

最新更新