我们正在开发一个场景,用户请求生成一些文档(通过Web应用程序)和这些请求(消息)被发送到azure服务总线队列,当处理时将导致生成文档。用户可以制作具有更新数据的同一文档的多个请求(这是消息的一部分)。我们需要的是,如果用户对同一文档有最新消息,我们将该消息用于生成文档,并且可以忽略其他旧消息。可以使用可能是消息ID的唯一标识符来标识用户请求。 目前在天蓝色服务总线队列中是否存在实现此目的的方法。 对我来说,这看起来与队列中的重复检测完全相反。
答案 0 :(得分:1)
从技术上讲,您可以使用Peek / PeekBatch方法读取整个队列(在每次接收文档请求消息时),如果检测到具有相同请求/文档的较新消息,则跳过较旧的(当前)消息。但是,根据队列中的平均消息数量,这可能非常低效。根据我的经验,PeekBatch有点快(秒数,数百条消息可达数十秒) - 但是一次又一次地扫描整个队列感觉不对。或者,如果可以,而不是立即处理文档请求。在ASB之外的其他地方保留请求。然后定期扫描该表,并仅执行最新的表,并清除其余表。