我阅读了有关Box事件的文档,并且对于如何正确处理无序框事件感到很遗憾。
根据文件,
事件偶尔会无法到达。例如,文件上传可能会在Folder-create事件之前显示。您可能需要缓冲事件并按逻辑顺序应用它们。
假设我从Box服务器返回两个ITEM_UPLOAD事件,用于上传file_1和file_2,上传file_2的ITEM_UPLOAD事件早于上传file_1的事件。
然而,在服务器端真正发生的事情是上传file_1比上传file_2稍早,并且时间差异很小,两个事件的“created_at”和“recorded_at”值都相同。这两个时间戳的分辨率是第二级。
在这一点上,我无法确切地说出哪一个首先发生,因为没有好的测量作为判断的参考。
你能不能给我一些信息来解决这个问题?
非常感谢。=============================================== ==========
ITEM_UPLOAD事件可能不是一个很好的例子。如果我更关心ITEM_RENAME活动该怎么办?假设我们的应用程序可以根据ITEM_RENAME事件重命名本地文件。不知何故,我在同一个文件上得到两个ITEM_RENAME事件,这些事件是乱序但具有相同的时间戳。如何在不缓存所有box对象的元数据(如sequence_id)的情况下知道我应该在两个事件中使用哪个名称值?
答案 0 :(得分:1)
我认为您需要提供有关您关心原因的其他详细信息。在您的示例中,如果上传了2个文件并在同一秒内到达,那么您为什么要关心它们在事件流中遇到的顺序?
当文件夹创建和文件上传事件无序到达时,更具挑战性的问题。如果您尝试使用事件在本地创建文件,并且文件中所说的文件夹_目录尚未在事件流中找到,那么您实际上并不知道将这个新文件放在何处。
当您有多个核心处理问题的不同部分时,微处理器设计中可能会出现类似的问题。您基本上必须能够将工作放在一边,直到稍后,并在您收集到足够的信息时进行处理。
通常有效的方法是在收到物品时处理物品,如果您没有足够的信息来处理物品,请将其放在一边并在下次闲置时检查。正如您所注意的那样,等待一两秒通常足够长,但物品可能会在几秒钟内失序。