【问题标题】:Data fanout Java library数据扇出 Java 库
【发布时间】:2013-10-15 17:34:07
【问题描述】:

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

设置如下:

  1. 您有许多消费者,每个消费者都订阅一组符号
  2. 您有许多生产者,每个生产者都为这些符号的不相交子集生成数据
  3. 消费者可能太慢了,无法消费他们对符号的所有更改 已订阅,因此您可能需要节流
  4. 消费者只对每个人的最新数据感兴趣 象征。如果消费者错过了符号的更新,并且更新了 数据可用,则只应发送最新的数据。

我经常遇到这个问题,每次都不得不重新发明轮子,例如实现一个队列,其中未使用的数据可以被更新的数据替换。我想知道是否有一些库可以有效地解决这个问题。

【问题讨论】:

  • 在这种情况下“订阅”是什么意思?是否应该在新符号到达时通知消费者,例如发布/订阅?每个符号子集是分配给不同的数据结构,还是全部混合?

标签: java concurrency


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多