我正在我的Web应用程序上运行一些测试,该应用程序正在运行WebJob来处理一些后端任务。
我在Visual Studio中使用云资源管理器连接到队列,并从队列中清除所有消息。当我重新启动 Web 作业时,它仍然会找到消息并尝试处理它们。
这些消息从何而来?如果我在 Visual Studio 中通过云资源管理器清除队列,队列不应该是空的吗?顺便说一句,我还清除了队列的平衡。
VS 队列资源管理器中的"清除队列"命令确实会删除队列中的所有邮件,包括当前可能因其不可见超时而不可见的任何邮件。查看队列时,如果有任何不可见的消息,您将在窗口底部的显示文本中看到它们(例如"5 条消息中的 0 条"(。
因此,如果您执行了清除命令并且它显示"0 of 0"消息,则队列完全为空。如果在此之后您的队列触发函数在该队列上被调用,则必须在某处有一些代码将消息添加到该队列。也许不是一个非常令人满意的答案,但WebJobs SDK和Azure存储本身都不会以这种方式制造任何消息:)