如何从Scala中的实时数据源流式传输延迟数据

时间:2012-08-16 12:24:58

标签: database scala streaming ehcache

我必须设计一种在Scala / Java中传输数据的方法,与我收到数据的时刻相比有一定的延迟。我有一个原始数据源的API(实时数据),它允许我使用类似查询的格式查询它,因为它是一个数据库,并且当事情发生时也可以获得通知,就像使用EHCACHE一样。

现在我希望根据用户权限流式传输具有不同延迟的数据。一些用户将看到流延0延迟的数据,其他用户有15分钟,其他用户有60分钟。

因此,我需要一个由多个低级缓存组成的顶级缓存(0延迟,15分钟延迟,60分钟延迟)。

  1. 在第一时间,我希望缓存只包含相同类型的元素。这会使事情更简单,因为我可以决定元素的唯一ID,我只需要根据所需的延迟将请求路由到正确的缓存

  2. 在第二时刻,我希望我的延迟缓存可以查询。是否有一部分来自EHCache的代码我可以回收,例如?

1 个答案:

答案 0 :(得分:2)

一个想法:将流数据转换为实现Delayed的某种事件对象。一旦发生这样的实时事件,请将其放入DelayedQueue。然后,另一个线程可以在一个周期中调用take()并检索并处理延迟事件。