仅根据具有相同消息id的多条消息在azure service bus队列中拾取最新消息

仅根据具有相同消息id的多条消息在azure service bus队列中拾取最新消息,azure,azureservicebus,Azure,Azureservicebus,我们正在处理一个场景,其中用户请求生成某些文档(通过web应用程序)并将这些请求(消息)发送到azure service bus队列,该队列在处理后将生成一个文档。用户可以使用更新的数据(这是消息的一部分)对同一文档发出多个请求。我们需要的是,如果同一文档中有来自用户的最新消息,我们将该消息用于生成文档,而其他旧消息可以忽略。可以使用唯一标识符(可能是消息id)来标识用户请求。 azure服务总线队列中当前是否有实现此功能的方法。 在我看来,这与队列中的重复检测完全相反。从技术上讲,您可以使用P

我们正在处理一个场景,其中用户请求生成某些文档(通过web应用程序)并将这些请求(消息)发送到azure service bus队列,该队列在处理后将生成一个文档。用户可以使用更新的数据(这是消息的一部分)对同一文档发出多个请求。我们需要的是,如果同一文档中有来自用户的最新消息,我们将该消息用于生成文档,而其他旧消息可以忽略。可以使用唯一标识符(可能是消息id)来标识用户请求。 azure服务总线队列中当前是否有实现此功能的方法。
在我看来,这与队列中的重复检测完全相反。

从技术上讲,您可以使用Peek/PeekBatch方法读取整个队列(在每次接收文档请求消息时),如果检测到具有相同请求/文档的较新消息,请跳过较旧的(当前)消息。但是,根据队列中的平均消息数,这可能非常低效。根据我的经验,PeekBatch有点快(几秒钟,数百条消息最多几十秒)——但是一遍又一遍地扫描整个队列感觉不太对劲。或者,如果可以的话,不要立即处理文档请求。将请求保存在ASB外部的其他地方。然后定期扫描该表,只执行最新的一个,然后清除其余的。

谢谢。我们已经按照您的建议使用表扫描了,但我想看看是否有其他有效的方法可以做到这一点