(Изначально входил в GitHub, но думал, что перенесу его сюда для всех с тем же вопросом и помогу команде разработчиков оставить вопросы в одном месте.)
Я не уверен, что это мое невежествос фреймворком или фактической проблемой, пожалуйста, потерпите меня, так как мне удалось найти очень мало документации по Axon 4 в отношении воспроизведения событий.
Сценарий:
@Component
@ProcessingGroup("projections")
public class AddEventHandler {
@EventHandler
public void on(AddEvent addEvent, ReplayStatus replayStatus){
}
@ResetHandler
public void onReset() { // will be called before replay starts
// do pre-reset logic, like clearing out the Projection table for a clean slate
// this does not get executed
}
}
@Configuration
public class AxonConfig {
@Autowired
private EventProcessingModule eventProcessingModule;
@Autowired
public void configureProcessors(EventProcessingConfiguration configuration) {
configuration
.eventProcessorByProcessingGroup("projections",
TrackingEventProcessor.class)
.ifPresent(trackingEventProcessor -> {
trackingEventProcessor.shutDown();
trackingEventProcessor.resetTokens();
trackingEventProcessor.start();
});
}
}
Это быловзято из Воспроизведение документации событий
Контент ifPresent никогда не выполняется при запуске приложения, поэтому токены никогда не сбрасываются.Я могу вручную принудительно воспроизвести события, удалив токен.Упомянутая выше конфигурация является единственной конфигурацией, которую я изменил, все остальное выполняется за пределами автоконфигурации.
Хранилище токенов - это Microsoft SQL Server, и все взаимодействие, которое я вижу там, кажется нормальным (события сохраняются, владение токеномобновляется, когда приложение останавливается и т. д.).
При проверке EventProcessingConfiguration во время выполнения свойство eventProcessors является пустым, так как это свойство processingGroupAssignments, что позволяет мне полагать, что аннотации ProcessingGroup обрабатываются после запуска конфигурации Autowired,таким образом, ifPresent никогда не выполнит код, определенный выше.
Информация о версии: Spring Boot Starter: 2.1.2, Axon Starter: 4.0.3