Azure 队列触发器错误地给出空队列项
Azure Queue Trigger giving null queue item incorrectly
我正在尝试在 Azure 中编写一个系统,对于其中的一部分,我希望能够将一些代码写入队列,并让一些处理代码处理队列中的每个项目。
项目正在正确添加到队列中。我检查过这个;我有 Visual Studio 的 Azure 插件。然后我可以使用 Cloud Explorer 调出存储帐户并查看队列。在这里,队列内容似乎是正确的,因为消息文本预览看起来符合我的预期。
但是,当我添加带有队列触发器的 Azure Functions 来处理此问题时,当触发器触发时,队列项变为空。我已经尝试了教程代码,减少了一点。当我将 运行 函数设置为:
public static void Run(string myQueueItem,
DateTimeOffset expirationTime,
DateTimeOffset insertionTime,
DateTimeOffset nextVisibleTime,
string queueTrigger,
TraceWriter log)
{
log.Info($"C# Queue trigger function processed: '{myQueueItem.GetType()}'\n" +
$"queueTrigger={queueTrigger}\n" +
$"expirationTime={expirationTime}\n" +
$"insertionTime={insertionTime}\n" +
$"nextVisibleTime={nextVisibleTime}\n");
}
然后我得到队列项为空的输出,而我知道它不是。队列触发器元素也是空的。这是一些示例输出,当我直接在 Azure Functions 中 运行 函数时:
016-11-01T13:47:41.834 C# Queue trigger function processed:
queueTrigger=
expirationTime=12/31/9999 11:59:59 PM +00:00
insertionTime=11/1/2016 1:47:41 PM +00:00
事实上,这完全触发,并且具有合理的插入时间,这表明我正在连接到正确的队列。
当队列查看工具可以看到完整的预览字符串时,有人知道为什么字符串 myQueueItem 出来是空的吗?
我现在已经开始工作了。我做了两件事。
首先我清除了 'poison' 队列。我之前一直在尝试反序列化队列中的某些对象。
然后,我启用了队列 - 它之前被禁用了。在我看来,当您手动 运行 禁用的队列触发器时,它会提供一些虚假信息,并且不会从队列中获取任何信息 - 它甚至不会使消息出队,这是提示。
从现在开始,当我添加队列时,它们会得到正确处理。
我正在尝试在 Azure 中编写一个系统,对于其中的一部分,我希望能够将一些代码写入队列,并让一些处理代码处理队列中的每个项目。
项目正在正确添加到队列中。我检查过这个;我有 Visual Studio 的 Azure 插件。然后我可以使用 Cloud Explorer 调出存储帐户并查看队列。在这里,队列内容似乎是正确的,因为消息文本预览看起来符合我的预期。
但是,当我添加带有队列触发器的 Azure Functions 来处理此问题时,当触发器触发时,队列项变为空。我已经尝试了教程代码,减少了一点。当我将 运行 函数设置为:
public static void Run(string myQueueItem,
DateTimeOffset expirationTime,
DateTimeOffset insertionTime,
DateTimeOffset nextVisibleTime,
string queueTrigger,
TraceWriter log)
{
log.Info($"C# Queue trigger function processed: '{myQueueItem.GetType()}'\n" +
$"queueTrigger={queueTrigger}\n" +
$"expirationTime={expirationTime}\n" +
$"insertionTime={insertionTime}\n" +
$"nextVisibleTime={nextVisibleTime}\n");
}
然后我得到队列项为空的输出,而我知道它不是。队列触发器元素也是空的。这是一些示例输出,当我直接在 Azure Functions 中 运行 函数时:
016-11-01T13:47:41.834 C# Queue trigger function processed:
queueTrigger=
expirationTime=12/31/9999 11:59:59 PM +00:00
insertionTime=11/1/2016 1:47:41 PM +00:00
事实上,这完全触发,并且具有合理的插入时间,这表明我正在连接到正确的队列。
当队列查看工具可以看到完整的预览字符串时,有人知道为什么字符串 myQueueItem 出来是空的吗?
我现在已经开始工作了。我做了两件事。
首先我清除了 'poison' 队列。我之前一直在尝试反序列化队列中的某些对象。
然后,我启用了队列 - 它之前被禁用了。在我看来,当您手动 运行 禁用的队列触发器时,它会提供一些虚假信息,并且不会从队列中获取任何信息 - 它甚至不会使消息出队,这是提示。
从现在开始,当我添加队列时,它们会得到正确处理。