Как предотвратить переупорядочение сообщений с помощью PriorityExecutorBasedEventDrivenDispatcher? - PullRequest
1 голос
/ 02 декабря 2011

Мой актер Akka FSM нуждается в определении приоритетов сообщений в зависимости от типа.А именно, субъект получает сообщения в одной из следующих категорий в порядке приоритетов:

  1. Сообщения, которые инициируют переходы состояний
  2. Сообщения, которые запрашивают текущее состояние
  3. Сообщения, которые заставляют актера выполнять какую-то работу («WorkMsg»)

В соответствии с документами Akka, сообщения могут иметь приоритет в соответствии с приведенным выше списком с помощью PriorityExecutorBasedEventDrivenDispatcher, содержащего PriorityGenerator.Я реализовал FSM-актера с этим диспетчером, и он хорошо работает.

Проблема в том, что этот диспетчер также изменяет порядок WorkMsgs, а это не то, что мне нужно.

WorkMsgs содержат метку времени и отправляются субъекту FSM, отсортированному по этой метке времени.Когда субъект FSM обрабатывает WorkMsgs, он отбрасывает WorkMsgs, которые старше, чем предыдущий WorkMsg.Поэтому, если они переупорядочиваются, я теряю данные.

Без PriorityExecutorBasedEventDrivenDispatcher WorkMsgs не переупорядочиваются, но тогда приоритеты в приведенном выше списке не выполняются.

Как сохранить приоритеты всписок выше, при этом предотвращая переупорядочение сообщений с одинаковым приоритетом?

1 Ответ

2 голосов
/ 02 декабря 2011

A назначение приоритета прокси-субъекту может определять приоритетность сообщений, отправляемых вашему рабочему субъекту.Вам нужно будет отсортировать и сохранить входящие сообщения, а также реализовать логику приоритетов.Кроме того, работник должен будет отвечать прокси-серверу после каждого сообщения, чтобы он знал, что он готов к дальнейшей работе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...