为了账号安全,请及时绑定邮箱和手机立即绑定

从 Azure Function 中出列 Azure 存储队列

从 Azure Function 中出列 Azure 存储队列

PHP
有只小跳蛙 2024-01-20 21:31:15
我一直在寻找示例来轻松地使 Azure 存储队列出队,就像将项目入队一样(通过在 Run 方法中注入 IAsyncCollector)。但遗憾的是,没有成功。我发现的唯一的事情就是将项目排队或对添加到队列中的项目做出反应。我的本地服务器上运行一个应用程序,它将定期调用该函数(并不断调用直到队列为空)以获取队列的项目。我想使用 Azure 函数来执行此操作。欢迎任何帮助。
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

如下:

ICollector 和 IAsyncCollector 可用作存储队列输出绑定的参数类型。

目前,azure 函数绑定仅支持输出绑定以将消息写入队列。或者,如果您不需要使用 HTTP 请求调用队列触发器,则可以使用队列触发器来检索消息。

如果您必须使用 HTTP 请求,假设您必须创建一个 HTTP 触发函数,然后检索并删除队列以实现出队操作,如下面的代码。

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);


    }

https://img1.sycdn.imooc.com/65abcb63000198b005780628.jpg

查看完整回答
反对 回复 2024-01-20
?
SMILET

TA贡献1796条经验 获得超4个赞

为什么不创建一个应用程序调用的 Webhook 函数,然后在该函数中,您可以根据需要使用适用于您使用的任何语言的标准存储队列 API 将项目出列。



查看完整回答
反对 回复 2024-01-20
  • 2 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信