В отличие от @KafkaListener
, похоже, @StreamListener
не поддерживает параметр autoStartup
. Есть ли способ добиться такого же поведения для @StreamListener
? Вот мой пример использования:
У меня есть универсальное c Spring приложение, которое может прослушивать любую топику Kafka c и записывать в соответствующую таблицу в моей базе данных. По некоторым темам громкость низкая, и, таким образом, обработка одного сообщения с очень низкой задержкой вполне подходит. Для других тем, которые имеют большой объем, код должен получать микропакет сообщений и записывать в базу данных, используя пакет Jdb c реже. В идеале определение для слушателей должно выглядеть примерно так:
// low volume listener
@StreamListener(target = Sink.INPUT, autoStartup="${application.singleMessageListenerEnabled}")
public void handleSingleMessage(@Payload GenericRecord message) ...
// high volume listener
@StreamListener(target = Sink.INPUT, autoStartup="${application.multipleMessageListenerEnabled}")
public void handleMultipleMessages(@Payload List<GenericRecord> messageList) ...
Для топи с низкой громкостью c я бы установил application.singleMessageListenerEnabled
на true и application.multipleMessageListenerEnabled
на false и наоборот для больших объемов topi c. Таким образом, только один из слушателей будет активно слушать сообщения, а другой не будет активно слушать.
Есть ли способ добиться этого с помощью @StreamListener
?