Модель модели актера: ограничение количества одновременно работающих актеров - PullRequest
3 голосов
/ 30 ноября 2010

Я разработал приложение, основанное на шаблоне модели актера, используя контекстные события приложения весны в качестве способа передачи сообщений.У меня есть три слоя:

  1. выдает событие requesttransactionevent
  2. выдает событие dotransactionevent <- должно ограничивать текущее количество запущенных транзакций </li>
  3. выдает событие donetransactionevent

уровень 1 сохраняет запрос в БД (для требований к распределенному контролю архива) и выдает клиентский запрос, уровень 2 получает его и должен проверить, сколько событий dotransactionevents он выполнил (выдал и не возвратил donetransaction), если он имеетСвободный слот должен выдавать дотранзакцию, и он также объявляется слушателем события донетрансакции.

Какой самый элегантный способ реализовать уровень 2 без синхронного метода или чего-то в этом роде, уловка в том, чтоон должен вытащить параметры запроса, сохраненные layer1, в базу данных для выдачи dotransactionevent.

1 Ответ

0 голосов
/ 04 января 2011

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

...