Сначала я спросил Обработка асинхронных обратных вызовов с поддержкой базы данных в Grails, но я С тех пор я провел много исследований, поэтому я задаю более острый вопрос ...
Совсем недавно я пытался использовать Events API в плагине ядра платформы, но оптимистичные и пессимистичные блокировки, управление сессиями и транзакциями в сочетании с недетерминированными обратными вызовами сделали невозможным обеспечение надежной и стабильной работы. Я все еще гоняюсь за своим хвостом.
Итак, я рассматриваю другой подход, но у меня недостаточно опыта работы с GPars и Актерами, чтобы понять, правильно ли я подхожу к этому. Что я думаю сделать, так это создать одного Актера, который отвечает за ВСЕ обновления базы данных. Единственный способ записать что-либо в базу данных — это отправить сообщение этому единственному Актеру. Все асинхронные обратные вызовы будут выполнять свою логику, но все, что связано с записью в базу данных, будет отправлено в DatabaseActor.
Это сумасшедшее узкое место? Это разумная архитектура?