Я использую spring-kafka 2.2.8 и пишу простой производитель asyn c со следующими настройками:
linger.ms : 300000,
batch.size: 33554431,
max.block.ms: 60000.
Теперь я создаю KafkaTemplate с autoFlu sh как false с помощью вызов конструктора ниже
public KafkaTemplate(ProducerFactory<K, V> producerFactory, boolean autoFlush)
Теперь у меня есть простой тест, создающий 10 сообщений в промежутке 10 se c с использованием вышеуказанного производителя asyn c, а затем остановил моего производителя с помощью 'Cntrl + C '. Затем, к удивлению, я получил все 10 сообщений, опубликованных на topi c, и я уверен, что размер этих 10 сообщений в совокупности намного меньше, чем размер моего пакета. Размер: 33554431
Теперь у меня два вопроса
- Как сообщения публикуются вместо ожидания либо linger.ms, либо batch.size перед созданием сообщения?
- В этом сценарии каково значение autoFlush = false ?