Azure服务总线:删除会话消息

时间:2020-07-02 15:18:11

标签: azure azureservicebus azure-servicebus-queues

我正在使用带有.NET核心的Azure Service Bus

在我们的应用程序中,我们正在将会话消息发送到服务总线。每当我们收到带有会话ID的取消请求时,我们都需要删除/删除/完成具有特定会话ID的消息,而无需进行任何进一步处理

我试图从另一个接收者访问MessageSession以取消队列中的消息 enter image description here

但是我遇到了错误- 请求的会话'session-name'无法接受。它可能已被其他接收者锁定。

还有其他方法可以从具有特定sessionId的服务总线队列中删除消息(在某​​些情况下,会话可能被锁定)

我唯一能解决的方法是

数据库中的更新表明sessionId被取消并针对每条消息进行检查。 但这对于大量消息来说效率不高,因为我们需要为每条消息增加额外的数据库命中率。

1 个答案:

答案 0 :(得分:0)

还有其他方法可以从具有特定sessionId的服务总线队列中删除消息吗?

可以使用Serverless360中的搜索功能删除带有SessionId的消息,您可以在其中将查询指定为SessionId =“ 1”,然后检索消息并将其删除。但是,很明显,锁定时无法检索会话消息,因此无论如何都无法进行第二个测试用例,除非您能够设法在编排中使用诸如续订锁之类的操作,并且在处理消息时会有一些延迟。

下面是业务流程示例的屏幕快照,其中每次更新锁时,因此一旦获得Session-Id,您就可以检索消息 enter image description here

相关问题