2016-02-15 5 views
2

Я занимаюсь созданием приложения для интеллектуального анализа данных. Я использую несколько участников для запроса источника данных, а затем я вносил изменения в текстовые файлы. Однако несколько шахтеров могут получать данные на одном объекте. Это приводит к условиям гонки, которые могут привести к дублированию данных журнала и другим аномалиям в файлах журналов.Scala Software Transactional Memory и Акка Актеры/Агенты

Чтобы предотвратить это, я хочу добавить один Finalizer Actor и использовать STM. У меня будут участники Miner, которые отправляют сущности в общую память и отправляют сообщение в Finalizer, чтобы уведомить его об обработке этого объекта. Имея STM, если объект обновляется другим Miner во время транзакции Finalizer, Finalizer прекратит транзакцию и начнет заново. Когда Finalizer успешно считывает (и удаляет, для GC) объект, он отправляет сообщение в Logger. Таким образом, актер Logger не будет регистрировать дубликаты записей.

Однако: http://doc.akka.io/docs/akka/2.4.1/scala/agents.html

агентов, участвующих в ограждающих STM транзакции является устаревшей особенностью 2.3.

Если агенты и STM устарели, то какое рекомендуемое решение для общего состояния актера?

ответ

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