有没有办法配置服务总线队列/订阅只保留最后一条消息,并抛弃任何旧的,无论时间。
这样客户就可以获得最新的状态'无论何时连接,都不必存储自上次连接以来的所有消息(这会在长时间断开连接时导致性能问题)
谢谢, Stevo
答案 0 :(得分:2)
Service Bus没有这个功能;一些经纪人有这样的概念(例如在MQTT经纪人中保留的消息),但由于一系列原因,这是一个棘手的功能。其中之一就是你突然将一个队列变成一个广播实体,并且结算(完成)的语义必须完全改变。还有一堆潜在的授权问题。谁可以覆盖粘性消息?任何发件人?
处理此问题的一种简洁方法是将共享状态信息放入Blob中,每个人都知道在未初始化时可以使用它,然后监听服务总线主题订阅以找出何时有新版本的Blob信息(如果适合,该信息也可以内联到有效载荷中)。
如果您需要知道订阅的消息是否比您刚接收的Blob更年轻或更旧,请比较Blob时间戳和消息的EnqueuedTimeUtc并抛弃过时的消息。