使用 QueueTrigger 的 Azure Webjob 不轮询新存储帐户中的队列
Azure Webjob using QueueTrigger not polling Queue in new Storage account
我在 Azure 中有一个带有 WebJob 的 Web 应用程序(使用 QueueTrigger 监视队列)已经运行一年多了。我正在尝试重新组织我的一些 Azure 资源,并希望 WebJob 监视一个与以往不同的队列。
我创建了一个新的(非经典)存储帐户并更改了我的代码以将新消息插入到新队列中。我可以看到新消息显示在新队列中,但从未触发 WebJob。 (旧队列在经典存储帐户中。我认为这不重要,但我已经想到了。我看到一些较旧的帖子让我认为这曾经是一个问题,但一些较新的帖子让我觉得还行。)
我的代码非常简单(几乎直接来自教程)。它需要 app.config 中用于 AzureWebJobsDashboard 和 AzureWebJobsStorage 的队列连接字符串,我已经完成了。
var host = new JobHost();
host.RunAndBlock();
为了验证新代码是否已成功部署,我删除了 Azure 门户中的旧 WebJob 并验证 App_Data\Jobs... 文件夹中的文件日期是最新的,我查看了已部署配置文件中 "AzureWebJobsStorage" 的值,它是新队列的连接字符串。
我终于想到手动将一条消息插入旧队列(我的代码 none 不再指向)。果然 - 当我这样做时,WebJob 被触发并运行。
我认为更改 App.Config 中的连接字符串值应该是让它 "watch" 成为一个新队列所需的全部,但这似乎还不够。有谁知道还需要更改什么?
所以我想通了。您不仅必须在 WebJob 项目的 App.Config 中具有连接字符串条目(指向队列),而且对于 Web 应用程序。我已在 Azure 门户中 Web 应用程序的“应用程序设置”部分配置了 AzureWebJobsDashboard 和 AzureWebJobsStorage。
那些仍然指向旧队列,显然那些是重要的。一旦我更新了这些设置以指向新队列,它就可以正常工作了。
我在 Azure 中有一个带有 WebJob 的 Web 应用程序(使用 QueueTrigger 监视队列)已经运行一年多了。我正在尝试重新组织我的一些 Azure 资源,并希望 WebJob 监视一个与以往不同的队列。
我创建了一个新的(非经典)存储帐户并更改了我的代码以将新消息插入到新队列中。我可以看到新消息显示在新队列中,但从未触发 WebJob。 (旧队列在经典存储帐户中。我认为这不重要,但我已经想到了。我看到一些较旧的帖子让我认为这曾经是一个问题,但一些较新的帖子让我觉得还行。)
我的代码非常简单(几乎直接来自教程)。它需要 app.config 中用于 AzureWebJobsDashboard 和 AzureWebJobsStorage 的队列连接字符串,我已经完成了。
var host = new JobHost();
host.RunAndBlock();
为了验证新代码是否已成功部署,我删除了 Azure 门户中的旧 WebJob 并验证 App_Data\Jobs... 文件夹中的文件日期是最新的,我查看了已部署配置文件中 "AzureWebJobsStorage" 的值,它是新队列的连接字符串。
我终于想到手动将一条消息插入旧队列(我的代码 none 不再指向)。果然 - 当我这样做时,WebJob 被触发并运行。
我认为更改 App.Config 中的连接字符串值应该是让它 "watch" 成为一个新队列所需的全部,但这似乎还不够。有谁知道还需要更改什么?
所以我想通了。您不仅必须在 WebJob 项目的 App.Config 中具有连接字符串条目(指向队列),而且对于 Web 应用程序。我已在 Azure 门户中 Web 应用程序的“应用程序设置”部分配置了 AzureWebJobsDashboard 和 AzureWebJobsStorage。
那些仍然指向旧队列,显然那些是重要的。一旦我更新了这些设置以指向新队列,它就可以正常工作了。