2011-09-26 30 views
2

这个问题涉及到我无法找到常规解决方案的一个非常常见的问题。数据扇出Java库

下面是设置:

  1. 你有一个消费者,每一个订阅一组符号
  2. 你有一些生产商对这些符号的不相交的子集,每生产数据
  3. 消费者可能太慢以至于无法对其订购的符号进行所有更改,因此您可能需要进行节流
  4. 消费者只对每个 符号的最新数据感兴趣。如果消费者错过了符号的更新,并且有新的数据可用,那么只应发送最新的数据。

我遇到过这个问题很频繁,每次都不得不重新发明轮子,比如实现一个队列,其中未消耗的数据可以被更新的数据替换。我想知道是否有一些库以有效的方式实现了解决方案。

+0

在这种情况下'订阅'是什么意思?消费者在新符号到达时是否应该通知消费者?每个符号的子集是分配给不同的数据结构,还是都是混合的? – vemv

回答

0

听起来就像您正在发布市场数据馈送,您希望客户订阅特定的订阅源,除此之外,您不需要一个队列,因为您不需要处理每个数据消息。 使用UDP作为您的传输协议来发布市场数据,因为UDP在发送下一个数据包之前不需要确认其数据包已被接收。客户端应该缓存它们接收到的最后一个值,并且不需要维护一个队列。然后,您可以让观察者看到最后一个值,并在发生更改时将其发布到其他应用程序中。