У меня есть маршрут на верблюде к потребителю из кафки. Он потребляет и производит с TPS 2000, если входящее сообщение составляет 18000 TPS. таким образом, у потребителя topi c есть потребительское отставание. Если я сохраню max.poll.recors = 500, я смогу достичь 2000 TPS. Если я сохраню настройки производителя requestRequiredAcks = 0, я могу достичь 4000 TPS. но все еще с отставанием потребителей. Мы знаем, что верблюжий маршрут завершен, когда от-> до завершен. потребитель, который потребляет 2 раздела с количеством потребителей 2, занят до завершения маршрута.
есть ли способ сделать потребителя Camel-Kafka асинхронным. любой пример кода?
from("kafka:{{consumer.topic}}?brokers={{kafka_dev.host}}"
+ "&maxPollRecords={{consumer.maxPollRecords}}" + "&consumersCount=2"
+ "&seekTo=latest" + "&groupId={{consumer.group}}" + "&keyDeserializer="
+ KEYDESERIALIZER + "&valueDeserializer=" + VALUEDESERIALIZER + SSL).doTry()
.routeId("route1")
.process(new CamelProcessor())
.to("kafka:{{producer.topic}}?brokers={{kafka_dev.host}}" +"&requestRequiredAcks=1" )
.doCatch(Exception.class));
Также мы заметили, что введение потоков на этом маршруте перечитывает одинаковые обработанные и отправленные сообщения. это ссылка верблюд-кафка