Dapr 输入绑定与 Azure 事件中心同步处理消息

如何解决Dapr 输入绑定与 Azure 事件中心同步处理消息

我们使用 dapr 和输入绑定来使用来自 Azure 事件中心的 IoT 事件。 事件中心有 32 个分区,发送方使用设备 ID 作为分区键。 接收事件的控制器将它们委托给 dapr Actors 进行处理。

现在我的期望是,每个分区中的消息都是并行处理的,从而导致对接收事件的控制器的并行请求允许处理多达 32 个并发事件批次。

然而,测试表明事件是同步接收的。紧接在前一个事件的全部处理完成后接收后续事件。

现在我知道参与者按照设计一个一个地处理消息,但我没有根据 the documentation 阅读类似这样的输入绑定。

有什么我完全遗漏的吗?否则我无法想象这个系统是如何扩展的。

我们使用 dapr 0.11 以及在 AKS 集群中运行的 ASP.NET Core 3.1。

解决方法

我刚刚在 GitHub 上得到了一个答案:https://github.com/dapr/components-contrib/issues/759

所以基本上这证实了我基于当前版本的 dapr 事件中心绑定的观察。

但是,您可以手动配置每个 dapr 组件的分区 ID。因此,要同时读取 32 个分区,您目前必须使用 32 个 dapr 组件,每个组件都从一个单独的分区读取。

引用上面的 GitHub 问题:

[...] you can specify a Dapr component per partition ID: https://docs.dapr.io/operations/components/setup-bindings/supported-bindings/eventhubs/

If you set the partitionID field on the component metadata,the consumer will pull all messages for that partition ID.
Otherwise,it'll pull from all partitions.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?