เช•เชพเชซเช•เชพ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเชพเชธเซเชคเชตเชฟเช•เชคเชพ เชฌเชจเซ€

เช•เชพเชซเช•เชพ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเชพเชธเซเชคเชตเชฟเช•เชคเชพ เชฌเชจเซ€

เชนเซ‡ เชนเชฌเชฐ!

เชนเซเช‚ Tinkoff เชŸเซ€เชฎ เชชเชฐ เช•เชพเชฎ เช•เชฐเซเช‚ เช›เซเช‚, เชœเซ‡ เชคเซ‡เชจเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เชธเซ‚เชšเชจเชพ เช•เซ‡เชจเซเชฆเซเชฐ เชตเชฟเช•เชธเชพเชตเซ€ เชฐเชนเซ€ เช›เซ‡. เชนเซเช‚ เชฎเซ‹เชŸเซ‡ เชญเชพเช—เซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Javaเชฎเชพเช‚ เชตเชฟเช•เชพเชธ เช•เชฐเซเช‚ เช›เซเช‚ เช…เชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชŠเชญเซ€ เชฅเชคเซ€ เชตเชฟเชตเชฟเชง เชคเช•เชจเซ€เช•เซ€ เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ เช•เชฐเซเช‚ เช›เซเช‚.

เช…เชฎเชพเชฐเซ€ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเซ€ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เชธเช‚เชฆเซ‡เชถ เชฌเซเชฐเซ‹เช•เชฐ เชฆเซเชตเชพเชฐเชพ เช…เชธเซเชฎเซ‡เชณ เชฐเซ€เชคเซ‡ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชตเชพเชคเชšเซ€เชค เช•เชฐเซ‡ เช›เซ‡. เช…เช—เชพเช‰, เช…เชฎเซ‡ เชฌเซเชฐเซ‹เช•เชฐ เชคเชฐเซ€เช•เซ‡ 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 เชฎเซ‚เชฒเซเชฏ เชคเชฐเซ€เช•เซ‡. เช…เชฎเชพเชฐเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เช•เชฎเชพเชจเซเชก เช†เช‰เชŸเชชเซเชŸเชฎเชพเช‚ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡ เช•เชพเชซเช•เชพ-เช—เซเชฐเชพเชนเช•-เชœเซ‚เชฅเซ‹ เช•เชจเซเชซเซเชฒเซเช…เชจเซเชŸเชฎเชพเช‚เชฅเซ€ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“เชฎเชพเช‚เชฅเซ€:

เช•เชพเชซเช•เชพ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเชพเชธเซเชคเชตเชฟเช•เชคเชพ เชฌเชจเซ€

เชนเชตเซ‡ เชฌเชพเช‚เชฏเชงเชฐเซ€เช•เซƒเชค เชธเช‚เชฆเซ‡เชถ เชตเชฟเชคเชฐเชฃ เชฎเชพเชŸเซ‡เชจเซเช‚ เชฆเซƒเชถเซเชฏ เชœเซ‹เชˆเช. เช•เชพเชซเช•เชพ เชจเชฟเชฐเซเชฎเชพเชคเชพ เชชเชพเชธเซ‡ เชชเชฐเชฟเชฎเชพเชฃ เช›เซ‡ acks, เชœเซ‡ เชคเชฎเชจเซ‡ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชฒเช–เชพเชฏเซ‡เชฒ เชธเช‚เชฆเซ‡เชถเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เช•เซเชฒเชธเซเชŸเชฐ เชฒเซ€เชกเชฐเชจเซ‡ เช•เซ‡เชŸเชฒเชพ เชธเซเชตเซ€เช•เชพเชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชคเซ‡ เชชเช›เซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เช† เชชเชฐเชฟเชฎเชพเชฃ เชจเซ€เชšเซ‡เชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹ เชฒเชˆ เชถเช•เซ‡ เช›เซ‡:

  • 0 - เชธเซเชตเซ€เช•เซƒเชคเชฟ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชจเชนเซ€เช‚.
  • 1 เช เชกเชฟเชซเซ‰เชฒเซเชŸ เชชเชฐเชฟเชฎเชพเชฃ เช›เซ‡, เชฎเชพเชคเซเชฐ 1 เชชเซเชฐเชคเชฟเช•เซƒเชคเชฟ เชธเซเชตเซ€เช•เชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.
  • โˆ’1 โ€” เชฌเชงเซ€ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซเชก เชชเซเชฐเชคเชฟเช•เซƒเชคเชฟเช“เชฎเชพเช‚เชฅเซ€ เชธเซเชตเซ€เช•เชพเชฐ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ (เช•เซเชฒเชธเซเชŸเชฐ เชธเซ‡เชŸเช…เชช min.insync.replicas).

เชธเซ‚เชšเชฟเชฌเชฆเซเชง เชฎเซ‚เชฒเซเชฏเซ‹เชฎเชพเช‚เชฅเซ€ เชคเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡ โˆ’1 เชจเซ€ เชฌเชฐเชพเชฌเชฐ acks เชธเซŒเชฅเซ€ เชฎเชœเชฌเซ‚เชค เช—เซ‡เชฐเช‚เชŸเซ€ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชธเช‚เชฆเซ‡เชถ เช–เซ‹เชตเชพเชˆ เชœเชถเซ‡ เชจเชนเซ€เช‚.

เชœเซ‡เชฎ เช†เชชเชฃเซ‡ เชฌเชงเชพ เชœเชพเชฃเซ€เช เช›เซ€เช, เชตเชฟเชคเชฐเชฟเชค เชธเชฟเชธเซเชŸเชฎเซ‹ เช…เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เช›เซ‡. เช•เซเชทเชฃเชฟเช• เช–เชพเชฎเซ€เช“ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡, เช•เชพเชซเช•เชพ เชจเชฟเชฐเซเชฎเชพเชคเชพ เชตเชฟเช•เชฒเซเชช เชชเซ‚เชฐเซ‹ เชชเชพเชกเซ‡ เช›เซ‡ เชซเชฐเซ€ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เชคเชฎเชจเซ‡ เช…เช‚เชฆเชฐ เชซเชฐเซ€เชฅเซ€ เชฎเซ‹เช•เชฒเชตเชพเชจเชพ เชชเซเชฐเชฏเชพเชธเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เชตเชฟเชคเชฐเชฃ.เชธเชฎเชฏ เชธเชฎเชพเชชเซเชคเชฟ. เชชเซเชจเชƒเชชเซเชฐเชฏเชพเชธ เชชเชฐเชฟเชฎเชพเชฃเชฎเชพเช‚ Integer.MAX_VALUE (2147483647) เชจเซเช‚ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฎเซ‚เชฒเซเชฏ เชนเซ‹เชตเชพเชฅเซ€, เชธเช‚เชฆเซ‡เชถเชจเชพ เชชเซเชจเชƒเชชเซเชฐเชฏเชพเชธเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชซเช•เซเชค delivery.timeout.ms เชฌเชฆเชฒเซ€เชจเซ‡ เช—เซ‹เช เชตเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เช…เชฎเซ‡ เชฌเชฐเชพเชฌเชฐ เชเช•เชตเชพเชฐ เชกเชฟเชฒเชฟเชตเชฐเซ€ เชคเชฐเชซ เช†เช—เชณ เชตเชงเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชธเซ‚เชšเชฟเชฌเชฆเซเชง เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เช…เชฎเชพเชฐเชพ เชจเชฟเชฐเซเชฎเชพเชคเชพเชจเซ‡ เช‰เชšเซเชš เช—เซ‡เชฐเช‚เชŸเซ€ เชธเชพเชฅเซ‡ เชธเช‚เชฆเซ‡เชถเชพ เชชเชนเซ‹เช‚เชšเชพเชกเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชšเชพเชฒเซ‹ เชนเชตเซ‡ เชตเชพเชค เช•เชฐเซ€เช เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเซ€ เช•เซ‡ เชธเช‚เชฆเซ‡เชถเชจเซ€ เชฎเชพเชคเซเชฐ เชเช• เชจเช•เชฒ เช•เชพเชซเช•เชพ เชตเชฟเชทเชฏ เชชเชฐ เชฒเช–เชพเชฏ เช›เซ‡? เชธเชฐเชณ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชจเชฟเชฐเซเชฎเชพเชคเชพ เชชเชฐ เชชเชฐเชฟเชฎเชพเชฃ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ enable.idempotence เชธเชพเชšเซเช‚. เช†เช‡เชกเชฎเซเชชเซ‹เชŸเซ‡เชจเซเชธเซ€ เชฌเชพเช‚เชฏเชงเชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชเช• เชตเชฟเชทเชฏเชจเชพ เชšเซ‹เช•เซเช•เชธ เชชเชพเชฐเซเชŸเซ€เชถเชจ เชชเชฐ เชฎเชพเชคเซเชฐ เชเช• เชœ เชธเช‚เชฆเซ‡เชถ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช†เช‡เชกเชฎเซเชชเซ‹เชŸเซ‡เชจเซเชธเซ€เชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชชเซ‚เชฐเซเชตเชถเชฐเชค เช เชฎเซ‚เชฒเซเชฏเซ‹ เช›เซ‡ acks = เชฌเชงเชพ, เชซเชฐเซ€ เชชเซเชฐเชฏเชพเชธ > 0, max.in.flight.requests.per.connection โ‰ค 5. เชœเซ‹ เช† เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เชฆเซเชตเชพเชฐเชพ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชจ เชนเซ‹เชฏ, เชคเซ‹ เช‰เชชเชฐเซ‹เช•เซเชค เชฎเซ‚เชฒเซเชฏเซ‹ เช†เชชเชฎเซ‡เชณเซ‡ เชธเซ‡เชŸ เชฅเชˆ เชœเชถเซ‡.

เชœเซเชฏเชพเชฐเซ‡ idempotency เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช•เซ‡ เชธเชฎเชพเชจ เชธเช‚เชฆเซ‡เชถเชพเช“ เชฆเชฐเซ‡เช• เชตเช–เชคเซ‡ เชธเชฎเชพเชจ เชชเชพเชฐเซเชŸเซ€เชถเชจเซ‹เชฎเชพเช‚ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡. เช† partitioner.class เช•เซ€ เช…เชจเซ‡ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเชจเซ‡ Producer เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซ€เชจเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชšเชพเชฒเซ‹ เช•เซ€ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เช•เชฐเซ€เช. เชคเซ‡ เชฆเชฐเซ‡เช• เชธเชฌเชฎเชฟเชถเชจ เชฎเชพเชŸเซ‡ เชธเชฎเชพเชจ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช. เชฎเซ‚เชณ เชชเซ‹เชธเซเชŸเชฎเชพเช‚เชฅเซ€ เช•เซ‹เชˆเชชเชฃ เชตเซเชฏเชตเชธเชพเชฏ ID เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช† เชธเชฐเชณเชคเชพเชฅเซ€ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. partitioner.class เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชชเชพเชธเซ‡ เชกเชฟเชซเซ‹เชฒเซเชŸ เชฎเซ‚เชฒเซเชฏ เช›เซ‡ โˆ’ เชกเชฟเชซเซ‰เชฒเซเชŸ เชชเชพเชฐเซเชŸเซ€เชถเชจเชฐ. เช† เชชเชพเชฐเซเชŸเซ€เชถเชจ เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพ เชธเชพเชฅเซ‡, เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เช…เชฎเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เช•เชพเชฐเซเชฏ เช•เชฐเซ€เช เช›เซ€เช:

  • เชœเซ‹ เชธเช‚เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเชคเซ€ เชตเช–เชคเซ‡ เชชเชพเชฐเซเชŸเซ€เชถเชจ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชนเซ‹เชฏ, เชคเซ‹ เช…เชฎเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช.
  • เชœเซ‹ เชชเชพเชฐเซเชŸเซ€เชถเชจ เชธเซเชชเชทเซเชŸ เชฅเชฏเซ‡เชฒ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช•เซ€ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‡เชฒ เช›เซ‡, เชคเซ‹ เช•เซ€เชจเชพ เชนเซ‡เชถ เชฆเซเชตเชพเชฐเชพ เชชเชพเชฐเซเชŸเซ€เชถเชจ เชชเชธเช‚เชฆ เช•เชฐเซ‹.
  • เชœเซ‹ เชชเชพเชฐเซเชŸเซ€เชถเชจ เช…เชจเซ‡ เช•เซ€ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‡เชฒ เชจเชฅเซ€, เชคเซ‹ เชเช• เชชเช›เซ€ เชเช• เชชเชพเชฐเซเชŸเซ€เชถเชจเซ‹ เชชเชธเช‚เชฆ เช•เชฐเซ‹ (เชฐเชพเช‰เชจเซเชก-เชฐเซ‹เชฌเชฟเชจ).

เช‰เชชเชฐเชพเช‚เชค, เช•เซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชจเซ‡ เชชเชฐเชฟเชฎเชพเชฃ เชธเชพเชฅเซ‡ เชฎเซ‹เช•เชฒเชตเซเช‚ 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.

เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชฏเชœเชฎเชพเชจเชจเชพเชฎเชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชจเชพเชฎเชฎเชพเช‚ เชเช• เชชเซเชฐเชคเซเชฏเชฏ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช, เชœเซ‡ เช†เชชเชฃเซ‡ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹เชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชณเชตเซ€เช เช›เซ€เช.

เชจเชฟเชฐเซเชฎเชพเชคเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เชพเชซเช•เชพ เชชเชฐเชจเชพ เชตเซเชฏเชตเชนเชพเชฐเซ‹ เชฎเชพเชคเซเชฐ เชธเช‚เชฆเซ‡เชถเชจเชพ เช…เชตเช•เชพเชถเชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เชตเซเชฏเชตเชนเชพเชฐเชจเซ€ เชธเซเชฅเชฟเชคเชฟเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ€เชงเชพ เชตเชฟเชจเชพ, เชธเช‚เชฆเซ‡เชถ เชคเชฐเชค เชœ เชตเชฟเชทเชฏ เชชเชฐ เชœเชพเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชพเช‚ เชตเชงเชพเชฐเชพเชจเชพ เชธเชฟเชธเซเชŸเชฎ เชฒเช•เซเชทเชฃเซ‹ เช›เซ‡.

เช‰เชชเชญเซ‹เช•เซเชคเชพ เชฆเซเชตเชพเชฐเชพ เช†เชตเชพ เชธเช‚เชฆเซ‡เชถเชพเชจเซ‡ เชธเชฎเชฏ เชชเชนเซ‡เชฒเชพ เชตเชพเช‚เชšเชตเชพเชฎเชพเช‚ เชจ เช†เชตเซ‡ เชคเซ‡ เชฎเชพเชŸเซ‡, เชคเซ‡เชฃเซ‡ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ isolation.level เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เชฎเซ‚เชฒเซเชฏ เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡. เช†เชตเชพ เช‰เชชเชญเซ‹เช•เซเชคเชพ เชชเชนเซ‡เชฒเชพเชจเซ€ เชœเซ‡เชฎ เชฌเชฟเชจ-เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจเชฒ เชธเช‚เชฆเซ‡เชถเชพเช“ เชตเชพเช‚เชšเซ€ เชถเช•เชถเซ‡ เช…เชจเซ‡ เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพ เชชเช›เซ€ เชœ เชตเซเชฏเชตเชนเชพเชฐเชฟเช• เชธเช‚เชฆเซ‡เชถเชพเช“ เชตเชพเช‚เชšเซ€ เชถเช•เชถเซ‡.
เชœเซ‹ เชคเชฎเซ‡ เช…เช—เชพเช‰ เชธเซ‚เชšเชฟเชฌเชฆเซเชง เชฌเชงเซ€ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชธเซ‡เชŸ เช•เชฐเซ€ เชนเซ‹เชฏ, เชคเซ‹ เชชเช›เซ€ เชคเชฎเซ‡ เชกเชฟเชฒเชฟเชตเชฐเซ€ เชชเช›เซ€ เชฌเชฐเชพเชฌเชฐ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡. เช…เชญเชฟเชจเช‚เชฆเชจ!

เชชเชฐเช‚เชคเซ เชคเซเชฏเชพเช‚ เชเช• เชตเชงเซ เชธเซ‚เช•เซเชทเซเชฎเชคเชพ เช›เซ‡. Transactional.id, เชœเซ‡ เช…เชฎเซ‡ เช‰เชชเชฐ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡, เชคเซ‡ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เช‰เชชเชธเชฐเซเช— เช›เซ‡. เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชฎเซ‡เชจเซ‡เชœเชฐ เชชเชฐ, เชคเซ‡เชฎเชพเช‚ เชเช• เช•เซเชฐเชฎ เชจเช‚เชฌเชฐ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชชเซเชฐเชพเชชเซเชค เช“เชณเช–เช•เชฐเซเชคเชพเชจเซ‡ เชœเชพเชฐเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ transactional.id.expiration.ms, เชœเซ‡ เช•เชพเชซเช•เชพ เช•เซเชฒเชธเซเชŸเชฐ เชชเชฐ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เช•เชฟเช‚เชฎเชค โ€œ7 เชฆเชฟเชตเชธโ€ เช›เซ‡. เชœเซ‹ เช† เชธเชฎเชฏ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช•เซ‹เชˆ เชธเช‚เชฆเซ‡เชถเซ‹ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‹ เชจเชฅเซ€, เชคเซ‹ เชชเช›เซ€ เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เช†เช—เชฒเซ€ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจเชฒ เชฎเซ‹เช•เชฒเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชถเซ‹ เชคเซเชฏเชพเชฐเซ‡ เชคเชฎเชจเซ‡ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ‡ InvalidPidMappingException. เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เช•เซ‹เช“เชฐเซเชกเชฟเชจเซ‡เชŸเชฐ เชชเช›เซ€เชจเชพ เชตเซเชฏเชตเชนเชพเชฐ เชฎเชพเชŸเซ‡ เชจเชตเซ‹ เช•เซเชฐเชฎ เชจเช‚เชฌเชฐ เชœเชพเชฐเซ€ เช•เชฐเชถเซ‡. เชœเซ‹ เช•เซ‡, เชœเซ‹ InvalidPidMappingException เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เชจ เช†เชตเซ‡ เชคเซ‹ เชธเช‚เชฆเซ‡เชถ เช—เซเชฎ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡.

เช•เซเชฒ เชฌเชฆเชฒเซ‡

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เช•เชพเชซเช•เชพเชจเซ‡ เชซเช•เซเชค เชธเช‚เชฆเซ‡เชถเชพ เชฎเซ‹เช•เชฒเชตเชพ เชชเซ‚เชฐเชคเซเช‚ เชจเชฅเซ€. เชคเชฎเชพเชฐเซ‡ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซเช‚ เชธเช‚เชฏเซ‹เชœเชจ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชเชกเชชเซ€ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เชฐเชนเซ‡เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เชฒเซ‡เช–เชฎเชพเช‚, เชฎเซ‡เช‚ เชกเชฟเชฒเชฟเชตเชฐเซ€ เชธเซ‡เชŸเช…เชชเชจเซ€ เชฌเชฐเชพเชฌเชฐ เชเช• เชตเชพเชฐ เชตเชฟเช—เชคเชตเชพเชฐ เชฌเชคเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹ เช…เชจเซ‡ 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 = เชตเชพเช‚เชšเชจ_เชชเซเชฐเชคเชฟเชฌเชฆเซเชง

เชญเชพเชตเชฟ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เชญเซ‚เชฒเซ‹ เช˜เชŸเชพเชกเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชตเชธเช‚เชค เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชชเชฐ เช…เชฎเชพเชฐเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เชฐเซ‡เชชเชฐ เชฌเชจเชพเชตเซเชฏเซเช‚ เช›เซ‡, เชœเซเชฏเชพเช‚ เชธเซ‚เชšเชฟเชฌเชฆเซเชง เช•เซ‡เชŸเชฒเชพเช• เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชฎเชพเชŸเซ‡เชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชธเซ‡เชŸ เช›เซ‡.

เชธเซเชต-เช…เชญเซเชฏเชพเชธ เชฎเชพเชŸเซ‡ เช…เชนเซ€เช‚ เช•เซ‡เชŸเชฒเซ€เช• เชธเชพเชฎเช—เซเชฐเซ€ เช›เซ‡:

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹