αžšαž”αŸ€αž”αžŠαŸ‚αž› Kafka αž€αŸ’αž›αžΆαž™αž‡αžΆαž€αžΆαžšαž–αž·αž

αžšαž”αŸ€αž”αžŠαŸ‚αž› Kafka αž€αŸ’αž›αžΆαž™αž‡αžΆαž€αžΆαžšαž–αž·αž

ហេហេ!

αžαŸ’αž‰αž»αŸ†αž’αŸ’αžœαžΎαž€αžΆαžšαž›αžΎαž€αŸ’αžšαž»αž˜ Tinkoff αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž”αž„αŸ’αž€αžΎαžαž˜αž‡αŸ’αžˆαž˜αžŽαŸ’αžŒαž›αž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αŸ” αžαŸ’αž‰αž»αŸ†αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ… Java αžŠαŸ„αž™αž”αŸ’αžšαžΎ Spring boot αž“αž·αž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž•αŸ’αžŸαŸαž„αŸ—αžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αž˜αž½αž™αŸ”

αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αŸƒαžŸαŸαžœαžΆαž˜αžΈαž€αŸ’αžšαžΌαžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αžΆαž€αŸ‹αž‘αž„αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αžŠαŸ„αž™αž’αžŸαž˜αž€αžΆαž›αžαžΆαž˜αžšαž™αŸˆαžˆαŸ’αž˜αž½αž‰αž€αžŽαŸ’αžαžΆαž›αžŸαžΆαžšαŸ” αž–αžΈαž˜αž»αž“ αž™αžΎαž„αž”αžΆαž“αž”αŸ’αžšαžΎ IBM MQ αž‡αžΆαžˆαŸ’αž˜αž½αž‰αž€αžŽαŸ’αžαžΆαž› αžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αž‘αž”αŸ‹αž‘αž›αŸ‹αž“αžΉαž„αž”αž“αŸ’αž‘αž»αž€αž”αžΆαž“αž‘αŸ€αžαž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸ„αŸ‡αž˜αžΆαž“αž€αžΆαžšαž’αžΆαž“αžΆαž›αžΎαž€αžΆαžšαžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αžαŸ’αž–αžŸαŸ‹αŸ”

αž€αŸ’αž“αž»αž„αž“αžΆαž˜αž‡αžΆαž’αŸ’αž“αž€αž‡αŸ†αž“αž½αžŸ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“ Apache Kafka αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž€αŸ’αžŠαžΆαž“αž»αž–αž›αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αžαŸ’αž–αžŸαŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž’αž€αž»αžŸαž› αž‘αžΆαž˜αž‘αžΆαžšαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž”αž»αž‚αŸ’αž‚αž›αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸαžŽαžΆαžšαžΈαž™αŸ‰αžΌαž•αŸ’αžŸαŸαž„αŸ—αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž™αž“αŸ’αžαž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž˜αŸ’αžαž„αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ Kafka αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž˜αž·αž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžšαž€αŸ’αžŸαžΆαž”αžΆαž“αž“αžΌαžœαž€αž˜αŸ’αžšαž·αžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸƒαž—αžΆαž–αžŸαŸŠαžΈαžŸαž„αŸ’αžœαžΆαž€αŸ‹αž‚αŸ’αž“αžΆαž€αŸ’αžšαŸ…αž”αŸ’αžšαž’αž”αŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ Kafka αž‡αžΆαž–αž·αžŸαŸαžŸαžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž–αžΈαžšαž”αŸ€αž”αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„αžšαžŸαŸ‹αž“αŸ…αž‡αžΆαž˜αž½αž™αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž—αŸ’αž›αžΆαž˜αŸ—αŸ”

αž’αžΆαž“αžΆαž€αžΆαžšαžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“ αž“αž·αž„αž…αŸ’αžšαžΎαž“αž‘αŸ€αž

αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αžΉαž„αž‡αž½αž™αž€αžΆαžšαž–αžΆαžšαž”αž‰αŸ’αž αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαžŠαŸ†αž”αžΌαž„αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž›αžΎαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž˜αž½αž™αžŠαŸ‚αž›αž“αžΉαž„αž‡αž½αž™αžŸαž˜αŸ’αžšαž½αž›αžŠαž›αŸ‹αž€αžΆαžšαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž’αžΆαž…αž€αžΎαžαž˜αžΆαž“αŸ”

αž“αŸαŸ‡αž“αžΉαž„αž‡αž½αž™ client.id αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž•αž›αž·αž αž“αž·αž„αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž“αŸ… glance αžŠαŸ†αž”αžΌαž„αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαžˆαŸ’αž˜αŸ„αŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαžαž˜αŸ’αž›αŸƒαž αžΎαž™αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžœαžΆαž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“ αž αžΎαž™αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž–αž½αž€αž‚αŸαž“αžΌαžœ client.id αžŠαžΌαž…αž‚αŸ’αž“αžΆαž€αŸαžŠαŸ„αž™ αž›αž‘αŸ’αž’αž•αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

org.apache.kafka.common.utils.AppInfoParser β€” Error registering AppInfo mbean javax.management.InstanceAlreadyExistsException: kafka.consumer:type=app-info,id=kafka.test-0

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž”αŸ’αžšαžΎ JMX αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž˜αž½αž™ Kafka αž“αŸ„αŸ‡αžœαžΆαž’αžΆαž…αž‡αžΆαž”αž‰αŸ’αž αžΆαŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžšαžŽαžΈαž“αŸαŸ‡ αžœαžΆαž‡αžΆαž€αžΆαžšαž›αŸ’αž’αž”αŸ†αž•αž»αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αŸƒαžˆαŸ’αž˜αŸ„αŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž§αž‘αžΆαž αžšαžŽαŸαžˆαŸ’αž˜αŸ„αŸ‡αž”αŸ’αžšαž’αžΆαž“αž”αž‘αž‡αžΆαžαž˜αŸ’αž›αŸƒ client.id αŸ” αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž™αžΎαž„αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž›αž‘αŸ’αž’αž•αž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ kafka-consumer-groups αž–αžΈαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž–αžΈ Confluent:

αžšαž”αŸ€αž”αžŠαŸ‚αž› Kafka αž€αŸ’αž›αžΆαž™αž‡αžΆαž€αžΆαžšαž–αž·αž

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αžŸαŸαžŽαžΆαžšαžΈαž™αŸ‰αžΌαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž’αžΆαž“αžΆαŸ” αž’αŸ’αž“αž€αž•αž›αž·αž Kafka αž˜αžΆαž“αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš αž’αŸαž€αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αŸ†αž“αž½αž“αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αžŠαŸ‚αž›αž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αž’αŸ’αž“αž€αžŠαžΉαž€αž“αžΆαŸ†αž…αž„αŸ’αž€αŸ„αž˜αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž…αžΆαžšαžŽαžΆαžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αžŸαžšαžŸαŸαžšαžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™αŸ” αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸαŸ‡αž’αžΆαž…αž™αž€αžαž˜αŸ’αž›αŸƒαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

  • 0 - αž€αžΆαžšαž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αž“αžΉαž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž…αžΆαžšαžŽαžΆαž‘αŸαŸ”
  • 1 αž‚αžΊαž‡αžΆαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž˜αžΆαž“αžαŸ‚αž€αžΆαžšαž…αž˜αŸ’αž›αž„ 1 αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αŸ”
  • βˆ’1 β€” αž€αžΆαžšαž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αž–αžΈαž€αžΆαžšαž…αž˜αŸ’αž›αž„αžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αžΊαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžš (αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž…αž„αŸ’αž€αŸ„αž˜ min.insync.replicas).

αž–αžΈαžαž˜αŸ’αž›αŸƒαžŠαŸ‚αž›αž”αžΆαž“αžšαžΆαž™αž”αž‰αŸ’αž‡αžΈ αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αžαžΆ acks αžŸαŸ’αž˜αžΎαž“αžΉαž„ βˆ’1 αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž’αžΆαž“αžΆαžαŸ’αž›αžΆαŸ†αž„αž”αŸ†αž•αž»αžαžαžΆαžŸαžΆαžšαž“αžΉαž„αž˜αž·αž“αž”αžΆαžαŸ‹αž”αž„αŸ‹αž‘αžΎαž™αŸ”

αžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αžŠαžΉαž„αžŸαŸ’αžšαžΆαž”αŸ‹αž αžΎαž™ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αŸ‚αž€αž…αžΆαž™αž˜αž·αž“αž‚αž½αžšαž±αŸ’αž™αž‘αž»αž€αž…αž·αžαŸ’αžαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžšαž–αžΆαžšαž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž€αŸ†αž αž»αžŸαž”αžŽαŸ’αžαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“ Kafka Producer αž•αŸ’αžαž›αŸ‹αž‡αž˜αŸ’αžšαžΎαžŸ αž–αŸ’αž™αžΆαž™αžΆαž˜αž˜αŸ’αžαž„αž‘αŸ€αžαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αž•αŸ’αž‰αžΎαž‘αžΎαž„αžœαž·αž‰αž“αŸ…αž€αŸ’αž“αž»αž„ delivery.timeout.ms. αžŠαŸ„αž™αžŸαžΆαžšαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž–αŸ’αž™αžΆαž™αžΆαž˜αž˜αŸ’αžαž„αž‘αŸ€αžαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž“αŸƒ Integer.MAX_VALUE (2147483647) αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αžŸαžΆαžšαž‘αžΎαž„αžœαž·αž‰αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαžŠαŸ„αž™αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαŸ‚ delivery.timeout.ms αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αž™αžΎαž„αž€αŸ†αž–αž»αž„αž†αŸ’αž–αŸ„αŸ‡αž‘αŸ…αžšαž€αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž—αŸ’αž›αžΆαž˜αŸ—

αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αžšαžΆαž™αž”αž‰αŸ’αž‡αžΈαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž•αž›αž·αžαžšαž”αžŸαŸ‹αž™αžΎαž„αž”αž‰αŸ’αž‡αžΌαž“αžŸαžΆαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αžΆαž“αžΆαžαŸ’αž–αžŸαŸ‹αŸ” αž₯αž‘αžΌαžœβ€‹αž“αŸαŸ‡β€‹αžŸαžΌαž˜β€‹αž“αž·αž™αžΆαž™β€‹αž’αŸ†αž–αžΈβ€‹αžšαž”αŸ€αž”β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž’αžΆαž“αžΆβ€‹αžαžΆβ€‹αžŸαžΆαžšβ€‹αžαŸ‚β€‹αž˜αž½αž™β€‹αž…αŸ’αž”αžΆαž”αŸ‹β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžŸαžšαžŸαŸαžšβ€‹αž‘αŸ…β€‹αž€αžΆαž“αŸ‹β€‹αž”αŸ’αžšαž’αžΆαž“β€‹αž”αž‘ Kafka? αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžœαžΆαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αŸ†αžŽαžαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸ…αž›αžΎαž’αŸ’αž“αž€αž•αž›αž·αž enable.idempotence αž–αž·αžαŸ” Ideempotency αž’αžΆαž“αžΆαžαžΆαž˜αžΆαž“αžαŸ‚αžŸαžΆαžšαž˜αž½αž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‘αŸ…αž—αžΆαž‚αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž˜αž½αž™αŸ” αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž‡αžΆαž˜αž»αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αž—αžΆαž–αž‘αž“αŸ‹αžαŸ’αžŸαŸ„αž™αž‚αžΊαž‡αžΆαžαž˜αŸ’αž›αŸƒ acks = αž‘αžΆαŸ†αž„αž’αžŸαŸ‹, αž–αŸ’αž™αžΆαž™αžΆαž˜αž˜αŸ’αžαž„αž‘αŸ€αž > 0, max.in.flight.requests.per.connection ≀ 5. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžŠαŸ„αž™αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‘αŸαž“αŸ„αŸ‡αžαž˜αŸ’αž›αŸƒαžαžΆαž„αž›αžΎαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ”

αž“αŸ…αž–αŸαž›αžŠαŸ‚αž› idempotency αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“αžΆαžαžΆαžŸαžΆαžšαžŠαžΌαž…αž‚αŸ’αž“αžΆαž”αž‰αŸ’αž…αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαž‚αžαžΆαžŸαžŠαžΌαž…αž‚αŸ’αž“αžΆαžšαžΆαž›αŸ‹αž–αŸαž›αŸ” αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αž€αžΌαž“αžŸαŸ„ partitioner.class αž“αž·αž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‘αŸ…αž’αŸ’αž“αž€αž•αž›αž·αžαŸ” αž…αžΌαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‚αž“αŸ’αž›αžΉαŸ‡αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαžαŸ‚αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαžΆαž€αŸ‹αžŸαŸ’αž“αžΎαž“αžΈαž˜αž½αž™αŸ—αŸ” αž“αŸαŸ‡αž’αžΆαž…αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŠαŸ„αž™αž”αŸ’αžšαžΎαž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αžŽαžΆαž˜αž½αž™αž–αžΈαž”αŸ’αžšαž€αžΆαžŸαžŠαžΎαž˜αŸ” αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš partitioner.class αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ βˆ’ αž—αžΆαž‚αžαžΆαžŸαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜. αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž™αž»αž‘αŸ’αž’αžŸαžΆαžŸαŸ’αžαŸ’αžšαž”αŸ‚αž„αž…αŸ‚αž€αž“αŸαŸ‡ αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž™αžΎαž„αž’αŸ’αžœαžΎαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžŠαžΌαž…αž“αŸαŸ‡αŸ–

  • αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž—αžΆαž‚αžαžΆαžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž“αŸ…αž–αŸαž›αž•αŸ’αž‰αžΎαžŸαžΆαžš αž“αŸ„αŸ‡αž™αžΎαž„αž”αŸ’αžšαžΎαžœαžΆαŸ”
  • αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž—αžΆαž‚αžαžΆαžŸαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΌαž“αžŸαŸ„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ αžŸαžΌαž˜αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž—αžΆαž‚αžαžΆαžŸαžŠαŸ„αž™αžŸαž‰αŸ’αž‰αžΆαž“αŸƒαž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αŸ”
  • αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž—αžΆαž‚αžαžΆαžŸ αž“αž·αž„αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ αžŸαžΌαž˜αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž—αžΆαž‚αžαžΆαžŸαž˜αŸ’αžαž„αž˜αž½αž™αŸ— (αž‡αž»αŸ†-αžšαŸ‰αžΌαž”αŸŠαžΈαž“)αŸ”

αž•αž„αžŠαŸ‚αžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ„ αž“αž·αž„ ideempotent αž•αŸ’αž‰αžΎαž‡αžΆαž˜αž½αž™αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž˜αž½αž™αŸ” max.in.flight.requests.per.connection = 1 αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž’αŸ’αž“αž€αž“αžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαžΆαžšαžŠαŸ‚αž›αžŸαž˜αŸ’αžšαž½αž›αž“αŸ…αž›αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αžœαžΆαž€αŸαž‚αž½αžšαž…αž„αž…αžΆαŸ†αž•αž„αžŠαŸ‚αžšαžαžΆ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ…αž›αžΎαž…αž„αŸ’αž€αŸ„αž˜αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž·αž‘αŸ’αž’αž·αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαžŠαŸ„αž™αž’αž…αŸαžαž“αžΆαž…αŸ†αž–αŸ„αŸ‡αž”αŸ’αžšαž’αžΆαž“αž”αž‘αž˜αž½αž™αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž—αŸ’αž›αžΆαž˜αŸ—αž“αŸ„αŸ‡αž’αŸ’αž“αž€αžαŸ’αžœαŸ‡αžŸαž˜αžαŸ’αžαž—αžΆαž–αž“αŸƒαž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αžŠαŸ„αž™αž€αžΌαž“αžŸαŸ„ αž¬αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αŸ…αžαžΆαž„αž’αŸ’αž“αž€αž•αž›αž·αžαžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αžšαž€αŸ’αžŸαžΆαž—αžΆαž–αžŸαŸŠαžΈαžŸαž„αŸ’αžœαžΆαž€αŸ‹αž‚αŸ’αž“αžΆαž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαžœαžΆαž„αž—αžΆαž‚αžαžΆαžŸαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆ αž“αŸ„αŸ‡αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αžΉαž„αž˜αž€αž‡αž½αž™αžŸαž„αŸ’αž‚αŸ’αžšαŸ„αŸ‡αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αž αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαŸ’αžŸαŸ‚αžŸαž„αŸ’αžœαžΆαž€αŸ‹ αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ Kafka αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž•αŸ’αž‰αžΎαž‘αŸ…αž’αŸ’αž“αž€αž•αž›αž·αž αžœαžΆαžαŸ’αžšαžΌαžœαžαŸ‚αž‚αŸ’αž˜αžΆαž“αžŸαž˜αžαŸ’αžαž—αžΆαž– αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αž”αž“αŸ’αžαŸ‚αž˜ transactional.id. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αž„αŸ’αž€αŸ„αž˜ Kafka αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž˜αžΆαž“αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αŸ„αŸ‡αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš αžŠαžΌαž…αž‡αžΆαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆ ideempotent αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžš αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™αžšαž”αžΆαŸ†αž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαžαž˜αŸ’αž›αŸƒαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„ 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.

αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡ αž™αžΎαž„αž”αž“αŸ’αžαŸ‚αž˜αž”αž…αŸ’αž…αŸαž™αž‘αŸ…αžˆαŸ’αž˜αŸ„αŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆ hostname αžŠαŸ‚αž›αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž–αžΈαž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“αŸ”

αž’αŸ’αž“αž€αž•αž›αž·αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸ…αž›αžΎ Kafka αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžαŸ‚αžœαž·αžŸαžΆαž›αž—αžΆαž–αž“αŸƒαžŸαžΆαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αžŠαŸ„αž™αž˜αž·αž“αž‚αž·αžαž–αžΈαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš αžŸαžΆαžšαž—αŸ’αž›αžΆαž˜αŸ—αž‘αŸ…αž€αžΆαž“αŸ‹αž”αŸ’αžšαž’αžΆαž“αž”αž‘ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αž“αŸ’αžαŸ‚αž˜αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αžΆαŸ’αž€αžšαžŸαžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΆαž“αžŠαŸ„αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž˜αž»αž“αž‚αžΆαžαŸ‹αžαŸ’αžšαžΌαžœαž€αŸ†αžŽαžαŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš isolation.level αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“_αžαž˜αŸ’αž›αŸƒαžŠαŸ‚αž›αž”αžΆαž“αžŸαž“αŸ’αž™αžΆαŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ‚αž”αž“αŸαŸ‡αž“αžΉαž„αž’αžΆαž…αž’αžΆαž“αžŸαžΆαžšαžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαžΌαž…αž–αžΈαž˜αž»αž“ αž αžΎαž™αžŸαžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αžΆαž“αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž˜αžΆαž“αž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαŸ”
αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αžšαžΆαž™αž”αž‰αŸ’αž‡αžΈαž˜αž»αž“αž“αŸαŸ‡ αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž—αŸ’αž›αžΆαž˜αŸ—αž“αŸ…αž–αŸαž›αž…αŸ‚αž€αž…αžΆαž™αŸ” αž’αž”αž’αžšαžŸαžΆαž‘αžš!

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“ nuance αž˜αž½αž™αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαŸ” Transactional.id αžŠαŸ‚αž›αž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆαž„αž›αžΎ αž‚αžΊαž–αž·αžαž‡αžΆαž”αž»αž–αŸ’αžœαž”αž‘αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαŸ” αž“αŸ…αž›αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš αž›αŸαžαž›αŸ†αžŠαžΆαž”αŸ‹αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αžœαžΆαŸ” αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαžŠαŸ‚αž›αž”αžΆαž“αž‘αž‘αž½αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž±αŸ’αž™ transactional.id.expiration.msαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ…αž›αžΎαž…αž„αŸ’αž€αŸ„αž˜ Kafka αž“αž·αž„αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž“αŸƒ "7 αžαŸ’αž„αŸƒ" αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž“αŸαŸ‡ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αž·αž“αž”αžΆαž“αž‘αž‘αž½αž›αžŸαžΆαžšαžŽαžΆαž˜αž½αž™αž‘αŸ αž“αŸ„αŸ‡αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž–αŸ’αž™αžΆαž™αžΆαž˜αž•αŸ’αž‰αžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž’αŸ’αž“αž€αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“ InvalidPidMappingException. αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž’αŸ’αž“αž€αžŸαž˜αŸ’αžšαž”αžŸαž˜αŸ’αžšαž½αž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αžΉαž„αž…αŸαž‰αž›αŸαžαž›αŸ†αžŠαžΆαž”αŸ‹αžαŸ’αž˜αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αž“αŸ’αž‘αžΆαž”αŸ‹αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžŸαžΆαžšαž’αžΆαž…αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαžαŸ‹αž”αž„αŸ‹ αž”αŸ’αžšαžŸαž·αž“αž”αžΎ InvalidPidMappingException αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ”

αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž…αŸ†αž“αž½αž“αžŸαžšαž»αž”

αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰αžœαžΆαž˜αž·αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž•αŸ’αž‰αžΎαžŸαžΆαžšαž‘αŸ… Kafka αŸ” αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž”αž“αŸ’αžŸαŸ†αž“αŸƒαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš αž αžΎαž™αžαŸ’αžšαŸ€αž˜αžαŸ’αž›αž½αž“αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžšαž αŸαžŸαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αž„αŸ’αž αžΆαž‰αž™αŸ‰αžΆαž„αž›αž˜αŸ’αž’αž·αžαž’αŸ†αž–αžΈαž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž—αŸ’αž›αžΆαž˜αŸ— αž αžΎαž™αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ client.id αž“αž·αž„ transactional.id αžŠαŸ‚αž›αž™αžΎαž„αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αŸ” αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαŸαž…αž€αŸ’αžαžΈαžŸαž„αŸ’αžαŸαž”αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž•αž›αž·αž αž“αž·αž„αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ”

αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž•αž›αž·αž:

  1. acks = αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”
  2. αž–αŸ’αž™αžΆαž™αžΆαž˜ > 0
  3. enable.idempotence = αž–αž·αž
  4. max.in.flight.requests.per.connection ≀ 5 (1 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‰αžΎαžαžΆαž˜αž›αŸ†αžŠαžΆαž”αŸ‹)
  5. transactional.id = ${application-name}-${hostname}

αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹:

  1. isolation.level = read_committed

αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αŸ†αž αž»αžŸαž†αŸ’αž‚αž„αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αžΆαž–αŸαž›αž’αž“αžΆαž‚αž αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžšαž»αŸ†αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž™αžΎαž„αž›αžΎαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αž·αž‘αžΆαžƒαžšαžŠαžΌαžœ αžŠαŸ‚αž›αžαž˜αŸ’αž›αŸƒαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαŸ‚αž›αž”αžΆαž“αžšαžΆαž™αž”αž‰αŸ’αž‡αžΈαž˜αž½αž™αž…αŸ†αž“αž½αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž½αž…αž αžΎαž™αŸ”

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαž˜αŸ’αž—αžΆαžšαŸˆαž˜αž½αž™αž…αŸ†αž“αž½αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαž·αž€αŸ’αžŸαžΆαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ–

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹