Axonframework 3 рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд╕реНрдиреИрдкрд╢реЙрдЯ, рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░

Axonframework рдврд╛рдВрдЪрд╛ рдЕрд╡рд▓реЛрдХрди


Axonframework рдПрдХ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ рдХрдИ рдбрд┐рдЬрд╛рдЗрди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдФрд░ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ:

CQRS - рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ
рдИрд╡реЗрдВрдЯ рд╕реЛрд░реНрд╕рд┐рдВрдЧ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдИрд╡реЗрдВрдЯ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
DDD рдПрдЧреНрд░реАрдЧреЗрдЯ - рдПрдХ рдбреЛрдореЗрди рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рд░рд╛рдЬреНрдп рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ

рдШрдЯрдирд╛рдУрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЖрд╡реЗрджрди рдХреА рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдХрдорд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, Axonframework рдЖрдкрдХреЛ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдЗрд╡реЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдШрдЯрдирд╛рдУрдВ (рдбреЛрдореЗрди рдЗрд╡реЗрдВрдЯ) рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИред

рдШрдЯрдирд╛ рд╕реНрдиреИрдкрд╢реЙрдЯ


рд╕реНрдиреИрдкрд╢реЙрдЯ рдИрд╡реЗрдВрдЯ - рдпреЗ рдХрдИ рдИрд╡реЗрдВрдЯ (рдбреЛрдореЗрди рдИрд╡реЗрдВрдЯ) рдХреЗ рдкрд░рд┐рдгрд╛рдореА рдорд╛рди рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдПрдЧреНрд░реАрдЧреЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ( рдЫрд╡рд┐ 1 ), рд╣рдо рд╣рд░ рджреЛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдереНрд░реЗрд╢реЛрд▓реНрдб = 2 - рдЙрджрд╛рд╣рд░рдг рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП)ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЬрдм рджреЛ рдИрд╡реЗрдВрдЯ рдпреВрдирд┐рдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдкрд┐рдЫрд▓реЗ рджреЛ рдИрд╡реЗрдВрдЯ рдХреЗ рдкрд░рд┐рдгрд╛рдореА рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд┐рддреНрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдЪрд┐рддреНрд░ 1. рджреЛ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯред (рджрд╣рд▓реАрдЬ = реи)

рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг ( рдЫрд╡рд┐ 2 ) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рднреА 2 рдХреА рд╕реАрдорд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рд░ рджреЛ рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдЬрдм 2 рдИрд╡реЗрдВрдЯ рд░рд╛рдЬреНрдп рдХреА рдЗрдХрд╛рдИ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЪрд┐рддреНрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреНрдп 2 рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдпреВрдирд┐рдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ рдФрд░ рдПрдХ рдирдИ рддрд╕реНрд╡реАрд░ рдирд╣реАрдВ рдмрдирддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИред


рдЕрдВрдЬреАрд░ред 2 рдПрдХ рддрд╕реНрд╡реАрд░ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо (рджрд╣рд▓реАрдЬ = 2)

рдЙрддреНрдкрд╛рджрдХрддрд╛


рдПрдХ рддрд░рдл, рдЬрдм рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреА рдПрдХ рд▓рдВрдмреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрдорд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпреВрдирд┐рдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдЖрдк рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдпреВрдирд┐рдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рдЗрди рджреЛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрддреБрд▓рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЕрдВрдЬреАрд░ред 3 рд╕реНрдиреИрдкрд╢реЙрдЯ рд▓реЗрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рджрд░реНрд╢рди


рдЪрд┐рддреНрд░ 4 рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди (рджрд╣рд▓реАрдЬ = 3)

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдереНрд░реЗрдб рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╢рд┐рдбреНрдпреВрд▓рд╕реИрдкрд╢реЙрдЯ () рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдХрд╛рдмрд▓рд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ (рдЪрд┐рддреНрд░ 4 / рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рджреЗрдЦреЗрдВ)ред

рдиреАрдЪреЗ ThreadPoolExecutor (...) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдорд╛рд░рд╛ рдЧреНрд░рд╛рд╣рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдордВрджреА рдФрд░ рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рд╕рдордп рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдЧрд╛ред

рдХреЛрдб


рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред рд╕рдордЧреНрд░ рдПрдиреЛрдЯреЗрд╢рди рдЙрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдирд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреНрд▓рд╛рд╕ рдХреЗ рдХреЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреНрд▓рд╛рд╕ рдореЗрдВ, рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╣рд▓реАрдЬ, рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА, рдЖрджрд┐ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

AxonConfig.java

@Autowired private EventStore eventStore; @Bean public SpringAggregateSnapshotterFactoryBean springAggregateSnapshotterFactoryBean() { return new SpringAggregateSnapshotterFactoryBean(); } @Bean public SpringAggregateSnapshotter snapshotter(ParameterResolverFactory parameterResolverFactory, EventStore eventStore, TransactionManager transactionManager) { Executor executor = Executors.newFixedThreadPool(10); return new SpringAggregateSnapshotter(eventStore, parameterResolverFactory, executor, transactionManager); } @Bean("reservationRepository") public EventSourcingRepository<Reservation> reservationRepository(Snapshotter snapshotter, ParameterResolverFactory parameterResolverFactory) { return new EventSourcingRepository<Reservation>(reservationAggregateFactory(), eventStore, parameterResolverFactory, new EventCountSnapshotTriggerDefinition(snapshotter, 50)); } @Bean(name = "reservationAggregateFactory") public AggregateFactory<Reservation> reservationAggregateFactory() { SpringPrototypeAggregateFactory<Reservation> aggregateFactory = new SpringPrototypeAggregateFactory<>(); aggregateFactory.setPrototypeBeanName("reservation"); return aggregateFactory; } 

Reservation.java

 @Aggregate(repository = "reservationRepository") public class Reservation { //тАж } 

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ Google рд╕рдореВрд╣ рдЪрд░реНрдЪрд╛ рдзрд╛рдЧреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЪрд░реНрдЪрд╛рдПрдБ рд╣реИрдВред

рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рд▓рд┐рдП рдереНрд░реЗрд╢реЛрд▓реНрдб рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ



5.1ред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рддрд░реАрдХрд╛

рдЖрдЗрдП рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ рдЬреЛ рдИрд╡реЗрдВрдЯрд▓реАрд╕реНрдЯрдирд░ рд╡рд░реНрдЧ рдореЗрдВ рдпреВрдирд┐рдЯ рдкрд░ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдлрд┐рд░ рд╣рдо рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпреВрдирд┐рдЯ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреА рдФрд╕рдд рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рджрд╣рд▓реАрдЬ рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рддрдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрднреА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИред

5.2ред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рддрд░реАрдХрд╛

рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ MongoDB рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

 > docker exec -it <container-id> mongo > show dbs admin 0.000GB axonframework 0.000GB local 0.000GB > use axonframework switched to db axonframework > show collections domainevents sagas snapshotevents > db.domainevents.findOne() { тАЬ_idтАЭ : ObjectId(тАЬ5bb1dc8d4446d63bcc765febтАЭ), тАЬaggregateIdentifierтАЭ : тАЬb1e320d5тАУ58aa-4b9b-a667-aa724900592fтАЭ, тАЬtypeтАЭ : тАЬReservationтАЭ, тАЬsequenceNumberтАЭ : NumberLong(0), тАЬserializedPayloadтАЭ : тАЬ<com.example.ReservationStarted><reservationIdentifier>b1e320d5тАУ58aa-4b9b-a667-aa724900592f</reservationIdentifier><duration resolves-to=\тАЭjava.time.Ser\тАЭ><byte>1</byte><long>2400</long><int>0</int></duration></com.example.ReservationStarted>тАЭ, тАЬtimestampтАЭ : тАЬ2018тАУ10тАУ01T08:36:29.434ZтАЭ, тАЬpayloadTypeтАЭ : тАЬcom.example.ReservationStartedтАЭ, тАЬpayloadRevisionтАЭ : null, тАЬserializedMetaDataтАЭ : тАЬ<meta-data><entry><string>traceId</string><string>b090b86a-ec89тАУ484b-ae9f-e4fa0f9bcd39</string></entry><entry><string>correlationId</string><string>b090b86a-ec89тАУ484b-ae9f-e4fa0f9bcd39</string></entry></meta-data>тАЭ, тАЬeventIdentifierтАЭ : тАЬf324f021тАУ50b4тАУ4e91тАУ84d0-f8c4425f3eb9тАЭ } 

рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдШрдЯрдирд╛ рдореЗрдВ рдПрдХ рд╕рдореБрдЪреНрдЪрдпрдмреЛрдзрдХ рдХреНрд╖реЗрддреНрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ:

 db.domainevents.aggregate([ {$group: {_id: "$aggregateIdentifier", count: {$sum: 1} } }, {$sort : {count : -1} } ]); { "_id" : "0d84afd1-f199-45c8-b50e-7d9ebfa4c8fb", "count" : 136 } { "_id" : "49de7c32-38ea-435a-b837-ccdb61ec0baa", "count" : 136 } { "_id" : "12957b0b-af05-47c4-a3d8-968b75cf9ffb", "count" : 136 } { "_id" : "97a24559-ee3a-43e7-a6be-1eb6840b662a", "count" : 132 } { "_id" : "b6aeb1af-0620-4b02-8de3-c2446c2f7d83", "count" : 132 } { "_id" : "b385aaf4-3338-489f-8d1b-4600d5e088b9", "count" : 132 } { "_id" : "5970327f-9551-4945-94e9-3844c0cd3543", "count" : 132 } ... { "_id" : "0182239h-3948-3334-98t5-9643j4ld8346", "count" : 1 } 

рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛ рдХреЛ рдФрд╕рдд рд╕реЗ рдиреАрдЪреЗ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЛ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, 50 рдХрд╛ рдорд╛рди рдареАрдХ рд╣реИред

рд╕реНрдиреИрдкрд╢реЙрдЯ рд╕рдХреНрд░рд┐рдпрдг рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛


 > mongo > show dbs admin 0.000GB axonframework 0.000GB local 0.000GB > use axonframework > show collections domainevents sagas snapshotevents > db.domainevents.count() 515 > db.snapshotevents.count() 7 

рдпрджрд┐ рд╕реНрдиреИрдкрд╢реЙрдЯреЛрдЯреЗрдВрдЯреНрд╕ рд╕рдВрдЧреНрд░рд╣ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕реНрдиреИрдкрд╢реЙрдЯ рд╣реИрдВ, рддреЛ рд╕реНрдиреИрдкрд╢реЙрдЯ рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдЕрдиреНрдп рд╕реНрдиреИрдкрд╢реЙрдЯ рд╡рд┐рдХрд▓реНрдк


рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╕реНрдиреИрдкрд╢реЙрдЯ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдЕрдиреНрдп рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  • рдЕрдВрддрд┐рдо рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рдмрд╛рдж рд╕реЗ рдЙрддреНрдкрдиреНрди рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ
  • рдпреВрдирд┐рдЯ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЯрд╛рдЗрдо рдЖрдЙрдЯ рд╣реЛ рдЧрдпрд╛
  • рд╕рдордп рдореЗрдВ рджреЗрд░реА, рдЖрджрд┐ред рдЖрджрд┐

Source: https://habr.com/ru/post/hi435522/


All Articles