我有一个应用程序,它将不断从外部系统收到股票价格。
价格将由stockID键入。
随着价格的上涨,它们将被送到阻塞队列。
将有一个线程池,它将从此队列中使用和处理,并将价格放入缓存(库存ID和价格的哈希映射)。
让我困扰的是,如果队列中存在重复股票ID的价格,当线程处理这些股票时,可能会在较新的价格之后将较旧的价格写入缓存。
无论如何都可以绕过这种情况吗?
如何确保最后处理最新消息?
答案 0 :(得分:1)
您可以使用自动递增的序列号标记每个传入的价格更新。写入缓存时,您可以删除序列号低于该库存缓存中已有序列号的每个更新。
或者,您可以跨线程对库存Universe进行分区,这意味着给定库存的更新始终由同一个线程处理。