Axon Saga (4.0) 不保留跨 @SagaEventHandler 方法的私有属性

Axon Saga (4.0) does not preserve private properties across @SagaEventHandler methods

我有这个代码:

@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 event)设置私有字段idstate .
但是在第二个 @SagaEventHandler on(ActionDoneEvent event) 两个属性都是空的。

我很确定调用被路由到同一个传奇(saga_entry 中唯一的记录在第二次方法调用后被删除)

你能帮我看看哪里出了问题吗?

我对 saga 没有特殊配置,使用 AxonServer 和 Spring boot

我找到了解决方案,问题出在关联属性。

正确的事件处理程序是

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