Skip to content

Commit c5b2ee4

Browse files
garyrussellartembilan
authored andcommitted
GH-946: Detect Unnecessary Replying Template
Resolves #946
1 parent ee24000 commit c5b2ee4

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

spring-kafka/src/main/java/org/springframework/kafka/config/AbstractKafkaListenerContainerFactory.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
import java.util.Collection;
2222
import java.util.regex.Pattern;
2323

24+
import org.apache.commons.logging.Log;
25+
import org.apache.commons.logging.LogFactory;
26+
2427
import org.springframework.beans.BeanUtils;
2528
import org.springframework.beans.factory.InitializingBean;
2629
import org.springframework.context.ApplicationEventPublisher;
@@ -35,6 +38,7 @@
3538
import org.springframework.kafka.listener.GenericErrorHandler;
3639
import org.springframework.kafka.listener.adapter.RecordFilterStrategy;
3740
import org.springframework.kafka.listener.adapter.ReplyHeadersConfigurer;
41+
import org.springframework.kafka.requestreply.ReplyingKafkaOperations;
3842
import org.springframework.kafka.support.TopicPartitionInitialOffset;
3943
import org.springframework.kafka.support.converter.MessageConverter;
4044
import org.springframework.retry.RecoveryCallback;
@@ -57,6 +61,8 @@
5761
public abstract class AbstractKafkaListenerContainerFactory<C extends AbstractMessageListenerContainer<K, V>, K, V>
5862
implements KafkaListenerContainerFactory<C>, ApplicationEventPublisherAware, InitializingBean {
5963

64+
protected final Log logger = LogFactory.getLog(getClass()); // NOSONAR protected
65+
6066
private final ContainerProperties containerProperties = new ContainerProperties((Pattern) null);
6167

6268
private GenericErrorHandler<?> errorHandler;
@@ -203,6 +209,13 @@ public void setApplicationEventPublisher(ApplicationEventPublisher applicationEv
203209
* @since 2.0
204210
*/
205211
public void setReplyTemplate(KafkaTemplate<?, ?> replyTemplate) {
212+
if (replyTemplate instanceof ReplyingKafkaOperations) {
213+
this.logger.warn(
214+
"The 'replyTemplate' should not be an implementation of 'ReplyingKafkaOperations'; "
215+
+ "such implementations are for client-side request/reply operations; here we "
216+
+ "are simply sending a reply to an incoming request so the reply container will "
217+
+ "never be used and will consume unnecessary resources.");
218+
}
206219
this.replyTemplate = replyTemplate;
207220
}
208221

src/reference/asciidoc/kafka.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -735,7 +735,7 @@ Aside from the logs, there was no indication that there was a problem.
735735
To restore the previous behavior, you canset the property to `false`.
736736

737737
[[using-ConcurrentMessageListenerContainer]]
738-
====== Using`ConcurrentMessageListenerContainer`
738+
====== Using `ConcurrentMessageListenerContainer`
739739

740740
The single constructor is similar to the first `KafkaListenerContainer` constructor.
741741
The following listing shows the constructor's signature:

0 commit comments

Comments
 (0)