Можно ли принудительно очистить домен, сохраняемый в службе?

При сохранении объекта домена в службе с flush: true при сохранении домена объект не сохраняется до того, как мне придется его использовать.

Domain domain = new Domain(property: something.toString()).save(failOnError: true, flush: true)

Я не уверен, как принудительно завершить сеанс гибернации в любой из служб, которые я использую.

Для некоторого контекста я делаю вызов API для службы API, которая переходит к другой службе, где я сохраняю домен, затем возвращаюсь к службе API, затем добавляю строку в очередь RabbitMQ, затем возвращаю пользователю 200OK, Но поскольку домен не сохраняется во втором сервисе, когда элемент добавляется в очередь, rabbitMQ обрабатывает сообщение перед сохранением домена.

РЕДАКТИРОВАТЬ:

Мое текущее исправление:

Контроллер API:

def apiActionCreate()
{
   Map returnMap = apiService.createAction(params, request)
   rabbitSend staticQueue, [id: returnMap.id.toString()]
}

API сервис:

Map createAction(GrailsParameterMap params, HttpServletRequest request)
{
   //do some logic related to a related domain
   seperateService.someAction(domain.id)
}

Сервис, где я сохраняю домен:

Map someAction(UUID id)
{
   Domain domain = new Domain(property: something.toString()).save(failOnError: true, flush: true)
}

1 ответ

Вы можете создать транзакцию, которая будет сохранена в DDBB, когда закончите.

MyDomain.withTransaction{
        somecode()
}
Другие вопросы по тегам