I am creating a new event handler to create a report. The requirement is that I start listening for certain event after a certain date which is pretty much close to the end of our 100M events. I am using the following registration for the handler:
configurer.registerTrackingEventProcessor(processingGroup, org.axonframework.config.Configuration::eventStore, conf -> TrackingEventProcessorConfiguration.forParallelProcessing(projector.getMaxThreads()) .andBatchSize(projector.getBatchSize()) .andInitialTrackingToken(streamableMessageSource -> streamableMessageSource .createTokenAt(projector.getEventReplayStartAt()))) .registerHandlerInterceptor(processingGroup, configuration -> new EventHandlerLoggingInterceptor()) .registerErrorHandler(processingGroup, conf -> projector.newErrorHandler());
This actually does the job but unfortunately it took around 12 hours to “skip” to the events that I need to process. I understand that I can use more threads and a larger batch size to process more events, but it seems to be very inefficient to have to read and skip all the events until the very end. Is there a way that you can recommend me to proceed tackling this? I was thinking if there is a way to just “skip” to a particular event (like a global event index) without reading from the start would be great.