Azure service fabric 强制执行参与者之间的有序通信

Azure service fabric 强制执行参与者之间的有序通信,azure-service-fabric,orleans,Azure Service Fabric,Orleans,我有一个问题,需要我的参与者按照消息发送的顺序处理消息。在Akka中,参与者A和参与者B之间的消息始终保证按照发送的顺序到达。在服务结构中的可靠参与者中,情况似乎并非如此。在我的测试用例中,消息是以不确定的顺序接收的 我可以通过在处理第一条消息之前不发送下一条消息来强制排序,但这违背了整个要点。我真的很想发送并忘记这些消息,但我知道它们将由接收参与者按顺序处理 有人见过这样做的模式吗?我认为奥尔良的演员也有同样的不正常信息的可能性。也许奥尔良的解决方案也能在这里发挥作用。奥尔良不保证向演员发送信

我有一个问题,需要我的参与者按照消息发送的顺序处理消息。在Akka中,参与者A和参与者B之间的消息始终保证按照发送的顺序到达。在服务结构中的可靠参与者中,情况似乎并非如此。在我的测试用例中,消息是以不确定的顺序接收的

我可以通过在处理第一条消息之前不发送下一条消息来强制排序,但这违背了整个要点。我真的很想发送并忘记这些消息,但我知道它们将由接收参与者按顺序处理


有人见过这样做的模式吗?我认为奥尔良的演员也有同样的不正常信息的可能性。也许奥尔良的解决方案也能在这里发挥作用。

奥尔良不保证向演员发送信息的顺序(除非您一次发送一条,因为您已经打折了):

但是,如果您在奥尔良使用流(使用正确的底层流提供程序),则可以控制排序:


奥尔良不保证向演员发送信息的顺序(除非您已经打折,一次发送一条):

但是,如果您在奥尔良使用流(使用正确的底层流提供程序),则可以控制排序:


两个演员之间的“开火与遗忘”是什么样子的?两者都是单线程的,对吗?因此,我假设排序是自然发生的?是的,两者都是单线程的,但是消息是通过服务结构基础结构路由的。如果参与者A向参与者B发送三条消息(M1、M2、M3),那么参与者B可以按照不同的顺序处理它们,比如说M2、M3、M1,但是参与者A如何在不等待任何消息的情况下发送M1、M2和M3呢?在这种情况下,您正在使用线程执行一些特殊的操作,对吗?否则我会假设,因为M1应该在A发送M2之前处理,所以这无关紧要。消息的发送是异步的。因此,我可以发送一条消息,然后再发送另一条消息,而不必等待第一条消息的结果。每个参与者都是单线程的,但也有处理消息的服务结构中介。根据我的理解,当你调用ActorProxy上的一个方法时,当该方法完成时,调用由ActorProxy执行。虽然它是异步的(可等待的),但它不是异步的。您是否有文档的指针来解释您所陈述的内容?两个参与者之间的“发射和遗忘”是什么样子的?两者都是单线程的,对吗?因此,我假设排序是自然发生的?是的,两者都是单线程的,但是消息是通过服务结构基础结构路由的。如果参与者A向参与者B发送三条消息(M1、M2、M3),那么参与者B可以按照不同的顺序处理它们,比如说M2、M3、M1,但是参与者A如何在不等待任何消息的情况下发送M1、M2和M3呢?在这种情况下,您正在使用线程执行一些特殊的操作,对吗?否则我会假设,因为M1应该在A发送M2之前处理,所以这无关紧要。消息的发送是异步的。因此,我可以发送一条消息,然后再发送另一条消息,而不必等待第一条消息的结果。每个参与者都是单线程的,但也有处理消息的服务结构中介。根据我的理解,当你调用ActorProxy上的一个方法时,当该方法完成时,调用由ActorProxy执行。虽然它是异步的(可等待的),但它不是异步的。您是否有说明您所陈述内容的文档指针?