Skip to content

Commit 18b3ed6

Browse files
committed
Write Listener (Rev 4)
1 parent bf0712d commit 18b3ed6

File tree

2 files changed

+10
-29
lines changed

2 files changed

+10
-29
lines changed

src/main/java/io/nats/client/impl/NatsConnectionWriter.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@
2020
import java.io.IOException;
2121
import java.nio.BufferOverflowException;
2222
import java.time.Duration;
23-
import java.util.concurrent.CancellationException;
24-
import java.util.concurrent.CompletableFuture;
25-
import java.util.concurrent.ExecutionException;
26-
import java.util.concurrent.Future;
23+
import java.util.concurrent.*;
2724
import java.util.concurrent.atomic.AtomicBoolean;
2825
import java.util.concurrent.atomic.AtomicInteger;
2926
import java.util.concurrent.atomic.AtomicReference;
@@ -177,8 +174,7 @@ void sendMessageBatch(NatsMessage msg, DataPort dataPort, StatisticsCollector st
177174

178175
stats.incrementOut(size);
179176
if (writeListener != null) {
180-
NatsMessage finalMsg = msg;
181-
writeListener.submit(() -> writeListener.buffered(finalMsg, mode.get().name()));
177+
writeListener.buffered(msg, mode.get().name());
182178
}
183179

184180
if (msg.flushImmediatelyAfterPublish) {
@@ -206,7 +202,12 @@ public void run() {
206202
try {
207203
dataPort = this.dataPortFuture.get(); // Will wait for the future to complete
208204
StatisticsCollector stats = connection.getStatisticsCollector();
209-
WriteListener writeListener = connection.getOptions().getWriteListener();
205+
WriteListener writeListener = null;
206+
WriteListener userWriteListener = connection.getOptions().getWriteListener();
207+
if (userWriteListener != null) {
208+
ExecutorService executor = connection.getOptions().getExecutor();
209+
writeListener = (m, o) -> executor.submit(() -> userWriteListener.buffered(m, o));
210+
}
210211

211212
while (running.get() && !Thread.interrupted()) {
212213
NatsMessage msg;

src/main/java/io/nats/client/impl/WriteListener.java

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,7 @@
1414
package io.nats.client.impl;
1515

1616
import io.nats.client.Message;
17-
import org.jspecify.annotations.Nullable;
1817

19-
import java.util.concurrent.ExecutorService;
20-
import java.util.concurrent.Executors;
21-
22-
public abstract class WriteListener {
23-
public final ExecutorService executorService;
24-
25-
public WriteListener() {
26-
this(null);
27-
}
28-
29-
public WriteListener(@Nullable ExecutorService executorService) {
30-
this.executorService = executorService == null
31-
? Executors.newSingleThreadExecutor()
32-
: executorService;
33-
}
34-
35-
public final void submit(Runnable runnable) {
36-
executorService.submit(runnable);
37-
}
38-
39-
public abstract void buffered(Message msg, String mode);
18+
public interface WriteListener {
19+
void buffered(Message msg, String mode);
4020
}

0 commit comments

Comments
 (0)