我们可以使用 Azure 存储队列作为事件源吗?

Posted

技术标签:

【中文标题】我们可以使用 Azure 存储队列作为事件源吗?【英文标题】:Can we use Azure storage Queue as an Event source? 【发布时间】:2021-07-14 08:07:49 【问题描述】:

我们能否将 Azure 队列消息用作事件网格触发的 Azure 函数的事件源? 如果是这样,我们如何配置它。目前只有 Blob 存储在存储帐户中显示为事件源。

enter image description here

注意:我的要求是运行 azure 函数,每当新消息进入存储队列时。消息参数信息也要传递给 Azure 函数。

【问题讨论】:

为什么不使用queue trigger 答案是否定的。 使用队列触发器或逻辑应用,无需任何代码。它会工作 嗨,这个问题有更新吗?你检查我的答案了吗? 【参考方案1】:

目前,作为事件源的存储队列不可用。有些东西可以完全满足您的需求 => Azure 存储队列触发器。选择Azure Functions 中提到的模板,并提供您的存储队列名称和连接详细信息。该功能将自动使用您的存储帐户的连接字符串,并开始监控队列。每当有新消息到达时,就会触发您的函数。

这是处理传递给触发函数的消息的C# 示例:

public static class QueueTrigger

    [FunctionName("QueueTrigger")]
    public static void Run(
        [QueueTrigger("myqueue-items")] string message, ILogger log)
    
        log.LogInformation($"Here's the item: message");
    

注意:函数需要一个 base64 编码的字符串。对编码类型的任何调整(为了将数据准备为 base64 编码字符串)都需要在调用服务中实现。 Reference.

【讨论】:

【参考方案2】:

查看此文档:

https://docs.microsoft.com/en-us/azure/event-grid/overview

队列存储不能作为事件网格的来源,所以答案是否定的。

正如弗兰克所说,您可以使用queue trigger,而不是使用队列存储作为事件源。

【讨论】:

以上是关于我们可以使用 Azure 存储队列作为事件源吗?的主要内容,如果未能解决你的问题,请参考以下文章

天蓝色存储队列中的最大出队数

将对象复制作为事件网格源的 Azure Blob

Azure 函数队列为空

如何使用 Azure 事件网格发布覆盖默认过期时间到队列?

Terraform 模块 azure 事件订阅可选字段

根据环境使用具有不同存储帐户的 Azure Functions