Pub/Sub如何通知用户登录订户应用程序?

问题描述:

我知道理论上的pub/sub模式,现在我想在实践中实现它。Pub/Sub如何通知用户登录订户应用程序?

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

所以,我想知道,如何通知记录的用户实时收到的消息。 (像Twitter“新twitts”)。

我想什么:

在我的消费服务

我可以存储的消息在列表收到类似:

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

然后,配置在我的应用程序定时器来读取和重置列表和发送当前状态(lastNews)到我的网络控制器:

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

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

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

订阅者在尝试接收消息之前告诉发布者(频道)它希望接收消息。海峡不是被动的流动,它是一个活跃的过程。使用Apache Camel。或者看着IP Multicast