Я использую Axon4 с загрузкой Spring.Создана простая сага.Хорошо работает во время полета в JVM.Однако после перезапуска Saga снова запускается.
Попытка сохранения в JpaSagaStore для сохранения не сработала.Ниже приведен фрагмент кода.Пожалуйста, помогите.
@Configuration
public class AxonConfig {
@PersistenceContext
private EntityManager entityManager;
@Bean
public SagaStore sagaStore() {
return JpaSagaStore.builder().entityManagerProvider(new SimpleEntityManagerProvider(entityManager)).build();
}
}
@Saga(sagaStore = "sagaStore")
@Slf4j
public class OrderSaga {
@Autowired
private transient CommandGateway commandGateway;
private UUID orderId;
private boolean passed;
@StartSaga
@SagaEventHandler(associationProperty = "orderId")
public void on(OrderPlacedEvt evt) {
log.debug("handling {}", evt);
if (!passed) {
orderId = evt.getOrderId();
UUID shipmentId = UUID.randomUUID();
associateWith("shipmentId", shipmentId.toString());
commandGateway.send(new PrepareShipmentCmd(shipmentId, evt.getDestination()));
}
}
@SagaEventHandler(associationProperty = "shipmentId")
public void on(ShipmentPreparedEvt evt) {
log.debug("handling {}", evt);
log.debug("orderId: {}", orderId);
commandGateway.send(new RegisterShipmentForOrderPreparedCmd(orderId, evt.getShipmentId()));
}
@SagaEventHandler(associationProperty = "shipmentId")
@EndSaga
public void on(ShipmentArrivedEvt evt) {
log.debug("handling {}", evt);
log.debug("orderId: {}", orderId);
commandGateway.send(new RegisterShipmentForOrderArrivedCmd(orderId, evt.getShipmentId()));
}
}