2015-12-07 3 views
0

У меня есть проблема, которая требует, чтобы мои участники обрабатывали сообщения в том порядке, в котором они были отправлены. В Акке, сообщения между актером А и актером В всегда гарантированно поступают в отправленном порядке. Это, похоже, не относится к Надежным Актерам в Сервисной Ткань. В моих тестовых случаях сообщения принимаются в недетерминированном порядке.Обеспечение упорядоченной связи между участниками

Я могу заставить упорядочить, не отправив следующее сообщение до тех пор, пока первое сообщение не будет обработано, но это победит всю точку. Я действительно хочу отправить и забыть сообщения, но знаю, что они будут обработаны по заказу принимающего участника.

Кто-нибудь видел образец для этого? Я думаю, что у Орлеанских Актеров есть такая же возможность сообщения о заказе. Возможно, здесь будет работать и решение Орлеана.

+0

Что огнь и забыть выглядеть между двумя актерами? Оба являются однопоточными правильно? Так что упорядочение происходит, естественно, я предполагаю? –

+0

Да, оба являются однопоточными, но сообщения направляются через инфраструктуру Service Fabric. Если актер A отправляет три сообщения актеру B (M1, M2, M3), они могут обрабатываться актором B в другом порядке, скажем M2, M3, M1, –

+0

Но как актер A может отправить M1, M2 и M3 без ожидания любой из них? В этом случае вы делаете что-то особенное с потоками, верно? В противном случае я бы предположил, что, поскольку M1 следует обрабатывать до того, как A может отправить M2, это не имеет значения. –

ответ

4

Орлеан не гарантирует порядок сообщения доставить актеров (если вы отправить их по одному за раз, как вы уже со скидкой):

https://github.com/akka/akka-meta/blob/master/ComparisonWithOrleans.md#messaging-guarantees

Однако можно управлять заказом если вы «повторно с использованием потоков в Орлеане (с правильным поставщиком основного потока):

http://dotnet.github.io/orleans/Orleans-Streams/

Смежные вопросы