Azure队列触发器不正确地给出空队列项

本文关键字:队列 正确地 触发器 不正确 Azure | 更新日期: 2023-09-27 18:15:59

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

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

然而,当我添加一个带有队列触发器的Azure函数来处理这个问题时,当触发器触发时,队列项为空。我尝试了教程代码,减少了一些。当我将运行函数设置为:

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出来空,当队列窥视工具可以看到完整的预览字符串?

Azure队列触发器不正确地给出空队列项

我现在已经得到了这个工作。我做了两件事。

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

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

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