繁体   English   中英

Azure 服务总线:删除 Session 消息

[英]Azure Service Bus: Delete Session Messages

我正在使用带有 .NET 核心的 Azure 服务总线

在我们的应用程序中,我们将 Session 消息发送到服务总线。 每当我们收到带有 session-Id 的取消请求时,我们需要删除/删除/完成带有该特定 sessionId 的消息,而无需任何进一步处理

我试图从另一个接收者访问 MessageSession 以取消队列中的消息在此处输入图像描述

但我收到错误 -请求的 session 'session-name' 不能被接受。 它可能被另一个接收器锁定。

是否有任何其他可能的方法可以从具有特定 sessionId 的服务总线队列中删除消息(在少数情况下会话可能被锁定)

我能得到的唯一解决方法是

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

是否有任何其他可能的方法可以从具有特定 sessionId 的服务总线队列中删除消息?

可以使用 Serverless360 中的搜索功能删除带有 SessionId 的消息,您可以在其中将查询指定为 SessionId = "1" 并检索消息并将其删除。 但是,很明显,当 session 消息被锁定时,您无法检索它,因此您的第二个测试用例无论如何都是不可能的,除非您可以设法在您的编排中使用一些操作,例如更新锁定,而在处理消息时会有一些延迟。

下面是示例编排的屏幕截图,其中每次更新锁时,您可以在拥有 Session-Id 后检索消息在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM