【发布时间】:2016-04-11 16:46:22
【问题描述】:
这里的场景是我们有一个服务总线队列和一个 Web 作业。 Web 作业从服务总线队列中读取消息并调用一个逻辑,然后继续执行其他操作。
我们面临的问题是,Web 作业从服务总线读取消息后,偶尔会不删除它,这会不断导致调用逻辑应用程序并用数据淹没我们的数据库。
这是从 azure management studio 看到的相关消息:
https://gyazo.com/7f57b460421d1bb4a69fcb8b5a9ff01f
如您所见,消息没有锁定时间。我试图玩弄这些设置无济于事。
当我手动尝试从 azure management studio 中删除该消息时,它也不成功,但没有收到错误消息。
有人知道这里发生了什么吗?我觉得这是队列本身的问题,而不是我们代码中的错误,因为我使用的 2-3 个工具无法从队列中删除此消息。
看起来该消息仅在特定时间后才被删除(但是不会进入死信队列)。
谢谢
【问题讨论】:
-
试图在你的网络作业中调用 message.Complete() ?
-
是的,我已经尝试过了,但它仍然会生成更多行。由于 webjob 处于活动状态的某种原因,我认为这与并发线程有关。