Я столкнулся с проблемами при попытке использовать CompletableFuture с Axon. Например:
CompletableFuture future = CompletableFuture.supplyAsync(() -> {
log.info("Start processing target: {}", target.toString());
return new Event();
}, threadPool);
future.thenAcceptAsync(event -> {
log.info("Send Event");
AggregateLifecycle.apply(event);
}, currentExecutor);
в thenAcceptAsync - AggregateLifecycle.apply (событие) имеет неожиданное поведение. Некоторые из моих обработчиков @EventSourcingHandler начинают обрабатывать событие дважды. Кто-нибудь знает, как это исправить?
Я читал документы, и все, что у меня есть, это:
В большинстве случаев DefaultUnitOfWork предоставит вам необходимую функциональность. Ожидается, что обработка будет происходить в одном потоке.
Итак, кажется, я должен как-то использовать методы CurrentUnitOfWork.get / set, но все еще не могу понять Axon API.