2

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

现在我想例如根据用户权限以不同的延迟流式传输数据。一些用户会看到以 0 延迟传输的数据,其他的 15 分钟,其他的 60 分钟。

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

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

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

4

1 回答 1

2

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

于 2012-08-16T12:57:29.147 回答