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 если вы хотите использовать нативную разметку кафки (а тема уже существует).

Другие вопросы по тегам