Azure队列触发器错误地提供空队列项

时间:2016-11-01 14:14:17

标签: c# azure azure-storage azure-functions azure-storage-queues

我正在尝试在Azure中编写一个系统,对于其中的一部分,我希望能够将大量代码写入队列,并且每个项目都有一位处理代码处理在队列中。

项目正在正确添加到队列中。我检查了这个;我有Visual Studio与Azure插件。然后,我可以使用Cloud Explorer提取存储帐户并查看队列。在这里,队列内容似乎是正确的,因为消息文本预览看起来像我期望的那样。

但是,当我添加带有队列触发器的Azure Functions来处理它时,触发器触发时,队列项将变为空。我已经尝试了教程代码,减少了一点。当我将run函数设置为:

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会变空?

1 个答案:

答案 0 :(得分:1)

我现在已经开始工作了。我做了两件事。

首先,我清除了毒药'队列。我之前一直试图从队列中反序列化一些对象。

然后,我启用了队列 - 它之前被禁用了。在我看来,当你手动运行一个禁用的队列触发器时,它会提供一些虚假信息,并且不会从队列中取任何东西 - 它甚至不会使消息出列,这是提示。 / p>

从现在开始,当我添加队列时,它们会被正确处理。