we currently use Axon Framework 4.5.3 in a Spring Boot application with a JPA Event Store.
There is only one instance of the application running at the same time (no clustering).
In our application events happen rarely… we do not have hundreds of events each second… it’s more like one event every minute.
There are several TrackingEventProcessors, each of them is configured to have 4 segments.
As we have a lot of event processors we experienced a lot of interaction with the database as every token for every segment is updated every second.
Example: We have 20 Processors, each has 4 segments → 80 update queries per second although the systems idles (aka no events occur).
What we did to reduce the load:
- We increased the JpaTokenStores’ claimTimeout from 10 to 30 seconds.
- We increased the TrackingEventProcessors’ EventAvailabilityTimeout from 1 to 20 seconds.
So far we did not experience any bad effects. Events are handled immediately and the token is updated every 20 seconds instead of every second… meaning that we reduced the number of update queries by 95%.
This change might have some impact when running in a clustered environment as a node claims a token for up to 30 seconds instead of 10 seconds.
But do you see any negative consequences in a single node environment?
Thanks for the answers!