diff --git a/src/main/java/org/springframework/data/redis/stream/DefaultStreamMessageListenerContainer.java b/src/main/java/org/springframework/data/redis/stream/DefaultStreamMessageListenerContainer.java index 9656b9ff7..14a7931ad 100644 --- a/src/main/java/org/springframework/data/redis/stream/DefaultStreamMessageListenerContainer.java +++ b/src/main/java/org/springframework/data/redis/stream/DefaultStreamMessageListenerContainer.java @@ -89,13 +89,17 @@ class DefaultStreamMessageListenerContainer> implement private static StreamReadOptions getStreamReadOptions(StreamMessageListenerContainerOptions options) { - StreamReadOptions streamReadOptions = StreamReadOptions.empty().count(options.getBatchSize()); + StreamReadOptions readOptions = StreamReadOptions.empty(); - if (!options.getPollTimeout().isZero()) { - streamReadOptions = streamReadOptions.block(options.getPollTimeout()); + if (options.getBatchSize().isPresent()) { + readOptions = readOptions.count(options.getBatchSize().getAsInt()); } - return streamReadOptions; + if (!options.getPollTimeout().isZero()) { + readOptions = readOptions.block(options.getPollTimeout()); + } + + return readOptions; } private RedisTemplate createRedisTemplate(RedisConnectionFactory connectionFactory, diff --git a/src/main/java/org/springframework/data/redis/stream/DefaultStreamReceiver.java b/src/main/java/org/springframework/data/redis/stream/DefaultStreamReceiver.java index 5ec5d9afd..8de6a2c22 100644 --- a/src/main/java/org/springframework/data/redis/stream/DefaultStreamReceiver.java +++ b/src/main/java/org/springframework/data/redis/stream/DefaultStreamReceiver.java @@ -73,7 +73,11 @@ class DefaultStreamReceiver> implements StreamReceiver .key(options.getKeySerializer()).hashKey(options.getHashKeySerializer()) .hashValue(options.getHashValueSerializer()).build(); - StreamReadOptions readOptions = StreamReadOptions.empty().count(options.getBatchSize()); + StreamReadOptions readOptions = StreamReadOptions.empty(); + + if (options.getBatchSize().isPresent()) { + readOptions = readOptions.count(options.getBatchSize().getAsInt()); + } if (!options.getPollTimeout().isZero()) { readOptions = readOptions.block(options.getPollTimeout()); } diff --git a/src/main/java/org/springframework/data/redis/stream/StreamMessageListenerContainer.java b/src/main/java/org/springframework/data/redis/stream/StreamMessageListenerContainer.java index 1f969a359..de7aa8706 100644 --- a/src/main/java/org/springframework/data/redis/stream/StreamMessageListenerContainer.java +++ b/src/main/java/org/springframework/data/redis/stream/StreamMessageListenerContainer.java @@ -16,6 +16,7 @@ package org.springframework.data.redis.stream; import java.time.Duration; +import java.util.OptionalInt; import java.util.concurrent.Executor; import java.util.function.Predicate; @@ -474,7 +475,7 @@ public interface StreamMessageListenerContainer> exten class StreamMessageListenerContainerOptions> { private final Duration pollTimeout; - private final int batchSize; + private final @Nullable Integer batchSize; private final RedisSerializer keySerializer; private final RedisSerializer hashKeySerializer; private final RedisSerializer hashValueSerializer; @@ -484,7 +485,8 @@ public interface StreamMessageListenerContainer> exten private final Executor executor; @SuppressWarnings("unchecked") - private StreamMessageListenerContainerOptions(Duration pollTimeout, int batchSize, RedisSerializer keySerializer, + private StreamMessageListenerContainerOptions(Duration pollTimeout, @Nullable Integer batchSize, + RedisSerializer keySerializer, RedisSerializer hashKeySerializer, RedisSerializer hashValueSerializer, @Nullable Class targetType, @Nullable HashMapper hashMapper, ErrorHandler errorHandler, Executor executor) { @@ -518,10 +520,10 @@ public interface StreamMessageListenerContainer> exten /** * Batch size polling using the {@code COUNT} option during reads. * - * @return + * @return the batch size. */ - public int getBatchSize() { - return batchSize; + public OptionalInt getBatchSize() { + return batchSize != null ? OptionalInt.of(batchSize) : OptionalInt.empty(); } public RedisSerializer getKeySerializer() { @@ -575,7 +577,7 @@ public interface StreamMessageListenerContainer> exten class StreamMessageListenerContainerOptionsBuilder> { private Duration pollTimeout = Duration.ofSeconds(2); - private int batchSize = 1; + private @Nullable Integer batchSize; private RedisSerializer keySerializer; private RedisSerializer hashKeySerializer; private RedisSerializer hashValueSerializer; diff --git a/src/main/java/org/springframework/data/redis/stream/StreamReceiver.java b/src/main/java/org/springframework/data/redis/stream/StreamReceiver.java index 9c04df042..de196aa08 100644 --- a/src/main/java/org/springframework/data/redis/stream/StreamReceiver.java +++ b/src/main/java/org/springframework/data/redis/stream/StreamReceiver.java @@ -19,6 +19,7 @@ import reactor.core.publisher.Flux; import java.nio.ByteBuffer; import java.time.Duration; +import java.util.OptionalInt; import org.springframework.data.redis.connection.ReactiveRedisConnectionFactory; import org.springframework.data.redis.connection.stream.Consumer; @@ -186,14 +187,14 @@ public interface StreamReceiver> { class StreamReceiverOptions> { private final Duration pollTimeout; - private final int batchSize; + private final @Nullable Integer batchSize; private final SerializationPair keySerializer; private final SerializationPair hashKeySerializer; private final SerializationPair hashValueSerializer; private final @Nullable Class targetType; private final @Nullable HashMapper hashMapper; - private StreamReceiverOptions(Duration pollTimeout, int batchSize, SerializationPair keySerializer, + private StreamReceiverOptions(Duration pollTimeout, @Nullable Integer batchSize, SerializationPair keySerializer, SerializationPair hashKeySerializer, SerializationPair hashValueSerializer, @Nullable Class targetType, @Nullable HashMapper hashMapper) { @@ -240,10 +241,10 @@ public interface StreamReceiver> { /** * Batch size polling using the {@code COUNT} option during reads. * - * @return + * @return the batch size. */ - public int getBatchSize() { - return batchSize; + public OptionalInt getBatchSize() { + return batchSize != null ? OptionalInt.of(batchSize) : OptionalInt.empty(); } public SerializationPair getKeySerializer() { @@ -281,7 +282,7 @@ public interface StreamReceiver> { class StreamReceiverOptionsBuilder> { private Duration pollTimeout = Duration.ofSeconds(2); - private int batchSize = 1; + private @Nullable Integer batchSize; private SerializationPair keySerializer; private SerializationPair hashKeySerializer; private SerializationPair hashValueSerializer;