Azure 函数未从存储队列获取消息

我已经创建了带有队列触发器的测试 Azure 函数。当我在本地模拟器中运行此功能时,它可以工作。但是当我在 Azure 上部署它时,它看起来不起作用(消息没有从队列中删除)。


功能


[FunctionName("Function1")]

    public static void Run([QueueTrigger("azurefunc", Connection = "StorageConnectionString")]string myQueueItem, TraceWriter log)

    {

        log.Info($"C# Queue trigger function processed: {myQueueItem}");


        // PERFORMANCE TEST

        for (int i = 0; i < 10000; i++)

        {

            for (int j = 0; j < 9000; j++)

            {

                // Do nothing.

                // Or do something

                string myAwesomeTempString = "How are you";

                myAwesomeTempString += "?";

            }

        }


        try

        {

            var queueMessage = new CloudQueueMessage (myQueueItem);

            QueueApi.DeleteMessage (QueueApi.AzureFunctionStorageQueue, queueMessage);

        }

        catch

        {


        }

    }

local.settings.json


{"IsEncrypted": false,

  "Values": {

    "AzureWebJobsStorage": "AZURE_STORAGE_CONNECTION_STRING",

    "AzureWebJobsDashboard": "AZURE_STORAGE_CONNECTION_STRING",

    "StorageConnectionString": "AZURE_STORAGE_CONNECTION_STRING",

    "serviceBusAccount": "SERVICE_BUS_CONNECTION_STRING"

  }}

QueueApi 的一部分


/// <summary>

    /// Creates instance of Queue Storage

    /// </summary>

    /// <param name="queueName">Name of queue storage</param>

    /// <returns>The instance of queue storage</returns>

    private static CloudQueue CreateStorageQueue (string queueName)

    {

        CloudStorageAccount storageAccount = CloudStorageAccount.Parse ("AZURE_STORAGE_CONNECTION_STRING");

        CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient ();

        CloudQueue queue = queueClient.GetQueueReference (queueName);

        queue.CreateIfNotExists ();

        return queue;

    }

我创建Azure Service Bus帐户只是为了测试另一种方法,但我真的更愿意使用Azure Storage Queue。


谁能帮帮我吗?


弑天下
浏览 112回答 1
1回答

紫衣仙女

队列触发器将在函数执行结束时自动删除传入的消息,因此您不需要自己删除它。您的代码实际上创建了一条新消息,其消息内容与进入功能的消息内容相同,并尝试删除队列中不存在的新消息。代码在 Azure 上不起作用的原因是您可能忘记添加StorageConnectionString应用程序设置。local.settings.json未发布到 Azure,因为它仅用于本地开发。
打开App,查看更多内容
随时随地看视频慕课网APP