áá±áž áá¬á!
áááºážáááá¯ááºááá¯ááºá¡áááá±ážáá»ááºá ááºáá¬ááá¯áááºáá®ážáá±ááá·áº Tinkoff á¡ááœá²á·ááœááºá¡áá¯ááºáá¯ááºáá«áááºá Spring boot ááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž Java ááŸá¬ á¡áá»á¬ážá¡á¬ážááŒáá·áº áá®ááœááºááŒá®áž ááá±á¬áá»ááºáá áºáá¯ááŸá¬ ááŒá áºáá±á«áºáá¬áá²á· áááºážááá¬ááá¯ááºáᬠááŒá¿áᬠá¡áá»áá¯ážáá»áá¯ážááᯠááŒá±ááŸááºážáá«áááºá
áá»áœááºá¯ááºááá¯á·á ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯á¡áá»á¬ážá á¯ááẠáááºáá±á·áá»áºááœá²á á¬ážááŸáá áºááá·áº áá áºáŠážááŸáá·áºáá áºáŠáž á¡ááŒáá¯ááºá¡ááá¯áẠáááºááœááºááŒáááºá ááááºá áá»áœááºá¯ááºááá¯á·ááẠIBM MQ ááᯠááœá²á á¬ážá¡ááŒá áºá¡áá¯á¶ážááŒá¯áá²á·áá±á¬áºáááºáž áá áºáá»áááºáááºážááœáẠááŒáá·áºáá¬ážáá±á¬áá±ážááá¯á·ááŸá¯á¡á¬ááá¶áá»ááºááŸááá²á·áááºá
á¡á á¬ážááá¯ážá¡áá±ááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠááŒáá·áºáá¬ážáá±á¬á¡ááá¯ááºážá¡áá¬á¡áá áá»á²á·ááœááºááá¯ááºááá·áºá¡áá¬ážá¡áá¬ááŸááá±á¬ Apache Kafka ááᯠáááºážááŸááºážáá²á·áááºá ááá¯á·áá±á¬áºá áá¶ááá±á¬ááºážá áœá¬ááŒáá·áºá ááá°áá®áá±á¬á¡ááŒá±á¡áá±áá»á¬ážá¡ááœáẠááœá²á·á ááºážááŸá¯áá¯á¶á á¶á¡ááœáẠáá áºáŠážáá»ááºážáá»ááºážáááºááŸá¯áá®ážáá«áž ááá¯á¡ááºáá«áááºá ááá¯á·á¡ááŒááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áº Kafka ááœáẠá¡áá¯ááºáá¯ááºáá±á¬ á¡áááºážáá¯á¶áž áá áºááŒááẠáá±ážááá¯á·ááá·áº ááá¹ááá¬ážááẠááá¯á¡ááºáá±á¬ ááá¯ááºáá»á±á¬áá®ááœá±ááŸá¯ á¡ááá·áºááᯠáá±á¬ááºá¡ááœááºážá០ááááºážááááºážáá¬ážááŒááºážááᯠááœáá·áºáááŒá¯áá«á áááºáááºá áá»áœááºá¯ááºááẠKafka configuration ááœááºáá»áœááºá¯ááºááá¯á·áá¡ááœá±á·á¡ááŒá¯á¶ááá¯áá»áŸáá±áá«áááºá á¡áá°ážáááŒáá·áºá áá±ážááá¯á·ááŸá¯áá áºááŒáááºá¡ááá¡áá»ááŒáá·áºáááºááá¯á·áá±ááá¯ááºááááºááá¯ááŒá±á¬ááŒáá«áááºá
ááá¯á·áá±á¬ááºááŸá¯ááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážááᯠá¡á¬ááá¶áá«áááºá
á¡á±á¬ááºááœáẠááœá±ážááœá±ážáá¬ážáá±á¬ áááºáááºáá»á¬ážááẠáá¯á¶áá±áá»áááºáááºááŸá¯ áááºáááºáá»á¬ážááœáẠááŒá¿áá¬áá»á¬ážá áœá¬ááᯠáá¬ážáá®ážááá¯ááºáááºááŒá áºáááºá áá«áá±ááá·áº ááŒá áºááá¯ááºáá²á· debug áá áºáá¯ááᯠá¡áááºááŒá±áá»á±á¬ááœá±á·á á±ááá·áº parameter áá áºáá¯ááᯠá¡áááºáá¯á¶ážá¡á¬áá¯á¶á áá¯ááºáá»ááºáá«áááºá
áá°áá®áá±ážáá«áááºá client.id áá¯ááºáá¯ááºáá°ááŸáá·áº á á¬ážáá¯á¶ážáá°áá»á¬ážá¡ááœááºá ááááá áºáá»ááºááœááºá áááºááẠá¡ááá®áá±ážááŸááºážá¡áááºááᯠáááºááá¯ážá¡ááŒá Ạá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž ááá á¹á á¡áá»á¬ážá á¯ááœáẠáááºážááẠá¡áá¯ááºááŒá áºáááá·áºáááºá á¡ááºááá®áá±ážááŸááºážáá áºáá¯ááẠá á¬ážáá¯á¶ážáá°áá»á¬ážá áœá¬ááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž áááºáá°ááá¯á·á¡á¬áž áá°áá®áá±á¬ client.id ááá¯áá±ážáá±á¬á¡áá«ááœáẠá¡ááŒá±á¡áá±ááẠá¡á±á¬ááºáá«ááááá±ážáá»ááºááááºáá»á¬ážááŒá áºáááº-
org.apache.kafka.common.utils.AppInfoParser â Error registering AppInfo mbean javax.management.InstanceAlreadyExistsException: kafka.consumer:type=app-info,id=kafka.test-0
Kafka ááŸáá·áº á¡ááºááá®áá±ážááŸááºážáá áºáá¯ááœáẠJMX ááᯠá¡áá¯á¶ážááŒá¯ááá¯áá«áá áááºážááẠááŒá¿áá¬ááŸáááá¯ááºáááºá á€ááá á¹á á¡ááœááºá á¡ááá®áá±ážááŸááºážá¡áááºááŸáá·áº á¥ááá¬á¡á¬ážááŒáá·áº áá±á«ááºážá ááºá¡áááºááᯠclient.id áááºááá¯ážá¡ááŒá Ạáá±á«ááºážá ááºá¡áá¯á¶ážááŒá¯ááŒááºážááẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºáááºá áá»áœááºá¯ááºááá¯á·á configuration áááááºááᯠcommand output ááœááºááœá±á·ááá¯ááºáá«áááºá kafka-á á¬ážáá¯á¶ážáá°-á¡á¯ááºá á¯áá»á¬áž Confluent á០á¡áá¯á¶ážáááºááŸá¯áá»á¬ážá
ááᯠá¡á¬ááá¶áá»ááºááŸááá±á¬ áááºáá±á·áá»áºáá±ážááá¯á·ááŸá¯á¡ááœáẠáá¬ááºáááºážááᯠááŒáá·áºááŒáá«á áá¯á·á Kafka áá¯ááºáá¯ááºáá°ááœáẠááá·áºáááºáá»ááºáá áºáá¯ááŸááááºá acksá¡á á¯á¡ááœá²á·áá±á«ááºážáá±á¬ááºá áááºáá±á·áá»áºááᯠá¡á±á¬ááºááŒááºá áœá¬áá±ážáá¬ážááŒá®áž ááá·áºááœááºážá ááºážá á¬ážááẠááá¯á¡ááºáááºáá»á¬ážááᯠáááºáá»áŸá¡ááá¡ááŸááºááŒá¯ááŒá®ážáá±á¬ááºááœáẠáááºá¡á¬áž configure áá¯ááºááœáá·áºááŒá¯ááá·áºá á€ááá·áºáááºáá»ááºááẠá¡á±á¬ááºáá«áááºááá¯ážáá»á¬ážááᯠáá°ááá¯ááºáááº-
- 0 â á¡ááá¡ááŸááºááŒá¯ ááá·áºááœááºážá ááºážá á¬ážáááºááá¯ááºáá«á
- 1 ááẠáá¯á¶áá±áá«áá¬áá®áá¬ááŒá áºááŒá®áž á¡ááá¡ááŸááºááŒá¯ááẠáá¯á¶á á¶áá° 1 áá¯áᬠááá¯á¡ááºáááºá
- â1 â áááºáá°ááŒá¯áá¬ážáá±á¬ áá¯á¶áá°áá»á¬ážá¡á¬ážáá¯á¶ážááᯠá¡ááá¡ááŸááºááŒá¯ááẠááá¯á¡ááºááẠ(á¡á á¯á¡áá±ážááᯠá áá áºááá·áºááœááºážááŒááºážá min.insync.replicas).
áá±á¬áºááŒáá¬ážáá±á¬áááºááá¯ážáá»á¬ážá០â1 ááŸáá·áºáá®áá»áŸáá±á¬ acks ááẠáááºáá±á·áá»áºáá¯á¶ážááŸá¯á¶ážáááºááá¯ááºááŒá±á¬ááºáž á¡ááá¯ááºáá¬áá¯á¶ážá¡á¬ááá¶áá»ááºáá±ážááŒá±á¬ááºáž ááŸááºážáá«áááºá
á¡á¬ážáá¯á¶ážááááŒááá·áºá¡ááá¯ááºážá ááŒáá·áºáá±ááá·áºá áá áºáá»á¬ážááẠá¡á¬ážááá¯ážááááá¯ááºáá«á áá¬áá®á¡ááŸá¬ážáá»á¬ážááá¯áá¬ááœááºááẠKafka áá¯ááºáá¯ááºáá°ááẠááœá±ážáá»ááºááœáá·áºááᯠáá±ážáááºá áááºááŒáá¯ážá á¬ážáááºáá¡áá²ááŸá¬ ááŒááºááá¯á·ááẠááŒáá¯ážá á¬ážááŸá¯ á¡áá±á¡ááœááºááᯠáááºááŸááºááœáá·áºááŒá¯áááºá delivery.timeout.ms. áááºá ááºážááŒááºážáá«áá¬áá®áá¬ááœáẠáá¯á¶áá±áááºááá¯ážááẠInteger.MAX_VALUE (2147483647) ááŒá áºáá±á¬ááŒá±á¬áá·áºá delivery.timeout.ms ááá¯áᬠááŒá±á¬ááºážáá²ááŒááºážááŒáá·áº áááºáá±á·áá»áºááŒááºá ááºážááŒááºážá¡áá±á¡ááœááºááᯠáá»áááºááŸáááá¯ááºáá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠáá áºááŒááẠá¡ááá¡áá» ááá¯á·áá±á¬ááºááŸá¯áá®ááá¯á· áŠážáááºááœá¬ážáá±áá«áááºá
á á¬áááºážááœááºážáááºáááºáá»á¬ážááẠáá»áœááºá¯ááºááá¯á·ááá¯ááºáá¯ááºáá°á¡á¬áž ááŒáá·áºáá¬ážáá±á¬á¡á¬ááá¶áá»ááºááŒáá·áº áááºáá±á·áá»áºáá»á¬ážáá±ážááá¯á·ááá¯ááºá á±áá«áááºá Kafka áá±á«ááºážá ááºáá áºáá¯ááá¯á· áááºáá±á·áá»áºáá áºá á±á¬ááºáᬠáááá¹áá°áá áºá á±á¬ááºáᬠáá±ážáá¬ážááŒá±á¬ááºáž áá±áá»á¬á¡á±á¬áẠáááºááá¯á·ááŒá¯áá¯ááºááááºáááºážá á¡ááá¯ážááŸááºážáá¯á¶ážá¡ááŒá±á¡áá±ááŸá¬á áá«ááá¯áá¯ááºááá¯á·á Producer ááŸá¬ parameter ááᯠáááºááŸááºááá«áááºá enable.idempotence á¡ááŸááºá Ideempotency ááẠá¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯á áá®ážááŒá¬ážá¡ááá¯ááºážáá áºáá¯ááá¯á· áááºáá±á·áá»áºáá áºáá¯áᬠáá±ážáá¬ážáá¬ážááŒá±á¬ááºáž á¡á¬ááá¶áá«áááºá á¡á áœááºážá¡á áááŸáááŒááºážá¡ááœáẠááŒáá¯áááºáááºááŸááºáá»ááºááŸá¬ áááºááá¯ážáá»á¬ážááŒá áºáááºá acks = á¡á¬ážáá¯á¶ážá áááºá ááºážááŒáá·áºáá« > 0á max.in.flight.requests.per.connection †5. á€áá±á¬ááºáá»á¬ážááᯠáá±á¬á·ááºáá²áá±ážáá¬ážáá°á០ááááºááŸááºáá¬ážáá«áá á¡áááºáá«áááºááá¯ážáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠáááºááŸááºáá±ážáááºááŒá áºáááºá
idempotency ááᯠconfigure áá¯ááºáá±á¬á¡áá«á áá°áá®áá±á¬áááºáá±á·áá»áºáá»á¬ážááᯠá¡áá»áááºááá¯ááºáž áá°áá®áá±á¬ partitions ááœáẠá¡áá¯á¶ážáááºááŒá±á¬ááºáž áá±áá»á¬á
á±ááẠááá¯á¡ááºáá«áááºá partitioner.class key ááŸáá·áº parameter ááᯠProducer ááá¯á· áááºááŸááºááŒááºážááŒáá·áº áááºážááᯠáá¯ááºáá±á¬ááºááá¯ááºáá«áááºá áá±á¬á·ááŒáá·áº á
ááá¯ááºáá¡á±á¬ááºá áááºááŒááŸá¯áá
áºáá¯á
á®á¡ááœáẠáá°áá®ááá«áááºá áá°áááºážááá¯á·á
áºá០áá¯ááºáááºáž ID áá
áºáá¯áá¯ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áááºážááᯠá¡ááœááºááá° á¡á±á¬ááºááŒááºááá¯ááºáááºá partitioner.class ááá·áºáááºáá±á¬ááºááœáẠáá¯á¶áá±áááºááá¯áž â ááŸááááºá
- áááºáá±á·áá»áºááá¯á·áá±á¬á¡áá«ááœáẠá¡áááºážááá·áºááᯠá¡ááá¡áááºážáá±á¬áºááŒáá¬ážáá«áá áááºážááᯠáá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯áááºá
- á¡áááºážááá·áºááᯠááááºááŸááºáá¬ážáá±á¬áºáááºáž áá±á¬á·ááᯠáááºááŸááºáá¬ážáá«áá áá±á¬á·á hash ááŒáá·áº á¡áááºážááá·áºááᯠááœá±ážáá«á
- á¡áááºážááá·áºááŸáá·áº áá±á¬á·ááᯠááááºááŸááºáá¬ážáá«áá á¡áááºážááá·áºáá»á¬ážááᯠáá áºáá¯ááŒá®ážáá áºáᯠááœá±ážáá»ááºáá« ( round-robin )á
ááá¯á·á¡ááŒááºá ááá·áºáááºáá»ááºáá áºáá¯ááŒáá·áº áá±á¬á·ááŸáá·áº ááá¯ááºáá¯á¶áá±á¬ áá±ážááá¯á·ááŒááºážááᯠá¡áá¯á¶ážááŒá¯áááºá max.in.flight.requests.per.connection = á Consumer ááœáẠáá»á±á¬ááœá±á·áá±á¬ áááºáá±á·áá»áºááᯠá á®áá¶áá±á¬ááºááœááºáá±ážáááºá áááºáá¡á á¯á¡áá±ážááœáẠáááºáá±á¬ááºááááºážáá»á¯ááºááŸá¯á¡á¬áž ááŒááºáááºáááºááŸááºáá«áá á¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯á¡á¬áž á¡á áœááºážáá¯ááºáá±ážáá¬ážááẠá¡ááœáá·áºá¡áá±ážáá»á¬áž ááá¯á¡ááºáááºááá¯áááºáž ááŸááºáá¬ážááá¯ááºáááºá
á¡áááºá áááºááẠáá±á¬á·ááŒáá·áº áá±ážááá¯á·ááŒááºážá á áœááºážáááºáá»á¬áž áá¯ááºáááẠáá»áá¯á·áá²á·áá«á ááá¯á·ááá¯áẠáá¯ááºáá¯ááºáá°áááºá០áá¯áá¹áááá±áá¡á ááœá²ááŒá¬ážáá±á¬ partitions áá»á¬ážááŒá¬ážááœáẠáá±áá¬áá®ááœááºááŸá¯ááᯠááááºážááááºážáá¬ážááẠááá¯á¡ááºáá«áá ááœá±áá±ážááœá±áá°áá»á¬áž áááºáá¬áá¬áá«áááºá ááá¯á·á¡ááŒááºá ááœááºážáááºááœá±áá±ážááœá±áá°ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áºá á¥ááá¬á¡á¬ážááŒáá·áºá Kafka ááœáẠááŸááºáááºážáá áºáá¯á¡á¬áž áá±áá¬áá±á·á áºááŸá ááŸááºáááºážáá áºáá¯ááŸáá·áº á¡ááŒá±á¡áá±á¡á áá áºááŒáá¯ááºáááºážáá¯ááºáá±á¬ááºááá¯ááºáááºá áá¯ááºáá¯ááºáá°áᶠá¡áá±á¬ááºážá¡áááºáá±ážááá¯á·ááŒááºážááᯠááœáá·áºáááºá áááºážááᯠá¡áááºá¡áá»ááºážáááŸáááá·áºá¡ááŒáẠáááºááŸááºáá±ážááá«áááºá ááœá±ááœááºážááœá±áá¯ááº.id. áááºá Kafka á¡á á¯á¡áá±ážááœáẠáááºáá±á¬ááºááááºážáá»á¯ááºááŸá¯ááᯠá á®áá¶áááºááŸááºáá¬ážáá«áá á¡áá±á¬ááºážá¡áááºááŸááºáááºážáá áºáá¯áá²á·ááá¯á· á¡áá±á¬ááºážá¡áááºááŸááºáááºážáá áºáá¯ááẠtransactional.id ááœáẠááááºážáááºážáá¬ážááá·áºáááºááá¯ážááᯠá¡áá¯á¶ážááŒá¯á áá»ááºááŸá¬áá¯á¶ážááŒáá·áº ááœáá·áºááŒá¯ááá¯ááºááá·áº á á¬áá±ážááœáá·áºááŒá¯áá»ááºáá»á¬áž ááá¯á¡ááºáááºááŒá áºáááºá
ááá¬ážáááºá¡á¬ážááŒáá·áºá á¡ááá®áá±ážááŸááºážá¡áááºáá²á·ááá¯á·áá±á¬ áááºááá·áºá á¬ááŒá±á¬ááºážááá¯áááᯠááœá±áá±ážááœá±áá°áááºááŸááºááŸá¯á¡ááŒá Ạá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá ááá¯á·áá±á¬áº á¡áááºá áááºááẠáá°áá®áá±á¬á¡ááá®áá±ážááŸááºážá ááŒá áºáááºáá»á¬ážá áœá¬ááᯠáá°áá®áá±á¬ transactional.id ááŒáá·áº ááœáá·áºáá«áá Kafka ááẠáááºážááᯠáá¯ááºáá±á¬ááºááŒá áºá ááºáᯠáá°ááá±á¬ááŒá±á¬áá·áº ááááá¯á¶áž á áááºááá·áº á¥ááá¬ááᯠá¡ááŸá¬ážá¡ááœááºážáá áºáá¯ááŒáá·áº áááºááá·áºááœá¬ážáááºááŒá áºáááºá
org.apache.kafka.common.errors.ProducerFencedException: Producer attempted an operation with an old epoch. Either there is a newer producer with the same transactionalId, or the producer's transaction has been expired by the broker.
á€ááŒá¿áá¬ááá¯ááŒá±ááŸááºážáááºá áá»áœááºá¯ááºááá¯á·ááẠáááºáááºážáá»áẠvariable áá»á¬ážááŸáááŸááá±á¬ hostname áá¯á¶á á¶ááŒáá·áº á¡ááá®áá±ážááŸááºážá¡áááºááœáẠáá±á¬ááºáááºááœá²áá áºáá¯ááᯠáá±á«ááºážááá·áºáá«áááºá
áá¯ááºáá¯ááºáá°á¡á¬áž ááŒááºáááºáááºááŸááºáá¬ážáá±á¬áºáááºáž Kafka ááŸá á¡áá±á¬ááºážá¡áááºáá»á¬ážááẠáááºáá±á·áá»áºá áááºáááºááá¯áᬠááááºážáá»á¯ááºáá¬ážáááºá ááœá±áá±ážááœá±áá°á¡ááŒá±á¡áá± áááºááá¯á·áááºááŸáá á±áá¬áá° áááºáá±á·áá»áºááẠáá±á«ááºážá ááºááá¯á· áá»ááºáá»ááºážáá±á¬ááºááœá¬ážáá±á¬áºáááºáž á¡ááá¯á áá áºá áá¯ááºáááºáá»á¬ážáá«ááŸááááºá
ááá¯ááá¯á·áá±á¬á
á¬áá»á¬ážááᯠá¡áá»áááºáá®á
á¬ážáá¯á¶ážáá°á០ááááºááŒááºážá០áá¬ááœááºáááºá áááºážááẠááá·áºáááºáááºááŸááºáá»ááºááᯠáááºááŸááºááẠááá¯á¡ááºáááºá isolation.á¡ááá·áº read_committed value áá¯ááºááá¯á·á ááá¯ááá¯á·áá±á¬ á
á¬ážáá¯á¶ážáá°ááẠááááºááá²á·ááá¯á· á¡áá±á¬ááºážá¡áááºááá¯ááºáá±á¬ áááºáá±á·áá»áºáá»á¬ážááᯠáááºááŸá¯ááá¯ááºáááºááŒá
áºááŒá®áž áááááááºááŒá¯ááŒá®ážááŸáᬠá¡áá±á¬ááºážá¡áááºááá¯ááºáᬠáááºáá±á·áá»áºáá»á¬ážááᯠáááºááŸá¯ááá¯ááºáááºááŒá
áºáááºá
á¡áááºá áááºááẠá¡á
á±á¬ááá¯ááºážááœáẠáá±á¬áºááŒáá¬ážáá±á¬ áááºáááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠáááºááŸááºááŒá®ážáá«áá áááºááẠáá±ážááá¯á·ááŸá¯ áá
áºááŒáááºááᯠá¡ááá¡áá» áááºááŸááºááŒá®ážááŒá
áºáááºá áá¯ááºáá°áá«áááºá
áá«áá±ááá·áº áá±á¬ááºáááºáá°ážááŒá¬ážáá»ááºáá áºáá¯ááŸááá«áá±ážáááºá á¡áááºááœáẠáá»áœááºá¯ááºááá¯á· ááŒááºáááºáááºááŸááºáá¬ážááá·áº Transactional.id ááẠá¡ááŸááºáááẠááœá±áá±ážááœá±áá°ááŸá±á·áááºááŒá áºáááºá ááœá±áá±ážááœá±áá°áááºáá±áá»á¬ááœááºá áá¶áá«ááºáá áºáá¯ááᯠáááºážááá¯á· áá±á«ááºážááá·áºáááºá áááºáá¶áááŸááá±á¬ á¡ááŸááºá¡áá¬ážááᯠáá¯ááºáá±ážáááºá transactional.id.expiration.msKafka á¡á á¯á¡áá±ážááœáẠááŒááºáááºáááºááŸááºáá¬ážááŒá®áž â7 áááºâ á áá¯á¶áá±áááºááá¯ážááŸááááºá á¡áááºá á€áá¬áá¡ááœááºáž á¡ááá®áá±ážááŸááºážááẠáááºááá·áºáááºáá±á·ááºá»ááá¯á០áááºáá¶áááŸáááŒááºážáááŸááá«áá áá±á¬ááºáá áºááŒááẠááœá±ááœáŸá²ááá¯á·ááŒááºážááᯠáááºááŒáá¯ážá á¬ážáá±á¬á¡áá«ááœáẠáááºáááºáá¶áááŸááááºááŒá áºáááºá InvalidPidMappingException. ááá¯á·áá±á¬áẠááœá±áá±ážááœá±áá°ááŸáááŸáá¯ááºážáá±ážááŸá°ážááẠáá±á¬ááºáá¬ááá·áºááœá±áá±ážááœá±áá°á¡ááœáẠáá¶áá«ááºá¡áá áºáá áºáá¯ááᯠáá¯ááºáá±ážáá«áááºá ááá¯á·áá±á¬áºáááºáž InvalidPidMappingException ááᯠááŸááºáááºá áœá¬ áááá¯ááºááœááºáá«á áááºáá±á·áá»áº áá»á±á¬ááºáá¯á¶ážááœá¬ážááá¯ááºáááºá
á¡á á¬áž, á¡ááááºáá»á¬áž
áááºážááŒááºáá²á·á¡ááá¯ááºáž Kafka áá®ááᯠá á¬ááá¯ááá¯á·áá¯á¶áá²á· ááá¯á¶áá±á¬ááºáá«áá°ážá áááºááẠááá·áºáááºáá»ááºáá»á¬áž áá±á«ááºážá ááºááŸá¯ááᯠááœá±ážáá»ááºáááºááŸáá·áº á¡ááŒááºááŒá±á¬ááºážáá²ááŸá¯áá»á¬áž ááŒá¯áá¯ááºááẠááŒááºáááºáá¬ážááẠááá¯á¡ááºáááºá á€áá±á¬ááºážáá«ážááœááºá áá»áœááºá¯ááºááẠáá±ážááá¯á·ááŸá¯á áá áºááá·áºááœááºážááŸá¯ááᯠáá áºááŒáááºáááá á¡áá±ážá áááºááŒáááẠááŒáá¯ážá á¬ážáá²á·ááŒá®áž áá»áœááºá¯ááºááá¯á·ááŒá¯á¶ááœá±á·áá²á·ááá±á¬ client.id ááŸáá·áº transactional.id ááœá²á·á ááºážááŸá¯ááá¯ááºáᬠááŒá¿áá¬áá»á¬ážá áœá¬ááᯠáá±á¬áºááŒáá²á·áááºá á¡á±á¬ááºááœáẠáá¯ááºáá¯ááºáá°ááŸáá·áº á á¬ážáá¯á¶ážáá°áááºáááºáá»á¬ážá á¡áá»ááºážáá»á¯ááºááŒá áºáááºá
áá¯ááºáá¯ááºáá°:
- acks = á¡á¬ážáá¯á¶áž
- áááºáá¶ááŒáá¯ážá á¬ážááŒááºáž > 0
- enable.idempotence = á¡ááŸááº
- max.in.flight.requests.per.connection †5 (á áá áºááá»áá±ážááá¯á·áááºá¡ááœáẠ1 áá¯)
- transactional.id = ${application-name}-${hostname}
á á¬ážáá¯á¶ážáá°:
- isolation.level = read_committed
áá±á¬ááºá¡ááá®áá±ážááŸááºážáá»á¬ážááœáẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠáá»áŸá±á¬á·áá»áááºá á á¬áááºážááœááºážáá¬ážáá±á¬ ááá·áºáááºáá±á¬ááºá¡áá»áá¯á·á¡ááœáẠáááºááá¯ážáá»á¬ážááᯠáááºááŸááºááŒá®ážááŒá áºááá·áº ááœá±áŠážááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááœáẠáá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯áẠwrapper ááᯠááŒá¯áá¯ááºáá¬ážáá«áááºá
á€áááºááŸá¬ ááá¯ááºááá¯ááºáá±á·áá¬ááẠá¡áá±á¬ááºá¡áá°áá á¹á ááºáž á¡áá»áá¯á·ááŒá áºáááºá
KIP-98 - áá áºááŒááẠá¡ááá¡áá» áá±ážááá¯á·ááŒááºážááŸáá·áº ááœá±ááœáŸá²á á¬ááá¯áá±ážááá¯á·ááŒááºážá áááºáááºáá»á¬ážá áá±á¬áºááŒáá»ááº
source: www.habr.com