【发布时间】:2016-01-06 14:26:56
【问题描述】:
我有一个 PUB 服务器。它如何知道订阅了哪些过滤器,以便服务器知道它必须创建哪些数据?
一旦没有 SUB 客户端,服务器就不需要创建数据有兴趣。
假设可能的过滤器集很大(或 无限 ),但在任何给定时间订阅者都只是订阅了其中的几个。
示例:假设 SUB 客户仅订阅了纽约和巴黎少数区号的天气源数据。那么 PUB 服务器不应该为世界上每个其他城市的所有其他区号创建天气数据,而只是再次将其丢弃。
您如何找出 PUB 服务器中所有订阅的过滤器?
如果没有简单的方法,我该如何以另一种方式解决这个问题?
【问题讨论】:
-
你必须创建一个
XSUB / XPUB代理/设备,它也在监听消息。您将收到以0x00或0x01开头的消息,也就是说这些消息会告诉您订阅什么以及取消订阅什么。您使用哪种编程语言?另请参阅Espresso example。 -
谢谢。我正在使用 C++。再想一想,我想我会使用第二个 REQ/REP 频道来处理有关订阅和心跳的元数据。这样,如果客户端在没有取消订阅的情况下死亡,服务器就会知道它。
-
是的,另一个“控制平面”是一种方法。还可以观察到,最初的 PUB/SUB 在 SUB 端进行过滤,这会在您的用例中增加大量流量。
标签: zeromq