簡體   English   中英

從 Azure Function 中取出 Azure 存儲隊列

[英]Dequeue Azure Storage queue from Azure Function

我一直在尋找可以輕松地將 Azure 存儲隊列出列的示例,就像您可以將項目入隊一樣(通過在 Run 方法中注入 IAsyncCollector)。 但很可惜,沒有成功。 我發現的唯一事情是將項目排隊或對添加到隊列的項目做出反應。

我的本地服務器上運行了一個應用程序,它將定期調用 function(並一直調用直到隊列為空)以獲取隊列中的項目。 我想使用 Azure function 來做到這一點。

歡迎任何幫助。

為什么不創建一個 webhook function 供您的應用調用,然后在 function 中,您可以根據需要使用標准存儲隊列 Z8A5DA52ED126447D359E70C05AZ721A8A 將項目出列,無論您使用什么語言。

請查看有關 ICollector 的文檔:帶有 Azure 存儲隊列的 ICollector。

ICollector 和 IAsyncCollector 可用作存儲隊列 output 綁定的參數類型。

目前 azure function 綁定僅支持 output 綁定以將消息寫入隊列。 或者,如果您不需要使用 HTTP 請求調用它,您可以使用隊列觸發器來檢索消息。

如果您必須使用 HTTP 請求,假設您必須創建一個 HTTP 觸發器 function,然后檢索並刪除隊列以實現如下代碼的出隊動作。

public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");

        // Parse the connection string and return a reference to the storage account.
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(Environment.GetEnvironmentVariable("AzureWebJobsStorage"));
        CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

        // Retrieve a reference to a queue
        CloudQueue queue = queueClient.GetQueueReference("myqueue");

        // Async dequeue the message
        CloudQueueMessage retrievedMessage = await queue.GetMessageAsync();
        Console.WriteLine("Retrieved message with content '{0}'", retrievedMessage.AsString);

        //Process the message in less than 30 seconds, and then delete the message
        await queue.DeleteMessageAsync(retrievedMessage);

        return  (ActionResult)new OkObjectResult(retrievedMessage.AsString);

    }

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM