- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个azure function
,我想在parallel
中处理多个消息,但是以Person Id
的方式执行具有相同singleton
的消息。
方案1:
我有n
条消息,每条都有相同的Person Id
。每条消息都需要按照它们到达的顺序执行,但以singleton
的方式执行。
方案2:
我有n
条消息。其中一些具有Person Id:1
。其中一些具有Person Id:2
。可以使用parallel
执行具有不同Person ID的消息,但是具有相同Person Id
的消息需要按照它们到达的顺序并以singleton
的方式执行。
我该如何实现?
编辑:
我的应用程序在Consumption Plan
上运行,因此,我无法预测应用程序的扩展方式和时间。天蓝色函数最初会在所有分区上获得租约。似乎当应用程序未缩放时,azure函数最初会在所有分区上获得租约。 @juunas在评论中建议的解决方案让我担心,我的应用程序将永远无法扩展,并且可能最终会通过azure函数的单个实例按顺序运行批处理,因为我的函数将无法始终接收数百万个数据点。在Consumption Plan
下进行缩放的试探法是未知的。
也许,以某种方式将事件中心与有序功能保证和持久功能并行模式结合在一起?
编辑2:
考虑两个功能:Appender
功能:通过将“人员ID”和任何其他必需属性一起添加来维护cache
中的有序列表。不一定是天蓝色的功能。Processor
功能:使用持久功能singleton pattern(也可以在cache
中存储有关正在处理的个人ID的信息)
流:
附加后,Appender
将一条消息发送到queue
,消息中仅包含Person Id
。如documentation中所述,Person Id
将用作instance id
。Processor
(如果该函数的实例尚不存在)将开始在缓存中执行特定的Person Id
消息。
如果Processor
的实例已经存在,则该消息将被忽略。
问题:Processor
完全清空了缓存的Person Id
有序消息,但并行Appender
在Processor
退出之前追加另一条消息的情况,因此不会执行新消息。现在,缓存将包含1条未处理的消息,并且直到Appender
附加同一Person Id
的另一条消息之前,不会调用azure函数来对其进行处理。
也许我应该以某种方式使用Durable Function
Monitor
模式?
编辑3:
我考虑的另一种方法是使用Monitor模式。如果正在执行带有特定instance id
的函数,则消息将间隔等待,而不是被忽略。队列消息本身只是Person Id
,其其他属性按cache
的顺序排列。这将确保按照正确的顺序执行每条消息(通过使用cache
中维护的列表)。但是,将监视器方法与队列一起使用时,可能会出现单例example中提到的以下问题:
该样本中存在潜在的种族条件。如果两个实例
的HttpStartSingle并发执行,两个函数调用将
报告成功,但实际上只有一个业务流程实例
开始。根据您的要求,这可能会有不利的一面
效果。因此,重要的是要确保没有两个
请求可以同时执行此触发函数。
我考虑的另一种方法是使用Monitor模式,通过将Edit 2 Appender
方法与使用实例ID的单例模式结合使用,每个功能仅执行一条消息。
最佳答案
将工作项放入数据库中。每次添加新工作项时,也会排队一次Azure函数调用。
然后,该Azure功能将依次处理该人员的所有排队的工作项。它将查询数据库以获取该人员的所有工作,而不仅仅是任何工作。
必须有一种机制可以确保特定人员在任何时间点仅运行一个Azure函数调用。您可以通过实现某种形式的锁来做到这一点。例如,您可以将当前正在处理人员1234的信息写入数据库表。如果使用人员1234调用了Azure函数,并且注意到该人员已经在处理中,则它将简单地返回并且不执行任何操作。
我刚才提出的方案在竞争条件等方面有一些漏洞。但是那些可以解决。我希望这个想法能使您开始解决问题。
我想这里的元错误是要坚持用函数,队列或其他Azure原语解决问题。普通数据库(例如Azure表或SQL)可以完成这项工作。
关于c# - 如何确保具有相同Person ID的消息以单例方式执行,而不同消息则以并行方式执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54483219/
Person 是一个以 Parent 作为其子类的类。 考虑以下 2 个陈述: Person person = new Parent(); 父parent=(父)人; 第二个语句将 person 对象
像这样,我有一个对象: { 'person': { 'like': { 'color': 'red', 'food': 'rice' }, 'nam
对于下面的代码,我想知道为什么 Object.getPrototypeOf(person) 可以工作,但 person.getPrototypeOf(person) 不起作用?我认为规则是:如果对象没
我有 3 个 java 源文件。 Person.java FriendsList.java MyFriends.java FriendsList包含 Person 类型对象的数组列表以及将新 frie
我想我理解错误消息的意思,我有一个人,并试图将它转换为 HashMap,但这不是代码所说的?我不明白我做错了什么。当我阅读代码时,我没有发现任何问题..我已经坚持了一段时间了。如果我错过了一些基本的东
我知道以前在类似情况下曾有人问过这个问题,但是我是 C++ 的新手,无法弄清楚需要做什么或为什么必须这样做。基本上,我使用的是我创建的具有变量名称、年龄、高度和体重的 Person 对象。我需要对我创
我正在尝试编写从文件读取并添加到二叉树的程序,但是当我尝试编译时出现错误: "Error 1 'treePersons::display' : cannot convert parameter 1 f
我明白了 error: could not convert 'p1' from 'Person (*)()' to 'Person' 每当我使用默认构造函数时(当我创建 Person p1 时),我知
假设我有一个非常简单的类 Person,其中包含姓名和地址: public class Person { String name; String address; public
所以我刚开始学习 Crystal,因为我喜欢 Ruby 和 C,但我还不能掌握语法。我想我已经很接近了,但我被这个错误困住了。 没有重载匹配 Person 类型的 'Array(Person)#+'
我理解前两个陈述。但是,对于第三种说法,我想不通人是什么类型的人? IEnumerable(person) 还是 List(person)?我假设幕后有转换。有人可以解释一下语句 3 中使用了哪些技术
我有两个外部电话 这给出了 Future[Seq[People]] 它接受 person_id 并返回 person_status 作为 Future[String] 我需要使用第一个调用中可用序列中
在 HP Probook 4540S 笔记本(Win 7Prof 64 位)上安装 Delphi XE3 后,我在编译时遇到问题,该项目是一个空的 VCL 项目,表单上没有任何组件。起初,我收到“无效
我有类人: class Person{ private String name; public Person(String name) { this.name = na
我在尝试实现我的程序时遇到链接器错误 undefined reference to Person::Person。三个部分如下。我一直在努力修复它几个小时。我知道这可能很简单,只是我没有看到。但是我在
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
In function 'int main()': 41 14 [Error] no match for 'operator=' (operand types are 'Person' a
有没有XXXUtils我在哪里可以做 String s = XXXUtils.join(aList, "name", ","); 哪里"name"是 aList 中对象的 JavaBeans 属性.
我不知道以前有没有人问过这个问题,因为英语不是我的母语,我也不知道要搜索的关键字。 所以基本上我有以下输入元素, 我想将名称分成 3 个部分,例如 ["person", "0", "email"]。
我正在比较本地计算机中的证书,MMC.exe 允许我查看“当前用户”和“计算机”的证书。 我不明白为什么会有两个“个人”商店。有人可以解释为什么有两个,以及它们如何相互作用吗? 很高兴知道为什么其他文
我是一名优秀的程序员,十分优秀!