Package com.gruelbox.transactionoutbox
Class TransactionOutbox.TransactionOutboxBuilder
- java.lang.Object
-
- com.gruelbox.transactionoutbox.TransactionOutbox.TransactionOutboxBuilder
-
- Enclosing interface:
- TransactionOutbox
public abstract static class TransactionOutbox.TransactionOutboxBuilder extends Object
Builder forTransactionOutbox
.
-
-
Field Summary
Fields Modifier and Type Field Description protected Duration
attemptFrequency
protected int
blockAfterAttempts
protected javax.validation.ClockProvider
clockProvider
protected int
flushBatchSize
protected Boolean
initializeImmediately
protected Instantiator
instantiator
protected TransactionOutboxListener
listener
protected org.slf4j.event.Level
logLevelTemporaryFailure
protected Persistor
persistor
protected Duration
retentionThreshold
protected Boolean
serializeMdc
protected Submitter
submitter
protected TransactionManager
transactionManager
-
Constructor Summary
Constructors Modifier Constructor Description protected
TransactionOutboxBuilder()
-
Method Summary
-
-
-
Field Detail
-
transactionManager
protected TransactionManager transactionManager
-
instantiator
protected Instantiator instantiator
-
submitter
protected Submitter submitter
-
attemptFrequency
protected Duration attemptFrequency
-
blockAfterAttempts
protected int blockAfterAttempts
-
flushBatchSize
protected int flushBatchSize
-
clockProvider
protected javax.validation.ClockProvider clockProvider
-
listener
protected TransactionOutboxListener listener
-
persistor
protected Persistor persistor
-
logLevelTemporaryFailure
protected org.slf4j.event.Level logLevelTemporaryFailure
-
serializeMdc
protected Boolean serializeMdc
-
retentionThreshold
protected Duration retentionThreshold
-
initializeImmediately
protected Boolean initializeImmediately
-
-
Method Detail
-
transactionManager
public TransactionOutbox.TransactionOutboxBuilder transactionManager(TransactionManager transactionManager)
- Parameters:
transactionManager
- ProvidesTransactionOutbox
with the ability to start, commit and roll back transactions as well as interact with running transactions started outside.- Returns:
- Builder.
-
instantiator
public TransactionOutbox.TransactionOutboxBuilder instantiator(Instantiator instantiator)
- Parameters:
instantiator
- Responsible for describing a class as a name and creating instances of that class at runtime from the name. SeeInstantiator
for more information. Defaults toInstantiator.usingReflection()
.- Returns:
- Builder.
-
submitter
public TransactionOutbox.TransactionOutboxBuilder submitter(Submitter submitter)
- Parameters:
submitter
- Used for scheduling background work. If no submitter is specified,TransactionOutbox
will useSubmitter.withDefaultExecutor()
. SeeSubmitter.withExecutor(Executor)
for more information on designing bespoke submitters for remoting.- Returns:
- Builder.
-
attemptFrequency
public TransactionOutbox.TransactionOutboxBuilder attemptFrequency(Duration attemptFrequency)
- Parameters:
attemptFrequency
- How often tasks should be re-attempted. This should be balanced withflushBatchSize
and the frequency with whichTransactionOutbox.flush()
is called to achieve optimum throughput. Defaults to 2 minutes.- Returns:
- Builder.
-
blockAfterAttempts
public TransactionOutbox.TransactionOutboxBuilder blockAfterAttempts(int blockAfterAttempts)
- Parameters:
blockAfterAttempts
- how many attempts a task should be retried before it is permanently blocked. Defaults to 5.- Returns:
- Builder.
-
flushBatchSize
public TransactionOutbox.TransactionOutboxBuilder flushBatchSize(int flushBatchSize)
- Parameters:
flushBatchSize
- How many items should be attempted in each flush. This should be balanced withattemptFrequency
and the frequency with whichTransactionOutbox.flush()
is called to achieve optimum throughput. Defaults to 4096.- Returns:
- Builder.
-
clockProvider
public TransactionOutbox.TransactionOutboxBuilder clockProvider(javax.validation.ClockProvider clockProvider)
- Parameters:
clockProvider
- TheClock
source. Generally best left alone except when testing. Defaults to the system clock.- Returns:
- Builder.
-
listener
public TransactionOutbox.TransactionOutboxBuilder listener(TransactionOutboxListener listener)
- Parameters:
listener
- Event listener. Allows client code to react to tasks running, failing or getting blocked.- Returns:
- Builder.
-
persistor
public TransactionOutbox.TransactionOutboxBuilder persistor(Persistor persistor)
- Parameters:
persistor
- The methodTransactionOutbox
uses to interact with the database. This encapsulates allTransactionOutbox
interaction with the database outside transaction management (which is handled by theTransactionManager
). Defaults to a multi-platform SQL implementation that should not need to be changed in most cases. If re-implementing this interface, read the documentation onPersistor
carefully.- Returns:
- Builder.
-
logLevelTemporaryFailure
public TransactionOutbox.TransactionOutboxBuilder logLevelTemporaryFailure(org.slf4j.event.Level logLevelTemporaryFailure)
- Parameters:
logLevelTemporaryFailure
- The log level to use when logging temporary task failures. Includes a full stack trace. Defaults toWARN
level, but you may wish to reduce it to a lower level if you consider warnings to be incidents.- Returns:
- Builder.
-
serializeMdc
public TransactionOutbox.TransactionOutboxBuilder serializeMdc(Boolean serializeMdc)
- Parameters:
serializeMdc
- Determines whether to include any Slf4jMDC
(Mapped Diagnostic Context) in serialized invocations and recreate the state in submitted tasks. Defaults to true.- Returns:
- Builder.
-
retentionThreshold
public TransactionOutbox.TransactionOutboxBuilder retentionThreshold(Duration retentionThreshold)
- Parameters:
retentionThreshold
- The length of time that any request with a unique client id will be remembered, such that if the same request is repeated within the threshold period,AlreadyScheduledException
will be thrown.- Returns:
- Builder.
-
initializeImmediately
public TransactionOutbox.TransactionOutboxBuilder initializeImmediately(boolean initializeImmediately)
- Parameters:
initializeImmediately
- If true,TransactionOutbox.initialize()
is called automatically on creation (this is the default). Set to false in environments where structured startup means that the database should not be accessed until later.- Returns:
- Builder.
-
build
public abstract TransactionOutbox build()
Creates and initialises theTransactionOutbox
.- Returns:
- The outbox implementation.
-
-