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

时间:2013-03-13 19:36:00

标签: web-applications ejb soa publish-subscribe

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

我有一个Web应用程序(订阅者),其中包含正在侦听名为“news”的频道的服务。此频道由其他应用程序(发布者)列表填充。

所以,我想知道,如何通过实时通知已登录用户收到的新闻。 (比如twitter“new twitts”确实如此)。

我的想法:

在我的消费者服务中,我可以将收到的新闻存储在列表中,例如:

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

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

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

我是对的吗?或者有更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

我不会想要构建自定义解决方案,而是关注SignalR(https://github.com/SignalR/SignalR/wiki)。它为您处理许多管道和基础设施问题,是Web应用程序的理想选择。

答案 1 :(得分:0)

订阅者在尝试接收之前告诉发布者(频道)它想要接收消息。渠道不是一些被动流,它是一个活跃的过程。

使用Apache Camel

或者查看IP Multicast