ืืื ืืืจ!
ืื ื ืขืืื ืืฆืืืช ืืื ืงืืฃ, ืฉืืคืชื ืืจืื ืืืืขืืช ืืฉืื. ืื ื ืืขืืงืจ ืืคืชื ืื'ืืืื ืืืืฆืขืืช Spring boot ืืคืืชืจ ืืขืืืช ืืื ืืืช ืฉืื ืืช ืฉืฆืฆืืช ืืคืจืืืงื.
ืจืื ืฉืืจืืชื ืืืืงืจื ืฉืื ื ืืชืงืฉืจืื ืื ืขื ืื ืืืืคื ืืกืื ืืจืื ื ืืืืฆืขืืช ืืชืืื ืืืืขืืช. ืืขืืจ, ืืฉืชืืฉื ื ื-IBM MQ ืืืชืืื, ืฉืื ืืืื ืืื ืืืชืืืื ืืืชืจ ืขื ืืขืืืก, ืื ืืืงืืื ืืื ืื ืขืจืืืืืช ืืฉืืื ืืืืืืช.
ืืชืืืืฃ, ืืืฆืข ืื ื ืืคืืฆ'ื ืงืคืงื, ืฉืืฉ ืื ืคืืื ืฆืืื ืงื ื ืืืื ืืืื, ืื, ืืืจืื ืืฆืขืจ, ืืืจืฉ ืืืฉื ืืืขื ืืื ืืืืืืืืืืช ืืชืฆืืจื ืขืืืจ ืชืจืืืฉืื ืฉืื ืื. ืื ืืกืฃ, ืื ืื ืื ืืืกืืจื ืฉื ืืคืืืช ืคืขื ืืืช ืฉืขืืื ืืงืคืงื ืืืจืืจืช ืืืื ืื ืืคืฉืจ ืืฉืืืจ ืขื ืจืืช ืืขืงืืืืช ืื ืืจืฉืช ืืืืฅ ืืงืืคืกื. ืืืืจ ืืื, ืืืืืง ืืช ืื ืืกืืื ืฉืื ื ืืชืฆืืจืช ืงืคืงื, ืืคืจื, ืื ื ืืืื ืื ืืื ืืืืืืจ ืืืืืืช ืขื ืืกืืจื ืืืช ืืืืืง.
ืืฉืืื ืืืืื ืืขืื
ืืืืืจืืช ืื ืืื ืืช ืืืื ืืกืืืขื ืืื ืืข ืืกืคืจ ืืขืืืช ืืืืืจืืช ืืจืืจืช ืืืืื ืฉื ืืืืืืจ. ืืื ืงืืื ืื ืื ื ืจืืฆื ืืฉืื ืื ืืคืจืืืจ ืืื ืฉืืงื ืขื ื ืืคืื ืืืืื ืืคืฉืจื.
ืื ืืขืืืจ 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
ืื ืืชื ืจืืฆื ืืืฉืชืืฉ ื-JMX ืืืคืืืงืฆืื ืขื ืงืคืงื, ืื ืืืืื ืืืืืช ืืขืื. ืืืงืจื ืื, ืขืืืฃ ืืืฉืชืืฉ ืืฉืืืื ืฉื ืฉื ืืืคืืืงืฆืื ืืืื, ืืืฉื, ืฉื ืื ืืฉื ืืชืืจ ืืขืจื client.id. ื ืืชื ืืจืืืช ืืช ืืชืืฆืื ืฉื ืืชืฆืืจื ืฉืื ื ืืคืื ืืคืงืืื ืงืคืงื-ืฆืจืื ืื-ืงืืืฆืืช ืืฉืืจืืชืื ื-Confluent:
ืืขืช ื ืกืชืื ืขื ืืชืจืืืฉ ืฉื ืืฉืืื ืืืืขืืช ืืืืื. ืืืคืืง ืงืคืงื ืืฉ ืคืจืืืจ acks, ืืืืคืฉืจ ืื ืืืืืืจ ืืืจื ืืื ืืืฉืืจืื ืฆืจืื ืื ืืื ืืืฉืืื ืืื ืืฉืงืื ืืช ืืืืืขื ืฉื ืืชืื ืืืฆืืื. ืคืจืืืจ ืื ืืืื ืืงืื ืืช ืืขืจืืื ืืืืื:
- 0 - ืืืฉืืจ ืื ืืืืฉื.
- 1 ืืื ืคืจืืืจ ืืจืืจืช ืืืืื, ื ืืจืฉ ืจืง ืขืืชืง ืืื ืืื ืืืฉืจ.
- โ1 - ื ืืจืฉ ืืืฉืืจ ืืื ืืืขืชืงืื ืืืกืื ืืจื ืื (ืืืืจืช ืืฉืืื min.insync.replicas).
ืืืขืจืืื ืืืคืืจืืื ืืจืืจ ืฉ-acks ืฉืืื ื-1 ื ืืชื ืืช ืืขืจืืืช ืืืืงื ืืืืชืจ ืฉืืืกืจ ืื ืืืื.
ืืคื ืฉืืืื ื ืืืืขืื, ืืขืจืืืช ืืืืืจืืช ืืื ื ืืืื ืืช. ืืื ืืืื ืืคื ื ืชืงืืืช ืืืืคืืช, ืืคืืง ืงืคืงื ืืกืคืง ืืช ืืืคืฉืจืืช ืื ืกื ืฉืื, ืืืืคืฉืจ ืื ืืืืืืจ ืืช ืืกืคืจ ื ืืกืืื ืืช ืืฉืืืื ืืืืฉ ืืชืื ืืกืืจื.ืืื ืงืฆืื.ms. ืืืืืื ืฉืืคืจืืืจ ื ืกืืื ืืช ืืืืจืืช ืืฉ ืขืจื ืืจืืจืช ืืืื ืฉื Integer.MAX_VALUE (2147483647), ื ืืชื ืืืชืืื ืืช ืืกืคืจ ื ืืกืืื ืืช ืืืืืขืืช ืืืืืจืืช ืขื ืืื ืฉืื ืื ืจืง delivery.timeout.ms.
ืื ื ืืชืงืืืื ืืงืจืืช ืืฉืืื ืคืขื ืืืช ืืืืืง
ืืืืืจืืช ืืืคืืจืืืช ืืืคืฉืจืืช ืืืคืืง ืฉืื ื ืืืขืืืจ ืืืืขืืช ืขื ืืืจืืืช ืืืืื. ืืืื ื ืืืจ ืืขืช ืขื ืืื ืืืืืื ืฉืจืง ืขืืชืง ืืื ืฉื ืืืืขื ื ืืชื ืื ืืฉื ืงืคืงื? ืืืงืจื ืืคืฉืื ืืืืชืจ, ืืื ืืขืฉืืช ืืืช, ืืชื ืฆืจืื ืืืืืืจ ืืช ืืคืจืืืจ ื-Producer enable.idempotence ืืืืืชื. ืืืืคืืื ืฆืื ืืืืืื ืฉืจืง ืืืืขื ืืืช ื ืืชืืช ืืืืืฆื ืกืคืฆืืคืืช ืฉื ื ืืฉื ืืื. ืืชื ืื ืืืงืืื ืืืคืฉืจ ืื-ืืืืื ืืืืช ืืื ืืขืจืืื acks = all, ื ืกื ืฉืื > 0, max.in.flight.requests.per.connection โค 5. ืื ืืคืจืืืจืื ืืืื ืื ืฆืืื ื ืขื ืืื ืืืคืชื, ืืขืจืืื ืืขืื ืืืืืจื ืืืืืืืืช.
ืืืฉืจ ืืืืืจืื ืืืืคืืื ืฆืื, ืืฉ ืฆืืจื ืืืืืื ืฉืืืชื ืืืืขืืช ืืกืชืืืื ืืืืชื ืืืืฆืืช ืืื ืคืขื. ื ืืชื ืืขืฉืืช ืืืช ืขื ืืื ืืืืจืช ืืคืชื ืืคืจืืืจ partitioner.class ื-Producer. ื ืชืืื ืขื ืืืคืชื. ืื ืืืื ืืืืืช ืืื ืขืืืจ ืื ืืืฉื. ื ืืชื ืืืฉืื ืืืช ืืงืืืช ืขื ืืื ืฉืืืืฉ ืืื ืืื ืืืืืืื ืืขืกืงืืื ืืืคืืกื ืืืงืืจื. ืืคืจืืืจ partitioner.class ืืฉ ืขืจื ืืจืืจืช ืืืื -
- ืื ืืืืืฆื ืฆืืื ื ืืืคืืจืฉ ืืขืช ืฉืืืืช ืืืืืขื, ืื ื ืืฉืชืืฉืื ืื.
- ืื ืืืืืฆื ืื ืฆืืื ื, ืื ืืืคืชื ืฆืืื, ืืืจ ืืช ืืืืืฆื ืืคื ื-hash ืฉื ืืืคืชื.
- ืื ืืืืืฆื ืืืืคืชื ืื ืฆืืื ื, ืืืจ ืืช ืืืืืฆืืช ืืืช ืืืช (ืขืืื-ืจืืืื).
ืืื ืื, ืฉืืืืฉ ืืืคืชื ืืฉืืืื ืืืืคืืื ืืืช ืขื ืคืจืืืจ max.in.flight.requests.per.connection = 1 ื ืืชื ืื ืขืืืื ืืืืขืืช ืืขืื ืขืืืจ ืืฆืจืื. ืืืื ืื ืืืืืจ ืฉืื ืืงืจืช ืืืฉื ืืืืืจืช ืืืฉืืื ืฉืื, ืชืืืงืง ืืืจืฉืืืช ืืืชืื ืืฆืืจื ืืืืืืืช ืื ืืฉื.
ืื ืคืชืืื ืืกืจืืช ืื ืืืืืืืช ืฉื ืฉืืืื ืืืืคืืื ืืืช ืืืืฆืขืืช ืืคืชื ืื ืฉืืืืืืื ืืฆื ืืืคืืง ืืืจืฉ ืฉืืืจื ืขื ืขืงืืืืช ื ืชืื ืื ืืื ืืืืฆืืช ืฉืื ืืช, ืื ืืขืกืงืืืช ืืขืืจื. ืื ืืกืฃ, ืืืืฆืขืืช ืขืกืงืช ืฉืจืฉืจืช, ื ืืชื ืืกื ืืจื ืจืฉืืื ืืงืคืงื ืขื ืชื ืื ืขื ืจืฉืืื ืืืกื ืื ืชืื ืื. ืืื ืืืคืฉืจ ืฉืืืืช ืขืกืงืืืช ืืืคืืง, ืืื ืืืืืช ืืืืืช ืืืืคืืื ืืืช ืืืืืืจืช ืื ืืกืฃ transactional.id. ืื ืืืฉืืื ืงืคืงื ืฉืื ืืืืืจืช ืืงืจืช ืืืฉื, ืื ืจืฉืืืช ืืจื ืืงืฆืืืช, ืืื ืจืฉืืืช ืืืืคืืื ืืืช, ืชืืืงืง ืืืจืฉืืืช ืืชืืื, ืืืชื ื ืืชื ืืืขื ืืง ืืืืฆืขืืช ืืกืืื ืืืืฆืขืืช ืืขืจื ืืืืืืกื ื-transactional.id.
ืจืฉืืืช, ืื ืืืจืืืช, ืืืื ืฉื ืืืคืืืงืฆืื, ืืืืื ืืฉืืฉ ืืืืื ืขืกืงื. ืืื ืื ืืชื ืืคืขืื ืืกืคืจ ืืืคืขืื ืฉื ืืืชื ืืคืืืงืฆืื ืขื ืืืชื transactional.id, ืื ืืืืคืข ืืจืืฉืื ืฉืืืฉืง ืืืขืฆืจ ืขื ืฉืืืื, ืฉืื ืงืคืงื ืืจืื ืืื ืชืืืื ืืืืืื.
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.
ืืื ืืคืชืืจ ืืขืื ืื, ืื ื ืืืกืืคืื ืกืืืืช ืืฉื ืืืคืืืงืฆืื ืืฆืืจืช ืฉื ืืืืจื, ืืืชื ืื ื ืืงืืืื ืืืฉืชื ื ืกืืืื.
ืืืคืืง ืืืืืจ, ืืื ืขืกืงืืืช ืืงืคืงื ืฉืืืืืช ืจืง ืืืืงืฃ ืืืืืขื. ืืื ืงืฉืจ ืืืฆื ืืขืกืงื, ืืืืืขื ืขืืืจืช ืืื ืื ืืฉื, ืื ืืฉ ืื ืชืืื ืืช ืืขืจืืช ื ืืกืคืืช.
ืืื ืืื ืืข ืืืืืขืืช ืืืื ืืืืงืจื ืขื ืืื ืืฆืจืื ืืืขืื ืืืขื, ืืื ืฆืจืื ืืืืืืจ ืืช ืืคืจืืืจ ืจืืช ืืืืื ื-read_committed value. ืฆืจืื ืืื ืืืื ืืงืจืื ืืืืขืืช ืื ืขืกืงืืืช ืืื ืงืืื, ืืืืืขืืช ืขืกืงืืืช ืจืง ืืืืจ commit.
ืื ืืืืจืช ืืช ืื ืืืืืจืืช ืืืคืืจืืืช ืงืืื ืืื, ืืืืจืช ืืืืืง ืคืขื ืืืช ืืกืืจื. ืืื ืืื!
ืืื ืืฉ ืขืื ื ืืืื ืก ืืื. Transactional.id, ืืืชื ืืืืจื ื ืืืขืื, ืืื ืืืขืฉื ืงืืืืืช ืืขืกืงื. ืืื ืื ืืขืกืงืืืช ืืชืืืกืฃ ืื ืืกืคืจ ืจืฆืฃ. ืืืืื ืฉืืชืงืื ืืื ืคืง ื transactional.id.expiration.ms, ืืืืืืจ ืขื ืืฉืืื ืงืคืงื ืืืฉ ืื ืขืจื ืืจืืจืช ืืืื ืฉื "7 ืืืื". ืื ืืืืื ืชืงืืคื ืื ืืืคืืืงืฆืื ืื ืงืืืื ืืืืขืืช ืืืฉืื, ืืืฉืจ ืชื ืกื ืืช ืืฉืืืื ืืืื ืฉื ืืขืกืงื ืชืงืื InvalidPidMappingException. ืืืืจ ืืื, ืจืื ืืขืกืงื ืืืฆืื ืืกืคืจ ืจืฆืฃ ืืืฉ ืขืืืจ ืืขืกืงื ืืืื. ืขื ืืืช, ืืืืืขื ืขืืืื ืืืืช ืืืืืื ืื ื-InvalidPidMappingException ืื ืืืืคื ืืืืื.
ืืืงืื ืืกืืืืืื
ืืคื ืฉืืชื ืืืื ืืจืืืช, ืื ืื ืืกืคืืง ืคืฉืื ืืฉืืื ืืืืขืืช ืืงืคืงื. ืขืืื ืืืืืจ ืฉืืืื ืฉื ืคืจืืืจืื ืืืืืืช ืืืื ืืืฆืข ืฉืื ืืืื ืืืืจืื. ืืืืืจ ืื ื ืืกืืชื ืืืฆืื ืืคืืจืื ืืช ืืืืจืช ืืืกืืจื ืฉื ืคืขื ืืืช ืืืืืง ืืชืืืจืชื ืืกืคืจ ืืขืืืช ืืชืฆืืจืืช client.id ื-transactional.id ืฉื ืชืงืื ื ืืื. ืืืื ืกืืืื ืฉื ืืืืจืืช ืืืคืืง ืืืฆืจืื.
ืืคืงื:
- acks = ืืื
- ื ืืกืืื ืืช ืืืืจืื > 0
- enable.idempotence = true
- max.in.flight.requests.per.connection โค 5 (1 ืืฉืืืื ืืกืืืจืช)
- transactional.id = ${application-name}-${hostname}
ืฆืจืื:
- isolation.level = read_committed
ืืื ืืืืขืจ ืฉืืืืืช ืืืืฉืืืื ืขืชืืืืื, ืืฆืจื ื ืืขืืคืช ืืฉืื ื ืขื ืชืฆืืจืช ืืงืคืืฅ, ืฉืื ืืขืจืืื ืฉื ืืืง ืืืคืจืืืจืื ืืืคืืจืืื ืืืจ ืืืืืจืื.
ืื ื ืืื ืืืืจืื ืืืืืื ืขืฆืื:
ืืงืืจ: www.habr.com