Skip to content

Commit 05dc246

Browse files
committed
Allow TransactionOutbox#scheduler ThreadFactory customization
1 parent 1253bb7 commit 05dc246

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

transactionoutbox-core/src/main/java/com/gruelbox/transactionoutbox/TransactionOutbox.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.time.Clock;
44
import java.time.Duration;
55
import java.util.concurrent.Executor;
6+
import java.util.concurrent.ThreadFactory;
67
import java.util.function.Supplier;
78
import lombok.ToString;
89
import org.slf4j.MDC;
@@ -152,6 +153,7 @@ abstract class TransactionOutboxBuilder {
152153
protected Boolean serializeMdc;
153154
protected Duration retentionThreshold;
154155
protected Boolean initializeImmediately;
156+
protected ThreadFactory schedulerThreadFactory;
155157

156158
protected TransactionOutboxBuilder() {}
157159

@@ -298,6 +300,15 @@ public TransactionOutboxBuilder initializeImmediately(boolean initializeImmediat
298300
return this;
299301
}
300302

303+
/**
304+
* @param schedulerThreadFactory The {@link ThreadFactory} that will be used to build the scheduler executor.
305+
* @return Builder.
306+
*/
307+
public TransactionOutboxBuilder schedulerThreadFactory(ThreadFactory schedulerThreadFactory) {
308+
this.schedulerThreadFactory = schedulerThreadFactory;
309+
return this;
310+
}
311+
301312
/**
302313
* Creates and initialises the {@link TransactionOutbox}.
303314
*

transactionoutbox-core/src/main/java/com/gruelbox/transactionoutbox/TransactionOutboxImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ final class TransactionOutboxImpl implements TransactionOutbox, Validatable {
5151
private final Duration retentionThreshold;
5252
private final AtomicBoolean initialized = new AtomicBoolean();
5353
private final ProxyFactory proxyFactory = new ProxyFactory();
54-
private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
54+
private final ScheduledExecutorService scheduler;
5555

5656
@Override
5757
public void validate(Validator validator) {
@@ -435,7 +435,8 @@ public TransactionOutboxImpl build() {
435435
Utils.firstNonNull(listener, () -> TransactionOutboxListener.EMPTY),
436436
serializeMdc == null || serializeMdc,
437437
validator,
438-
retentionThreshold == null ? Duration.ofDays(7) : retentionThreshold);
438+
retentionThreshold == null ? Duration.ofDays(7) : retentionThreshold,
439+
schedulerThreadFactory == null? Executors.newSingleThreadScheduledExecutor() : Executors.newSingleThreadScheduledExecutor(schedulerThreadFactory));
439440
validator.validate(impl);
440441
if (initializeImmediately == null || initializeImmediately) {
441442
impl.initialize();

0 commit comments

Comments
 (0)