public static class JdbcEventStorageEngine.Builder extends BatchingEventStorageEngine.Builder
JdbcEventStorageEngine.
The following configurable fields have defaults:
EventUpcaster defaults to an NoOpEventUpcaster.PersistenceExceptionResolver is defaulted to a JdbcSQLErrorCodesResolversnapshotFilter defaults to a SnapshotFilter.allowAll() instance.batchSize defaults to an integer of size 100.dataType is defaulted to the byte[] type.EventSchema defaults to an EventSchema() call.maxGapOffset defaults to an integer of size 10000.lowestGlobalSequence defaults to a long of size 1.gapTimeout defaults to an integer of size 60000 (1 minute).gapCleaningThreshold defaults to an integer of size 250.extendedGapCheckEnabled defaults to true.createTokenAt defaults to JdbcEventStorageEngineStatements.createTokenAt(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema, java.time.Instant).appendEvents defaults to JdbcEventStorageEngineStatements.appendEvents(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema, java.lang.Class<?>, java.util.List<? extends org.axonframework.eventhandling.EventMessage<?>>, org.axonframework.serialization.Serializer, org.axonframework.eventsourcing.eventstore.jdbc.statements.TimestampWriter).lastSequenceNumberFor defaults to JdbcEventStorageEngineStatements.lastSequenceNumberFor(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema, java.lang.String).createTailToken defaults to JdbcEventStorageEngineStatements.createTailToken(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema).createHeadToken defaults to JdbcEventStorageEngineStatements.createHeadToken(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema).appendSnapshot defaults to JdbcEventStorageEngineStatements.appendSnapshot(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema, java.lang.Class<?>, org.axonframework.eventhandling.DomainEventMessage<?>, org.axonframework.serialization.Serializer, org.axonframework.eventsourcing.eventstore.jdbc.statements.TimestampWriter).deleteSnapshots defaults to JdbcEventStorageEngineStatements.deleteSnapshots(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema, java.lang.String, long).fetchTrackedEvents defaults to JdbcEventStorageEngineStatements.fetchTrackedEvents(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema, long).cleanGaps defaults to JdbcEventStorageEngineStatements.cleanGaps(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema, java.util.SortedSet<java.lang.Long>).readEventDataForAggregate defaults to JdbcEventStorageEngineStatements.readEventDataForAggregate(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema, java.lang.String, long, int).readSnapshotData defaults to JdbcEventStorageEngineStatements.readSnapshotData(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema, java.lang.String).readEventDataWithoutGaps defaults to JdbcEventStorageEngineStatements.readEventDataWithoutGaps(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema, long, int).readEventDataWithGaps defaults to JdbcEventStorageEngineStatements.readEventDataWithGaps(java.sql.Connection, org.axonframework.eventsourcing.eventstore.jdbc.EventSchema, long, int, java.util.List<java.lang.Long>).
The event and snapshot Serializer, ConnectionProvider and TransactionManager are hard
requirements and as such should be provided.
upcasterChain| Modifier and Type | Method and Description |
|---|---|
JdbcEventStorageEngine.Builder |
appendEvents(AppendEventsStatementBuilder appendEvents)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.appendEvents(Connection, List,
Serializer) en}. |
JdbcEventStorageEngine.Builder |
appendSnapshot(AppendSnapshotStatementBuilder appendSnapshot)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.appendSnapshot(Connection,
DomainEventMessage, Serializer). |
JdbcEventStorageEngine.Builder |
batchSize(int batchSize)
Sets the
batchSize specifying the number of events that should be read at each database access. |
JdbcEventStorageEngine |
build()
Initializes a
JdbcEventStorageEngine as specified through this Builder. |
JdbcEventStorageEngine.Builder |
cleanGaps(CleanGapsStatementBuilder cleanGaps)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.cleanGaps(Connection, SortedSet). |
JdbcEventStorageEngine.Builder |
connectionProvider(org.axonframework.common.jdbc.ConnectionProvider connectionProvider)
Sets the
ConnectionProvider which provides access to a JDBC connection. |
JdbcEventStorageEngine.Builder |
createHeadToken(CreateHeadTokenStatementBuilder createHeadToken)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.createHeadToken(Connection). |
JdbcEventStorageEngine.Builder |
createTailToken(CreateTailTokenStatementBuilder createTailToken)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.createTailToken(Connection). |
JdbcEventStorageEngine.Builder |
createTokenAt(CreateTokenAtStatementBuilder createTokenAt)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.createTokenAt. |
JdbcEventStorageEngine.Builder |
dataType(Class<?> dataType)
Sets the
dataType specifying the serialized type of the Event Message's payload and Meta Data. |
JdbcEventStorageEngine.Builder |
deleteSnapshots(DeleteSnapshotsStatementBuilder deleteSnapshots)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.deleteSnapshots(Connection, String,
long). |
JdbcEventStorageEngine.Builder |
eventSerializer(org.axonframework.serialization.Serializer eventSerializer)
Sets the
Serializer used to serialize and deserialize the Event Message's payload and MetaData with. |
JdbcEventStorageEngine.Builder |
extendedGapCheckEnabled(boolean extendedGapCheckEnabled)
Indicates whether an extra query should be performed to verify for gaps in the
globalSequence larger
than the configured batch size. |
JdbcEventStorageEngine.Builder |
fetchTrackedEvents(FetchTrackedEventsStatementBuilder fetchTrackedEvents)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.fetchTrackedEvents(Connection, long). |
JdbcEventStorageEngine.Builder |
finalAggregateBatchPredicate(Predicate<List<? extends org.axonframework.eventhandling.DomainEventData<?>>> finalAggregateBatchPredicate)
Defines the predicate to use to recognize the terminal batch when reading an event stream for an aggregate.
|
JdbcEventStorageEngine.Builder |
gapCleaningThreshold(int gapCleaningThreshold)
Sets the threshold of number of gaps in a token before an attempt to clean gaps up is taken.
|
JdbcEventStorageEngine.Builder |
gapTimeout(int gapTimeout)
Sets the amount of time until a 'gap' in a TrackingToken may be considered timed out.
|
JdbcEventStorageEngine.Builder |
lastSequenceNumberFor(LastSequenceNumberForStatementBuilder lastSequenceNumberFor)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.lastSequenceNumberFor(Connection,
String). |
JdbcEventStorageEngine.Builder |
lowestGlobalSequence(long lowestGlobalSequence)
Sets the
lowestGlobalSequence specifying the first expected auto generated sequence number. |
JdbcEventStorageEngine.Builder |
maxGapOffset(int maxGapOffset)
Sets the
maxGapOffset specifying the maximum distance in sequence numbers between a missing event
and
the event with the highest known index. |
JdbcEventStorageEngine.Builder |
persistenceExceptionResolver(org.axonframework.common.jdbc.PersistenceExceptionResolver persistenceExceptionResolver)
Sets the
PersistenceExceptionResolver used to detect concurrency exceptions from the backing
database. |
JdbcEventStorageEngine.Builder |
readEventDataForAggregate(ReadEventDataForAggregateStatementBuilder readEventDataForAggregate)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.readEventData(Connection, String, long,
int). |
JdbcEventStorageEngine.Builder |
readEventDataWithGaps(ReadEventDataWithGapsStatementBuilder readEventDataWithGaps)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.readEventDataWithGaps(Connection, long,
int, List). |
JdbcEventStorageEngine.Builder |
readEventDataWithoutGaps(ReadEventDataWithoutGapsStatementBuilder readEventDataWithoutGaps)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.readEventDataWithoutGaps(Connection,
long, int). |
JdbcEventStorageEngine.Builder |
readSnapshotData(ReadSnapshotDataStatementBuilder readSnapshotData)
Set the PreparedStatement to be used on
JdbcEventStorageEngine.readSnapshotData(Connection, String). |
JdbcEventStorageEngine.Builder |
schema(EventSchema schema)
Sets the
EventSchema describing the database schema of event entries. |
JdbcEventStorageEngine.Builder |
snapshotFilter(Predicate<? super org.axonframework.eventhandling.DomainEventData<?>> snapshotFilter)
Deprecated.
in favor of
snapshotFilter(SnapshotFilter) |
JdbcEventStorageEngine.Builder |
snapshotFilter(SnapshotFilter snapshotFilter)
Sets the
snapshotFilter deciding whether to take a snapshot into account. |
JdbcEventStorageEngine.Builder |
snapshotSerializer(org.axonframework.serialization.Serializer snapshotSerializer)
Sets the
Serializer used to serialize and deserialize snapshots. |
JdbcEventStorageEngine.Builder |
transactionManager(org.axonframework.common.transaction.TransactionManager transactionManager)
Sets the
TransactionManager used to manage transactions around fetching event data. |
JdbcEventStorageEngine.Builder |
upcasterChain(org.axonframework.serialization.upcasting.event.EventUpcaster upcasterChain)
Sets the
EventUpcaster used to deserialize events of older revisions. |
protected void |
validate()
Validates whether the fields contained in this Builder are set accordingly.
|
public JdbcEventStorageEngine.Builder createTokenAt(CreateTokenAtStatementBuilder createTokenAt)
JdbcEventStorageEngine.createTokenAt. Defaults to JdbcEventStorageEngineStatements.createTokenAt(Connection, EventSchema, Instant).public JdbcEventStorageEngine.Builder appendEvents(AppendEventsStatementBuilder appendEvents)
JdbcEventStorageEngine.appendEvents(Connection, List,
Serializer) en}. Defaults to JdbcEventStorageEngineStatements.appendEvents(Connection, EventSchema,
Class, List, Serializer, TimestampWriter).public JdbcEventStorageEngine.Builder lastSequenceNumberFor(LastSequenceNumberForStatementBuilder lastSequenceNumberFor)
JdbcEventStorageEngine.lastSequenceNumberFor(Connection,
String). Defaults to JdbcEventStorageEngineStatements.lastSequenceNumberFor(Connection, EventSchema,
String)public JdbcEventStorageEngine.Builder createTailToken(CreateTailTokenStatementBuilder createTailToken)
JdbcEventStorageEngine.createTailToken(Connection). Defaults
to JdbcEventStorageEngineStatements.createTailToken(Connection, EventSchema)public JdbcEventStorageEngine.Builder createHeadToken(CreateHeadTokenStatementBuilder createHeadToken)
JdbcEventStorageEngine.createHeadToken(Connection). Defaults
to JdbcEventStorageEngineStatements.createHeadToken(Connection, EventSchema)public JdbcEventStorageEngine.Builder appendSnapshot(AppendSnapshotStatementBuilder appendSnapshot)
JdbcEventStorageEngine.appendSnapshot(Connection,
DomainEventMessage, Serializer). Defaults to JdbcEventStorageEngineStatements.appendEvents(Connection,
EventSchema, Class, List, Serializer, TimestampWriter)public JdbcEventStorageEngine.Builder deleteSnapshots(DeleteSnapshotsStatementBuilder deleteSnapshots)
JdbcEventStorageEngine.deleteSnapshots(Connection, String,
long). Defaults to JdbcEventStorageEngineStatements.deleteSnapshots(Connection, EventSchema, String,
long)public JdbcEventStorageEngine.Builder fetchTrackedEvents(FetchTrackedEventsStatementBuilder fetchTrackedEvents)
JdbcEventStorageEngine.fetchTrackedEvents(Connection, long).
Defaults to JdbcEventStorageEngineStatements.fetchTrackedEvents(Connection, EventSchema, long)public JdbcEventStorageEngine.Builder cleanGaps(CleanGapsStatementBuilder cleanGaps)
JdbcEventStorageEngine.cleanGaps(Connection, SortedSet).
Defaults to JdbcEventStorageEngineStatements.cleanGaps(Connection, EventSchema, SortedSet)public JdbcEventStorageEngine.Builder readEventDataForAggregate(ReadEventDataForAggregateStatementBuilder readEventDataForAggregate)
JdbcEventStorageEngine.readEventData(Connection, String, long,
int). Defaults to JdbcEventStorageEngineStatements.readEventDataForAggregate(Connection, EventSchema,
String, long, int)public JdbcEventStorageEngine.Builder readSnapshotData(ReadSnapshotDataStatementBuilder readSnapshotData)
JdbcEventStorageEngine.readSnapshotData(Connection, String).
Defaults to JdbcEventStorageEngineStatements.readSnapshotData(Connection, EventSchema, String)public JdbcEventStorageEngine.Builder readEventDataWithoutGaps(ReadEventDataWithoutGapsStatementBuilder readEventDataWithoutGaps)
JdbcEventStorageEngine.readEventDataWithoutGaps(Connection,
long, int). Defaults to JdbcEventStorageEngineStatements.readEventDataWithoutGaps(Connection,
EventSchema, long, int)public JdbcEventStorageEngine.Builder readEventDataWithGaps(ReadEventDataWithGapsStatementBuilder readEventDataWithGaps)
JdbcEventStorageEngine.readEventDataWithGaps(Connection, long,
int, List). Defaults to JdbcEventStorageEngineStatements.readEventDataWithGaps(Connection,
EventSchema, long, int, List)public JdbcEventStorageEngine.Builder snapshotSerializer(org.axonframework.serialization.Serializer snapshotSerializer)
AbstractEventStorageEngine.BuilderSerializer used to serialize and deserialize snapshots.snapshotSerializer in class BatchingEventStorageEngine.BuildersnapshotSerializer - a Serializer used to serialize and deserialize snapshotspublic JdbcEventStorageEngine.Builder upcasterChain(org.axonframework.serialization.upcasting.event.EventUpcaster upcasterChain)
AbstractEventStorageEngine.BuilderEventUpcaster used to deserialize events of older revisions. Defaults to a NoOpEventUpcaster.upcasterChain in class BatchingEventStorageEngine.BuilderupcasterChain - an EventUpcaster used to deserialize events of older revisionspublic JdbcEventStorageEngine.Builder persistenceExceptionResolver(org.axonframework.common.jdbc.PersistenceExceptionResolver persistenceExceptionResolver)
PersistenceExceptionResolver used to detect concurrency exceptions from the backing
database. If the persistenceExceptionResolver is not specified, persistence exceptions are not
explicitly resolved. Defaults to a JdbcSQLErrorCodesResolver.persistenceExceptionResolver in class BatchingEventStorageEngine.BuilderpersistenceExceptionResolver - the PersistenceExceptionResolver used to detect concurrency
exceptions from the backing databasepublic JdbcEventStorageEngine.Builder eventSerializer(org.axonframework.serialization.Serializer eventSerializer)
AbstractEventStorageEngine.BuilderSerializer used to serialize and deserialize the Event Message's payload and MetaData with.eventSerializer in class BatchingEventStorageEngine.BuildereventSerializer - The serializer to serialize the Event Message's payload and MetaData withpublic JdbcEventStorageEngine.Builder finalAggregateBatchPredicate(Predicate<List<? extends org.axonframework.eventhandling.DomainEventData<?>>> finalAggregateBatchPredicate)
The JdbcEventStorageEngine defaults to using an empty batch as the final batch. While this is safe, it is also relatively inefficient. When one can guarantee that no events for an aggregate are every removed from the event store, any batch smaller than the maximum batch size can be seen as the final batch.
finalAggregateBatchPredicate in class BatchingEventStorageEngine.BuilderfinalAggregateBatchPredicate - The predicate that indicates whether a given batch is to be considered
the final batch of an event stream.@Deprecated public JdbcEventStorageEngine.Builder snapshotFilter(Predicate<? super org.axonframework.eventhandling.DomainEventData<?>> snapshotFilter)
snapshotFilter(SnapshotFilter)snapshotFilter deciding whether to take a snapshot into account. Can be set to filter out
specific snapshot revisions which should not be applied. Defaults to a Predicate which returns true regardless.snapshotFilter in class BatchingEventStorageEngine.BuildersnapshotFilter - a Predicate which decides whether to take a snapshot into accountpublic JdbcEventStorageEngine.Builder snapshotFilter(SnapshotFilter snapshotFilter)
AbstractEventStorageEngine.BuildersnapshotFilter deciding whether to take a snapshot into account. Can be set to filter out
specific snapshot revisions which should not be applied. Defaults to SnapshotFilter.allowAll().
Note that SnapshotFilter instances can be combined and should return true if they handle a
snapshot they wish to ignore.
snapshotFilter in class BatchingEventStorageEngine.BuildersnapshotFilter - a SnapshotFilter which decides whether to take a snapshot into accountpublic JdbcEventStorageEngine.Builder batchSize(int batchSize)
BatchingEventStorageEngine.BuilderbatchSize specifying the number of events that should be read at each database access. When
more than this number of events must be read to rebuild an aggregate's state, the events are read in batches
of this size. Defaults to an integer of 100.
Tip: if you use a snapshotter, make sure to choose snapshot trigger and batch size such that a single batch will generally retrieve all events required to rebuild an aggregate's state.
batchSize in class BatchingEventStorageEngine.BuilderbatchSize - an int specifying the number of events that should be read at each database accesspublic JdbcEventStorageEngine.Builder connectionProvider(@Nonnull org.axonframework.common.jdbc.ConnectionProvider connectionProvider)
ConnectionProvider which provides access to a JDBC connection.connectionProvider - a ConnectionProvider which provides access to a JDBC connectionpublic JdbcEventStorageEngine.Builder transactionManager(org.axonframework.common.transaction.TransactionManager transactionManager)
TransactionManager used to manage transactions around fetching event data. Required by
certain databases for reading blob data.transactionManager - a TransactionManager used to manage transactions around fetching event
datapublic JdbcEventStorageEngine.Builder dataType(Class<?> dataType)
dataType specifying the serialized type of the Event Message's payload and Meta Data.
Defaults to the byte[] Class.dataType - a Class specifying the serialized type of the Event Message's payload and Meta Datapublic JdbcEventStorageEngine.Builder schema(EventSchema schema)
EventSchema describing the database schema of event entries. Defaults to EventSchema().schema - the EventSchema describing the database schema of event entriespublic JdbcEventStorageEngine.Builder maxGapOffset(int maxGapOffset)
maxGapOffset specifying the maximum distance in sequence numbers between a missing event
and
the event with the highest known index. If the gap is bigger it is assumed that the missing event will not
be
committed to the store anymore. This event storage engine will no longer look for those events the next time
a batch is fetched. Defaults to an integer of 10000 (JdbcEventStorageEngine.DEFAULT_MAX_GAP_OFFSET.maxGapOffset - an int specifying the maximum distance in sequence numbers between a missing
event and the event with the highest known indexpublic JdbcEventStorageEngine.Builder lowestGlobalSequence(long lowestGlobalSequence)
lowestGlobalSequence specifying the first expected auto generated sequence number. For most
data stores this is 1 unless the table has contained entries before. Defaults to a long of 1
(JdbcEventStorageEngine.DEFAULT_LOWEST_GLOBAL_SEQUENCE).lowestGlobalSequence - a long specifying the first expected auto generated sequence numberpublic JdbcEventStorageEngine.Builder gapTimeout(int gapTimeout)
60000 (JdbcEventStorageEngine.DEFAULT_GAP_TIMEOUT), thus 1 minute.gapTimeout - an int specifying the amount of time until a 'gap' in a TrackingToken may be
considered timed outpublic JdbcEventStorageEngine.Builder gapCleaningThreshold(int gapCleaningThreshold)
250 (JdbcEventStorageEngine.DEFAULT_GAP_CLEANING_THRESHOLD).gapCleaningThreshold - an int specifying the threshold of number of gaps in a token before an
attempt to clean gaps up is takenpublic JdbcEventStorageEngine.Builder extendedGapCheckEnabled(boolean extendedGapCheckEnabled)
globalSequence larger
than the configured batch size. These gaps could trick the storage engine into believing there are no more
events to read, while there are still positions ahead.
This check comes at a cost of an extra query when a batch retrieval yields an empty result. This may increase database pressure when processors are at the HEAD of a stream, as each batch retrieval will result in an extra query, if there are no results.
Note that the extra query checks for the smallest globalSequence, higher than the last one seen. This query can be executed using an index, which should be a relatively cheap query for most databases.
Defaults to true
extendedGapCheckEnabled - whether to enable the "extended gap check". Defaults to true.public JdbcEventStorageEngine build()
JdbcEventStorageEngine as specified through this Builder.JdbcEventStorageEngine as specified through this Builderprotected void validate()
throws org.axonframework.common.AxonConfigurationException
validate in class BatchingEventStorageEngine.Builderorg.axonframework.common.AxonConfigurationException - if one field is asserted to be incorrect according to the Builder's
specificationsCopyright © 2010–2024. All rights reserved.