使用逻辑应用在无服务器 Azure Functions 上按顺序消息处理

2024-02-17

我需要在 Azure 上处理传入消息。每条消息都将与一个特定的实体相关联——例如,通过EntityId属性 – 属于同一实体的消息必须按彼此的顺序进行处理。同时,我会保留 Azure Functions 的无服务器特性;如果我有 1,000 个实体的稳定消息流,我希望我的函数有 1,000 个并发执行。我还没有找到实现这一目标的干净方法。服务总线队列具有会话,这是最接近我的要求的实现,但 Azure Functions 不支持它们:https://github.com/Azure/azure-functions-host/issues/563 https://github.com/Azure/azure-functions-host/issues/563。但是,它们似乎在 Azure 逻辑应用程序中受支持。我正在考虑创建一个由使用会话的服务总线队列触发的 Azure 逻辑应用程序(“使用服务总线会话进行相关按序传递”模板),然后挂钩到 HTTP 触发的 Azure 函数来处理消息。逻辑应用的唯一目的是防止同时处理属于同一实体/会话的多个消息。有人可以提供一些关于这种方法是否有效以及是否有任何警告的见解吗?


看一下 Azure Function 团队成员之一写的这篇文章:使用 Azure Functions 进行顺序事件处理 https://medium.com/@jeffhollan/in-order-event-processing-with-azure-functions-bb661eb55428

It uses Azure 函数 https://learn.microsoft.com/en-us/azure/azure-functions/ and Azure 事件中心 https://learn.microsoft.com/en-us/azure/event-hubs/:

Azure 事件中心可以处理数十亿个事件,并且保证每个分区的一致性和排序 https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-availability-and-consistency#consistency.

对于您的场景,每条消息都与相同的相关EntityId必须转到同一个分区。

进行订单处理并让 azure 函数独立扩展的技巧是从事件中心提取批次并保留订单。

你的函数应该是这样的:

[FunctionName("EventHubTrigger")]
public static async Task RunAsync([EventHubTrigger("ordered", Connection = "EventHub")] EventData[] eventDataSet, TraceWriter log)
{
    log.Info($"Triggered batch of size {eventDataSet.Length}");
    foreach (var eventData in eventDataSet)
    {
        try
        {
            // Process message in order here.
        }
        catch
        {
            // handle event exception
        }
    }
}

我建议您阅读整篇文章,非常有启发性

你可以在 Github 上找到完整的解决方案:

https://github.com/jeffhollan/functions-csharp-eventhub-ordered-processing https://github.com/jeffhollan/functions-csharp-eventhub-ordered-processing

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用逻辑应用在无服务器 Azure Functions 上按顺序消息处理 的相关文章

  • 如何让 MSIX 应用安装程序在每次生成/发布期间输出正确的设置?

    问题 如何获取 MSIXappinstaller在每次构建 发布期间输出正确的设置 Context 这是一个后续问题启用侧面加载后 为什么 MSIX 不会在每次应用程序运行时自动检查更新 https stackoverflow com q
  • Azure 函数核心工具安装卡在 Visual Studio Code 中

    我创建了 Azure 函数应用程序来执行 powershell 脚本 想先在我的本地运行它来测试它 当我运行它时 无论有没有调试选项 都会出现一个弹出窗口 其中显示 您必须安装 Azure Functions 核心工具才能调试本地函数 当我
  • 如何对 WebAPI 进行无人值守的 oauth/openid 身份验证?

    想象一下在 Windows Azure 中注册的客户端和服务应用程序 客户端是一个控制台 在无人值守的情况下运行 例如过夜执行测试 该服务是受 oAuth 保护的 WebAPI 服务 通常使用托管在 Azure 中的 OpenID Conn
  • 通过 ARM 模板将现有混合连接链接到 azure Web 应用程序

    我在天蓝色中有一个资源组 其中包含一个包含混合连接的中继 我正在尝试部署另一个包含 Web 应用程序的资源组 该应用程序应链接其他资源组中的现有混合连接 在天蓝色门户中执行此任务很简单 但由于我想在 ARM 模板部署期间运行 完整模式 因此
  • 使用 BlobOutputStream 在 Azure 中上传 blob

    我正在尝试直接从流上传 blob 因为我不知道我决定尝试的流的长度这个答案 https stackoverflow com a 24621538 3695939 这不起作用 即使它从流中读取并且不会抛出任何异常 内容也不会上传到我的容器 我
  • 如何实现 Azure Functions 的自定义绑定?

    Azure Functions 附带一组固定的预先存在的绑定 同时 Azure Functions基于Web Jobs SDK 具有一些可扩展性故事 https github com Azure azure webjobs sdk exte
  • Azure VM 自定义脚本扩展 SAS 令牌支持

    我正在尝试使用 ARM 模板将自定义脚本扩展部署到 Azure VM 并且希望让它使用 SAS 令牌从存储帐户下载文件 这是模板 简化 name CustomScriptExtension type Microsoft Compute vi
  • 如何检测环境是在 Azure 托管服务工作者角色中进行暂存还是生产?

    我在托管服务中担任辅助角色 工作人员每天都会发送电子邮件 但在托管服务中 有 2 个环境 Staging 和 Production 所以我的工人角色每天发送电子邮件 2 次 我想知道如何检测工人是否处于停滞状态或生产状态 提前致谢 根据我的
  • Azure Graph API 身份验证_MissingOrMalformed

    我正在使用 Azure Graph API 从 Azure AD 导入用户 在天蓝色门户中 我添加了多个应用程序 我从 protal 获取 clientId tenantId 并创建一个有效期为一年的密钥 使用这些值 我创建一个 acces
  • Azure 和直播

    我正在尝试使用 Azure 制作实时视频流 但我真的不知道应该先尝试什么 首先 有一个网站 上面有最新版本的 Flowplayer 现在我需要知道如何将网络摄像头的视频流传输到 Azure 我需要什么样的软件 我正在尝试使用 Express
  • 跨多个 Azure Function 实例共享对象

    我们有一个要求 需要存储一个可由函数的多个实例访问和使用的对象 请告知实现此目的的最佳方法是什么 大多数时候 所有函数执行都在同一个进程中运行 因此您could使用静态类成员在函数实例之间共享状态 然而 这并不可靠 该进程可能随时停止运行
  • 删除实例后,Azure 云服务变得无响应?

    我的 Azure 云服务 当它从 3 个实例缩减到 2 个实例时 我的网站会变得无响应几分钟 我的印象是 我的现有实例将保持不变 除了那些被删除的实例 并且我的网站将继续正常运行 我可能是错的 这是正常行为吗 当您从 2 个实例缩减到 1
  • 如何使用 AMQP 以“PeekLock”模式从 Azure 服务总线队列获取消息?

    我们正在尝试在 Node 应用程序中使用 Azure 服务总线 我们的要求是从队列中获取多条消息 由于Azure SDK for Node不支持批量检索 我们决定使用AMQP 虽然我们能够使用 Peek Messages 获取消息 如此处所
  • 将 SQL 存储过程 ResultSet 表 JSON 转换为 XML

    这看起来很明显 但不知何故它对我不起作用 我正在尝试在 Microsoft Azure 上的逻辑应用程序中构建解决方案 但我无法将 JSON 对象转换为 XML 我的要求是执行存储过程并以 XML 格式保存响应 默认情况下 SQL 执行存储
  • 如何在 Azure 中仅部署辅助角色/Web 角色

    如果您在 Azure 解决方案中拥有 Web 和辅助角色 那么所有等待发布更新包 上传到云存储 等待包部署的过程可能会让人筋疲力尽 浪费大量时间 如何仅上传 部署包含这两个角色的 Microsoft Azure 解决方案的辅助角色或 Web
  • 应用服务中的内存利用率是否可​​以提高

    我有一个相当简单的 Web 应用程序在 Azure 的 B1 服务计划中的应用服务计划中运行 该计划提供 1 个 CPU 和 1 75GB RAM CPU 使用率永远不会超过 5 左右 内存使用率永远不会低于 52 我确实停止了计划中唯一运
  • Azure消息队列中的消息将直接进入Poison消息队列

    希望这可以节省某人一些时间 当移动到较新的版本时 下面的代码停止工作QueueClient https learn microsoft com en us dotnet api azure storage queues queueclien
  • Kubernetes - 尝试部署时“安装卷失败”

    我部署了第一个容器 我得到了信息 deployment apps frontarena ads deployment created 但后来我看到我的容器创建陷入等待状态 然后我看到日志使用kubectl describe pod fron
  • 如何将张量流模型部署到azure ml工作台

    我在用Azure ML Workbench执行二元分类 到目前为止 一切正常 我有很好的准确性 我想将模型部署为用于推理的 Web 服务 我真的不知道从哪里开始 azure 提供了这个doc https learn microsoft co
  • 增加在 Azure 上运行的 Dockerized ASP.NET Core 站点的最大上传大小限制?

    以下是应用程序的架构 使用 ASP NET Core 编写的 Web API Dockerfile 使用以下命令构建 Web 应用程序microsoft dotnet 2 1 sdk并使用执行 APImicrosoft dotnet asp

随机推荐