#java #apache-kafka #spring-kafka
#java #apache-kafka #spring-кафка
Вопрос:
Я настроил своего потребителя на прием сообщений из темы в пакетах. Как мне перенаправить его в новую тему?
Я хочу, чтобы каждое потребляемое сообщение пересылалось как его собственное сообщение. Таким образом, X количество потребляемых сообщений приведет к X количеству сообщений.
Вот моя текущая настройка:
@KafkaListener(topics = "input")
@SendTo("output")
public ConsumerRecords consume(ConsumerRecords records) {
// Do things
return records;
}
И вот выданное исключение:
org.springframework.kafka.Исключение KafkaException: для класса java.util не найден метод.Список массивов
Комментарии:
1. В вашем коде больше ничего нет? Где вы используете ArrayList?
2. Единственным другим кодом является настройка через файл yaml
3. При задании подобных вопросов показывайте полную трассировку стека.
Ответ №1:
Эта функциональность не поддерживается. В любом случае вы не можете отправить a ConsumerRecord
в a Producer
.
Это работает, хотя
@KafkaListener(id = "foo", topics = "input")
@SendTo("output")
public List<String> consume(List<String> data) {
return data;
}
(где String
тип, созданный вашим десериализатором).
Комментарии:
1. Будет ли это отправлять 1 сообщение со списком строк или несколько сообщений с одной строкой в каждом?
2. По одной записи на строку.
3. Кроме того, невозможность отправки ConsumerRecord теперь имеет большой смысл.