spring-cloud-stream kafka, как создать сообщение с круговой стратегией?
Мы обновили весеннюю загрузку до версии 2.0.3 (ранее 1.5.10). В связи с этим мы изменили релиз kafka & spring-cloud-stream (2.0.0-Release)
В нашем файле свойств YML мы не всегда настраиваем partitionKeyExpression
и большинство наших partitionCount
больше 1.
В предыдущем выпуске эти настройки наряду с отсутствием передачи ключа приводили к созданию сообщений в циклической стратегии.
В новой версии те же настройки приводят к методу isPartitioned
чтобы вернуть true, что добавляет Interceptor с новым PartitionHandler, где метод extractKey завершается неудачно из-за отсутствующего ключа (утверждается сообщением "Ключ раздела не может быть нулевым").
Вопрос в том, как сохранить прежнее поведение с теми же настройками или с меньшими изменениями. Как мы можем не использовать ключ и обеспечить передачу сообщений на разделы в циклической стратегии?
1 ответ
Количество теперь используется в решении.
public boolean isPartitioned() {
return this.partitionCount > 1 || this.partitionKeyExpression != null
|| this.partitionKeyExtractorName != null || this.partitionKeyExtractorClass != null;
}
Я думаю, что это неправильно # 1531.
Как обходной путь, не устанавливайте поток producer.partitionCount
если вы хотите использовать нативную разметку кафки (а тема уже существует).