数据扇出Java库

时间:2011-09-26 17:38:57

标签: java concurrency

这个问题涉及一个我无法找到传统解决方案的常见问题。

以下是设置:

  1. 您有许多消费者,每个消费者订阅一组符号
  2. 您有许多生产者,每个生产者都为这些符号的不相交子集生成数据
  3. 消费者可能太慢而无法对符号进行所有更改 订阅,所以你可能需要节流
  4. 消费者只对最新的每个数据感兴趣 符号。如果消费者错过了符号更新和更新 数据可用,然后只能发送最新的数据。
  5. 我经常遇到这个问题,并且每次都必须重新发明轮子,例如实现一个队列,其中未使用的数据可以被更新的数据替换。我想知道是否有一些库以有效的方式实现了解决方案。

1 个答案:

答案 0 :(得分:0)

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