Axon Saga (4.0) не сохраняет приватные свойства в методах @SagaEventHandler - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть этот код:

@Saga
@Slf4j
public class ActionsSaga2 {

    @Autowired
    transient CommandGateway commandGateway;

    @Autowired
    transient ActionService actionService;

    String id;
    ApplicationState state;

    @StartSaga
    @SagaEventHandler(associationProperty = "applicationId")
    public void on(ApplicationCreatedEvent event) {
        id = event.getApplicationId();
        state = event.getState();
        commandGateway.send(ScheduleActionCommand.builder()
                                    .applicationId(event.getApplicationId())
                                    .actionId(id)
                                    .targetState(event.getState())
                                    .build());

    }

    @EndSaga
    @SagaEventHandler(associationProperty = "applicationId")
    public void on(ActionDoneEvent event) {
        assert id != null;
    }

}

Первый @ SagaEventHandler on (событие ApplicationCreatedEvent) устанавливает закрытые поля id и состояние .
Но во втором @ SagaEventHandler on (событие ActionDoneEvent) оба свойства имеют значение null.

Я почти уверен, что вызовы направляются в одну и ту же сагу (единственная записьв saga_entry, который удаляется после второго вызова метода)

Не могли бы вы помочь мне, в чем проблема?

У меня нет специальной конфигурации для саги, используя AxonServer и Spring boot

1 Ответ

0 голосов
/ 21 февраля 2019

Я нашел решение, проблема была в свойстве ассоциации.

правильный обработчик события

@EndSaga
    @SagaEventHandler(associationProperty = "applicationId", keyName = "id")
    public void on(ActionDoneEvent event) {
        assert id != null;
    }
...