【问题标题】:Azure Web Job reading message from Service Bus doesnt delete message afterAzure Web Job 从服务总线读取消息后不会删除消息
【发布时间】:2016-04-11 16:46:22
【问题描述】:

这里的场景是我们有一个服务总线队列和一个 Web 作业。 Web 作业从服务总线队列中读取消息并调用一个逻辑,然后继续执行其他操作。

我们面临的问题是,Web 作业从服务总线读取消息后,偶尔会不删除它,这会不断导致调用逻辑应用程序并用数据淹没我们的数据库。

这是从 azure management studio 看到的相关消息:

https://gyazo.com/7f57b460421d1bb4a69fcb8b5a9ff01f

如您所见,消息没有锁定时间。我试图玩弄这些设置无济于事。

当我手动尝试从 azure management studio 中删除该消息时,它也不成功,但没有收到错误消息。

有人知道这里发生了什么吗?我觉得这是队列本身的问题,而不是我们代码中的错误,因为我使用的 2-3 个工具无法从队列中删除此消息。

看起来该消息仅在特定时间后才被删除(但是不会进入死信队列)。

谢谢

【问题讨论】:

  • 试图在你的网络作业中调用 message.Complete() ?
  • 是的,我已经尝试过了,但它仍然会生成更多行。由于 webjob 处于活动状态的某种原因,我认为这与并发线程有关。

标签: azure-webjobs servicebus


【解决方案1】:

所以只是为了提供信息,我想出了我自己的问题。当文件抓取作业运行时,它会在服务总线中放入一条消息。现在运行并拾取该文件的 web 作业将它刚刚拾取的文件存储在本地以及 blob 存储中。

问题在于 webjob 保留了一个它在本地处理的队列,该队列从未被清除,因此每次 webjob 运行时,它都会处理所有以前的文件。

【讨论】:

    猜你喜欢
    • 2020-10-23
    • 2015-01-18
    • 2022-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2020-02-20
    • 1970-01-01
    • 2017-01-16
    相关资源
    最近更新 更多