เช•เชพเชซเช•เชพ เชคเชฐเชซเชฅเซ€ เชฎเชณเซ‡เชฒเซ€ เช˜เชŸเชจเชพเช“เชจเซ€ เชชเซเชจเชƒเชชเซเชฐเช•เซเชฐเชฟเชฏเชพ

เช•เชพเชซเช•เชพ เชคเชฐเชซเชฅเซ€ เชฎเชณเซ‡เชฒเซ€ เช˜เชŸเชจเชพเช“เชจเซ€ เชชเซเชจเชƒเชชเซเชฐเช•เซเชฐเชฟเชฏเชพ

เชนเซ‡ เชนเชฌเชฐ.

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

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

เช•เชพเชซเช•เชพ เชชเชนเซ‡เชฒเชพ เช•เซ‡เชตเซเช‚ เชนเชคเซเช‚

เช…เช—เชพเช‰ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เช…เชฎเซ‡ เช…เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชธ เชฎเซ‡เชธเซ‡เชœ เชกเชฟเชฒเชฟเชตเชฐเซ€ เชฎเชพเชŸเซ‡ IBM MQ เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เชนเชคเซ‹. เชœเซ‹ เชธเซ‡เชตเชพเชจเชพ เชธเช‚เชšเชพเชฒเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช•เซ‹เชˆ เชญเซ‚เชฒ เช†เชตเซ€ เชนเซ‹เชฏ, เชคเซ‹ เชชเซเชฐเชพเชชเซเชค เชธเช‚เชฆเซ‡เชถ เชตเชงเซ เชฎเซ‡เชจเซเชฏเซเช…เชฒ เชชเชพเชฐเซเชธเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชกเซ‡เชก-เชฒเซ‡เชŸเชฐ-เช•เซเชฏเซ (DLQ) เชฎเชพเช‚ เชฎเซ‚เช•เซ€ เชถเช•เชพเชฏ เช›เซ‡. DLQ เช‡เชจเช•เชฎเชฟเช‚เช— เช•เชคเชพเชฐเชจเซ€ เชฌเชพเชœเซเชฎเชพเช‚ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เชธเช‚เชฆเซ‡เชถ IBM MQ เชจเซ€ เช…เช‚เชฆเชฐ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹.

เชœเซ‹ เชญเซ‚เชฒ เช…เชธเซเชฅเชพเชฏเซ€ เชนเชคเซ€ เช…เชจเซ‡ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, HTTP เช•เซ‰เชฒ เชชเชฐ ResourceAccessException เช…เชฅเชตเชพ MongoDb เชตเชฟเชจเช‚เชคเซ€ เชชเชฐ MongoTimeoutException), เชคเซ‹ เชซเชฐเซ€เชฅเซ€ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพเชจเซ€ เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพ เช…เชฎเชฒเชฎเชพเช‚ เช†เชตเชถเซ‡. เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชฌเซเชฐเชพเชจเซเชšเชฟเช‚เช— เชคเชฐเซเช•เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ€เชงเชพ เชตเชฟเชจเชพ, เชฎเซ‚เชณ เชธเช‚เชฆเซ‡เชถ เช•เซเชฏเชพเช‚ เชคเซ‹ เชตเชฟเชฒเช‚เชฌเชฟเชค เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฟเชธเซเชŸเชฎ เช•เชคเชพเชฐเชฎเชพเช‚ เช…เชฅเชตเชพ เชธเช‚เชฆเซ‡เชถเชพเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชชเชนเซ‡เชฒเชพ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเซ€ เช…เชฒเช— เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เช–เชธเซ‡เชกเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เช†เชฎเชพเช‚ เชฎเซ‡เชธเซ‡เชœ เชนเซ‡เชกเชฐเชฎเชพเช‚ เชซเชฐเซ€ เชฎเซ‹เช•เชฒเซ‡เชฒ เชจเช‚เชฌเชฐเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ เชตเชฟเชฒเช‚เชฌเชจเชพ เช…เช‚เชคเชฐเชพเชฒ เช…เชฅเชตเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ-เชธเซเชคเชฐเชจเซ€ เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพเชจเชพ เช…เช‚เชค เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเซ‹ เช›เซ‡. เชœเซ‹ เช†เชชเชฃเซ‡ เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพเชจเชพ เช…เช‚เชค เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเซ€ เช—เชฏเชพ เช›เซ€เช เชชเชฐเช‚เชคเซ เชฌเชพเชนเซเชฏ เชธเชฟเชธเซเชŸเชฎ เชนเชœเซ€ เชชเชฃ เช‰เชชเชฒเชฌเซเชง เชจเชฅเซ€, เชคเซ‹ เชธเช‚เชฆเซ‡เชถ เชฎเซ‡เชจเซเชฏเซเช…เชฒ เชชเชพเชฐเซเชธเชฟเช‚เช— เชฎเชพเชŸเซ‡ DLQ เชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เช‰เช•เซ‡เชฒ เชถเซ‹เชงเชตเซ‹

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

เช•เชพเชซเช•เชพ เชคเชฐเชซเชฅเซ€ เชฎเชณเซ‡เชฒเซ€ เช˜เชŸเชจเชพเช“เชจเซ€ เชชเซเชจเชƒเชชเซเชฐเช•เซเชฐเชฟเชฏเชพ

เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชนเช•เชพเชฐเชพเชคเซเชฎเช• เชธเชฎเซ€เช•เซเชทเชพเช“ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเชซเชณ เชจเชฅเซ€. เชธเซŒ เชชเซเชฐเชฅเชฎ, เช•เชพเชฐเชฃ เช•เซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช, เชตเซเชฏเชตเชธเชพเชฏเชจเซ€ เช†เชตเชถเซเชฏเช•เชคเชพเช“เชจเซ‡ เชฒเชพเช—เซ เช•เชฐเชตเชพ เช‰เชชเชฐเชพเช‚เชค, เชตเชฐเซเชฃเชตเซ‡เชฒ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡ เช˜เชฃเซ‹ เชธเชฎเชฏ เชชเชธเชพเชฐ เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡.

เช† เช‰เชชเชฐเชพเช‚เชค, เชœเซ‹ เช•เชพเชซเช•เชพ เช•เซเชฒเชธเซเชŸเชฐ เชชเชฐ เชเช•เซเชธเซ‡เชธ เช•เช‚เชŸเซเชฐเซ‹เชฒ เชธเช•เซเชทเชฎ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เชตเชฟเชทเชฏเซ‹ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เชเช•เซเชธเซ‡เชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เชฅเซ‹เชกเซ‹ เชธเชฎเชฏ เชชเชธเชพเชฐ เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡. เช† เช‰เชชเชฐเชพเช‚เชค, เชคเชฎเชพเชฐเซ‡ เชฆเชฐเซ‡เช• เชชเซเชจเชƒเชชเซเชฐเชฏเชพเชธเชจเชพ เชตเชฟเชทเชฏเซ‹ เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ retention.ms เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ เชœเซ‡เชฅเซ€ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฎเซ‹เช•เชฒเชตเชพเชจเซ‹ เชธเชฎเชฏ เชฎเชณเซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เช…เชฆเซƒเชถเซเชฏ เชฅเชˆ เชจ เชœเชพเชฏ. เช…เชฎเชฒเซ€เช•เชฐเชฃ เช…เชจเซ‡ เชเช•เซเชธเซ‡เชธเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เชฆเชฐเซ‡เช• เชตเชฐเซเชคเชฎเชพเชจ เช…เชฅเชตเชพ เชจเชตเซ€ เชธเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเชตเซ€ เชชเชกเชถเซ‡.

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

spring-kafka เชชเซ‹เชคเซ‡ ContainerAwareErrorHandler เชจเชพ เช˜เชฃเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเซ‹ เชชเซ‚เชฐเชพ เชชเชพเชกเซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ SeekToCurrentErrorHandler, เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชคเชฎเซ‡ เชญเซ‚เชฒเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช‘เชซเชธเซ‡เชŸเชจเซ‡ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เชชเช›เซ€เชฅเซ€ เชธเช‚เชฆเซ‡เชถ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชธเซเชชเซเชฐเชฟเช‚เช—-เช•เชพเชซเช•เชพ 2.3 เชจเชพ เชธเช‚เชธเซเช•เชฐเชฃเชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เชจเซ‡, เชฌเซ‡เช•เช“เชซ เชชเซ‹เชฒเชฟเชธเซ€ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเซเชฏเซเช‚.

เช† เช…เชญเชฟเช—เชฎ เชชเซเชจเชƒเชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡เชฒเชพ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญเชจเซ‡ เชŸเช•เซ€ เชฐเชนเซ‡เชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเชœเซ€ เชชเชฃ เช•เซ‹เชˆ DLQ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชจเชฅเซ€. เช…เชฎเซ‡ 2019 เชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เช† เชตเชฟเช•เชฒเซเชช เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซ‹ เชนเชคเซ‹, เช†เชถเชพเชตเชพเชฆเซ€ เชฐเซ€เชคเซ‡ เชฎเชพเชจเชคเชพ เชนเชคเชพ เช•เซ‡ DLQ เชจเซ€ เชœเชฐเซ‚เชฐ เชฐเชนเซ‡เชถเซ‡ เชจเชนเซ€เช‚ (เช…เชฎเซ‡ เชญเชพเช—เซเชฏเชถเชพเชณเซ€ เชนเชคเชพ เช…เชจเซ‡ เช†เชตเซ€ เชฐเชฟเชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชธเชพเชฅเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเซเชฏเชพเชจเชพ เช˜เชฃเชพ เชฎเชนเชฟเชจเชพเช“ เชชเช›เซ€ เช–เชฐเซ‡เช–เชฐ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชนเซ‹เชคเซ€). เช…เชธเซเชฅเชพเชฏเซ€ เชญเซ‚เชฒเซ‹เชจเซ‡ เช•เชพเชฐเชฃเซ‡ SeekToCurrentErrorHandlerเชจเซ‡ เชซเชพเชฏเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚. เชฌเชพเช•เซ€เชจเซ€ เชญเซ‚เชฒเซ‹ เชฒเซ‹เช—เชฎเชพเช‚ เช›เชพเชชเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€, เชชเชฐเชฟเชฃเชพเชฎเซ‡ เช‘เชซเชธเซ‡เชŸ เชฅเชˆ, เช…เชจเซ‡ เช†เช—เชณเชจเชพ เชธเช‚เชฆเซ‡เชถเชพ เชธเชพเชฅเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชšเชพเชฒเซ เชฐเชนเซ€.

เช…เช‚เชคเชฟเชฎ เชจเชฟเชฐเซเชฃเชฏ

SeekToCurrentErrorHandler เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช…เชฎเชฒเซ€เช•เชฐเชฃเซ‡ เช…เชฎเชจเซ‡ เชธเช‚เชฆเซ‡เชถเชพ เชซเชฐเซ€เชฅเซ€ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เชชเชฆเซเชงเชคเชฟ เชตเชฟเช•เชธเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเช‚เช•เซ‡เชค เช†เชชเซเชฏเซ‹.

เชธเซŒ เชชเซเชฐเชฅเชฎ, เช…เชฎเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เช…เชจเซเชญเชตเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เช…เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชคเชฐเซเช•เชจเชพ เช†เชงเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเชตเชพ เชฎเชพเช—เซ€เช เช›เซ€เช. เชฐเซ‡เช–เซ€เชฏ เชคเชฐเซเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡, เชชเซเชจเชƒเชชเซเชฐเชฏเชพเชธ เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพ เชฆเซเชตเชพเชฐเชพ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชŸเซ‚เช‚เช•เชพ เช—เชพเชณเชพ เชฎเชพเชŸเซ‡ เชจเชตเชพ เชธเช‚เชฆเซ‡เชถเชพเช“ เชตเชพเช‚เชšเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเชตเซเช‚ เชถเซเชฐเซ‡เชทเซเช  เชฐเชนเซ‡เชถเซ‡. เช…เชจเซเชฏ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเซ‹ เชฎเชพเชŸเซ‡, เชนเซเช‚ เชเช• เชœ เชฌเชฟเช‚เชฆเซ เชฐเชพเช–เชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชนเชคเซ‹ เชœเซ‡ เชชเซเชจเชƒเชชเซเชฐเชฏเชพเชธ เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพ เชฒเชพเช—เซ เช•เชฐเชถเซ‡. เชตเชงเซเชฎเชพเช‚, เช† เชเช• เชฌเชฟเช‚เชฆเซ เชฌเช‚เชจเซ‡ เช…เชญเชฟเช—เชฎเซ‹ เชฎเชพเชŸเซ‡ DLQ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชนเซ‹เชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡.

เชชเซเชจเชƒเชชเซเชฐเชฏเชพเชธ เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพ เชชเซ‹เชคเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช, เชœเซ‡ เช…เชธเซเชฅเชพเชฏเซ€ เชญเซ‚เชฒ เชฅเชพเชฏ เชคเซเชฏเชพเชฐเซ‡ เช†เช—เชฒเชพ เช…เช‚เชคเชฐเชพเชฒเชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เช›เซ‡.

เชฒเซ€เชจเชฟเชฏเชฐ เชฒเซ‹เชœเชฟเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช—เซเชฐเชพเชนเช•เชจเซ‡ เชฐเซ‹เช•เชตเซเช‚

เชธเซเชชเซเชฐเชฟเช‚เช—-เช•เชพเชซเช•เชพ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เช—เซเชฐเชพเชนเช•เชจเซ‡ เชฐเซ‹เช•เชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เช•เซ‹เชก เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชถเซ‡:

public void pauseListenerContainer(MessageListenerContainer listenerContainer, 
                                   Instant retryAt) {
        if (nonNull(retryAt) && listenerContainer.isRunning()) {
            listenerContainer.stop();
            taskScheduler.schedule(() -> listenerContainer.start(), retryAt);
            return;
        }
        // to DLQ
    }

เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, retryAt เช MessageListenerContainer เชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡ เชœเซ‹ เชคเซ‡ เชนเชœเซ เชชเชฃ เชšเชพเชฒเซ เช›เซ‡. เชŸเชพเชธเซเช•เชถเซ‡เชกเซเชฏเซเชฒเชฐเชฎเชพเช‚ เชฒเซ‰เชจเซเชš เช•เชฐเชพเชฏเซ‡เชฒเชพ เชเช• เช…เชฒเช— เชฅเซเชฐเซ‡เชกเชฎเชพเช‚ เชซเชฐเซ€เชฅเซ€ เชฒเซ‰เชจเซเชš เชฅเชถเซ‡, เชœเซ‡เชจเซเช‚ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชชเชฃ เชตเชธเช‚เชค เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เช…เชฎเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เชฐเซ€เชคเซ‡ retryAt เชฎเซ‚เชฒเซเชฏ เชถเซ‹เชงเซ€เช เช›เซ€เช:

  1. เชฐเซ€-เช•เซ‹เชฒ เช•เชพเช‰เชจเซเชŸเชฐเชจเซ€ เช•เชฟเช‚เชฎเชค เช‰เชชเชฐ เชœเซ‹เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
  2. เช•เชพเช‰เชจเซเชŸเชฐ เชตเซ‡เชฒเซเชฏเซเชจเชพ เช†เชงเชพเชฐเซ‡, เชชเซเชจเชƒเชชเซเชฐเชฏเชพเชธ เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพเชฎเชพเช‚ เชตเชฐเซเชคเชฎเชพเชจ เชตเชฟเชฒเช‚เชฌ เช…เช‚เชคเชฐเชพเชฒ เชถเซ‹เชงเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เชœ เชœเชพเชนเซ‡เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡; เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ JSON เชซเซ‹เชฐเซเชฎเซ‡เชŸ เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซเช‚ เช›เซ‡.
  3. JSON เชเชฐเซ‡เชฎเชพเช‚ เชฎเชณเซ‡เชฒ เช…เช‚เชคเชฐเชพเชฒเชฎเชพเช‚ เชธเซ‡เช•เช‚เชกเชจเซ€ เชธเช‚เช–เซเชฏเชพ เช›เซ‡ เชœเซ‡เชจเชพ เชชเช›เซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡. retryAt เชฎเชพเชŸเซ‡ เชฎเซ‚เชฒเซเชฏ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช† เชธเซ‡เช•เชจเซเชกเชจเซ€ เชธเช‚เช–เซเชฏเชพ เชตเชฐเซเชคเชฎเชพเชจ เชธเชฎเชฏเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
  4. เชœเซ‹ เช…เช‚เชคเชฐเชพเชฒ เชจ เชฎเชณเซ‡, เชคเซ‹ retryAt เชจเซ€ เช•เชฟเช‚เชฎเชค เชจเชฒ เช›เซ‡ เช…เชจเซ‡ เชธเช‚เชฆเซ‡เชถ เชฎเซ‡เชจเซเชฏเซเช…เชฒ เชชเชพเชฐเซเชธเชฟเช‚เช— เชฎเชพเชŸเซ‡ DLQ เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

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

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

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

เชฌเชฟเชจ-เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชคเชฐเซเช• เชธเชพเชฅเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชฎเชพเช‚เชฅเซ€ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เช…เชฒเช— เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ

เช…เชนเซ€เช‚ เช•เซ‹เชกเชจเซเช‚ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡ เชœเซ‡ เช†เชตเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ (เชชเซเชจเชƒเชชเซเชฐเชฏเชคเซเชจเช•เชฐเซเชคเชพ)เชจเซ‡ เชธเช‚เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡, เชœเซ‡ RETRY_AT เชธเชฎเชฏ เชชเซ‚เชฐเซ‹ เชฅเชตเชพ เชชเชฐ DESTINATION เชตเชฟเชทเชฏ เชชเชฐ เชซเชฐเซ€เชฅเซ€ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡:


public <K, V> void retry(ConsumerRecord<K, V> record, String retryToTopic, 
                         Instant retryAt, String counter, String groupId, Exception e) {
        Headers headers = ofNullable(record.headers()).orElse(new RecordHeaders());
        List<Header> arrayOfHeaders = 
            new ArrayList<>(Arrays.asList(headers.toArray()));
        updateHeader(arrayOfHeaders, GROUP_ID, groupId::getBytes);
        updateHeader(arrayOfHeaders, DESTINATION, retryToTopic::getBytes);
        updateHeader(arrayOfHeaders, ORIGINAL_PARTITION, 
                     () -> Integer.toString(record.partition()).getBytes());
        if (nonNull(retryAt)) {
            updateHeader(arrayOfHeaders, COUNTER, counter::getBytes);
            updateHeader(arrayOfHeaders, SEND_TO, "retry"::getBytes);
            updateHeader(arrayOfHeaders, RETRY_AT, retryAt.toString()::getBytes);
        } else {
            updateHeader(arrayOfHeaders, REASON, 
                         ExceptionUtils.getStackTrace(e)::getBytes);
            updateHeader(arrayOfHeaders, SEND_TO, "backout"::getBytes);
        }
        ProducerRecord<K, V> messageToSend =
            new ProducerRecord<>(retryTopic, null, null, record.key(), record.value(), arrayOfHeaders);
        kafkaTemplate.send(messageToSend);
    }

เช‰เชฆเชพเชนเชฐเชฃ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชนเซ‡เชกเชฐเชฎเชพเช‚ เช˜เชฃเซ€ เชฌเชงเซ€ เชฎเชพเชนเชฟเชคเซ€ เชชเซเชฐเชธเชพเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡. RETRY_AT เชจเซเช‚ เชฎเซ‚เชฒเซเชฏ เช‰เชชเชญเซ‹เช•เซเชคเชพ เชธเซเชŸเซ‹เชช เชฆเซเชตเชพเชฐเชพ เชซเชฐเซ€เชฅเซ€ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพเชจเซ€ เชชเชฆเซเชงเชคเชฟเชจเซ€ เชœเซ‡เชฎ เชœ เชœเซ‹เชตเชพ เชฎเชณเซ‡ เช›เซ‡. DESTINATION เช…เชจเซ‡ RETRY_AT เช‰เชชเชฐเชพเช‚เชค เช…เชฎเซ‡ เชชเชพเชธ เช•เชฐเซ€เช เช›เซ€เช:

  • GROUP_ID, เชœเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เช…เชฎเซ‡ เชฎเซ‡เชจเซเชฏเซเช…เชฒ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช…เชจเซ‡ เชธเชฐเชณ เชถเซ‹เชง เชฎเชพเชŸเซ‡ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซเช‚ เชœเซ‚เชฅ เช•เชฐเซ€เช เช›เซ€เช.
  • ORIGINAL_PARTITION เช เชœ เช—เซเชฐเชพเชนเช•เชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฎเชพเชŸเซ‡ เชฐเชพเช–เชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹. เช† เชชเชฐเชฟเชฎเชพเชฃ เชจเชฒ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชฎเซ‚เชณ เชธเช‚เชฆเซ‡เชถเชจเซ€ record.key() เช•เซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชจเชตเซเช‚ เชชเชพเชฐเซเชŸเซ€เชถเชจ เชฎเซ‡เชณเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.
  • เชซเชฐเซ€เชฅเซ€ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพเชจเซ€ เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพ เช…เชจเซเชธเชฐเชตเชพ เชฎเชพเชŸเซ‡ COUNTER เชฎเซ‚เชฒเซเชฏ เช…เชชเชกเซ‡เชŸ เช•เชฐเซเชฏเซเช‚.
  • SEND_TO เช เชธเชคเชค เชธเช‚เช•เซ‡เชค เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชถเซเช‚ เชธเช‚เชฆเซ‡เชถ RETRY_AT เชชเชฐ เชชเชนเซ‹เช‚เชšเชตเชพ เชชเชฐ เชชเซเชจเชƒเชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฎเชพเชŸเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡ เช…เชฅเชตเชพ DLQ เชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡.
  • REASON - เชธเช‚เชฆเซ‡เชถเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชตเชฟเช•เซเชทเซ‡เชช เชชเชกเชตเชพเชจเซเช‚ เช•เชพเชฐเชฃ.

เชฐเซ€เชŸเซเชฐเชพเชฏเชฐ เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชเชธเช•เซเชฏเซเชเชฒเชฎเชพเช‚ เชซเชฐเซ€เชฅเซ€ เชฎเซ‹เช•เชฒเชตเชพ เช…เชจเซ‡ เชฎเซ‡เชจเซเชฏเซเช…เชฒ เชชเชพเชฐเซเชธเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ‹ เชธเช‚เช—เซเชฐเชน เช•เชฐเซ‡ เช›เซ‡. เชŸเชพเชˆเชฎเชฐ เชเช• เช•เชพเชฐเซเชฏ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ RETRY_AT เชธเชพเชฅเซ‡ เชธเช‚เชฆเซ‡เชถเชพ เชถเซ‹เชงเซ‡ เช›เซ‡ เช…เชจเซ‡ เช•เซ€ record.key() เชธเชพเชฅเซ‡ DESTINATION เชตเชฟเชทเชฏเชจเชพ ORIGINAL_PARTITION เชชเชพเชฐเซเชŸเซ€เชถเชจ เชชเชฐ เชชเชพเช›เชพ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡.

เชเช•เชตเชพเชฐ เชฎเซ‹เช•เชฒเซเชฏเชพ เชชเช›เซ€, เชธเช‚เชฆเซ‡เชถเชพ PostgreSQL เชฎเชพเช‚เชฅเซ€ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซเช‚ เชฎเซ‡เชจเซเชฏเซเช…เชฒ เชชเชพเชฐเซเชธเชฟเช‚เช— เชเช• เชธเชฐเชณ UI เชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡ เชœเซ‡ REST API เชฆเซเชตเชพเชฐเชพ Retryer เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡เชจเซ€ เชฎเซเช–เซเชฏ เชตเชฟเชถเซ‡เชทเชคเชพเช“ DLQ เชฎเชพเช‚เชฅเซ€ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฎเซ‹เช•เชฒเชตเชพ เช…เชฅเชตเชพ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพ, เชญเซ‚เชฒเชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชœเซ‹เชตเซ€ เช…เชจเซ‡ เชธเช‚เชฆเซ‡เชถเชพเช“ เชถเซ‹เชงเชตเชพเชจเซเช‚ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เชญเซ‚เชฒเชจเชพ เชจเชพเชฎ เชฆเซเชตเชพเชฐเชพ.

เช…เชฎเชพเชฐเชพ เช•เซเชฒเชธเซเชŸเชฐเซ‹ เชชเชฐ เชเช•เซเชธเซ‡เชธ เช•เช‚เชŸเซเชฐเซ‹เชฒ เชธเช•เซเชทเชฎ เชนเซ‹เชตเชพเชฅเซ€, เชชเซเชจ: เชชเซเชฐเชฏเชพเชธ เช•เชฐเชจเชพเชฐ เชœเซ‡ เชตเชฟเชทเชฏเชจเซ‡ เชธเชพเช‚เชญเชณเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡ เชคเซ‡เชจเซ€ เชเช•เซเชธเซ‡เชธเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเซ€ เช…เชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชฏเชคเซเชจเช•เชฐเซเชคเชพเชจเซ‡ DESTINATION เชตเชฟเชทเชฏ เชชเชฐ เชฒเช–เชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชตเซ€ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เช† เช…เชธเซเชตเชฟเชงเชพเชœเชจเช• เช›เซ‡, เชชเชฐเช‚เชคเซ, เช‡เชจเซเชŸเชฐเชตเชฒ เชตเชฟเชทเชฏเชจเชพ เช…เชญเชฟเช—เชฎเชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชคเซ‡เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซเชตเชฟเชงเชพเชฏเซเช•เซเชค DLQ เช…เชจเซ‡ UI เช›เซ‡.

เชเชตเชพ เช•เชฟเชธเซเชธเชพเช“ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เช‡เชจเช•เชฎเชฟเช‚เช— เชตเชฟเชทเชฏ เช˜เชฃเชพ เชœเซเชฆเชพ เชœเซเชฆเชพ เช‰เชชเชญเซ‹เช•เซเชคเชพ เชœเซ‚เชฅเซ‹ เชฆเซเชตเชพเชฐเชพ เชตเชพเช‚เชšเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชฎเชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เชตเชฟเชตเชฟเชง เชคเชฐเซเช•เชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ‡ เช›เซ‡. เช†เชฎเชพเช‚เชจเซ€ เชเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ Retryer เชฆเซเชตเชพเชฐเชพ เชธเช‚เชฆเซ‡เชถเชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฅเซ€ เชฌเซ€เชœเซ€ เชกเซเชชเซเชฒเชฟเช•เซ‡เชŸเชฎเชพเช‚ เชชเชฐเชฟเชฃเชฎเชถเซ‡. เช†เชจเซ€ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชซเชฐเซ€เชฅเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เช…เชฒเช— เชตเชฟเชทเชฏ เชฌเชจเชพเชตเซ€เช เช›เซ€เช. เช†เชตเชจเชพเชฐเชพ เช…เชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชฏเชพเชธเชจเชพ เชตเชฟเชทเชฏเซ‹ เชธเชฎเชพเชจ เช‰เชชเชญเซ‹เช•เซเชคเชพ เช•เซ‹เชˆเชชเชฃ เชชเซเชฐเชคเชฟเชฌเช‚เชง เชตเชฟเชจเชพ เชตเชพเช‚เชšเซ€ เชถเช•เซ‡ เช›เซ‡.

เช•เชพเชซเช•เชพ เชคเชฐเชซเชฅเซ€ เชฎเชณเซ‡เชฒเซ€ เช˜เชŸเชจเชพเช“เชจเซ€ เชชเซเชจเชƒเชชเซเชฐเช•เซเชฐเชฟเชฏเชพ

เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เช† เช…เชญเชฟเช—เชฎ เชธเชฐเซเช•เชฟเชŸ เชฌเซเชฐเซ‡เช•เชฐ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชคเซเช‚ เชจเชฅเซ€, เชœเซ‹ เช•เซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ spring-Cloud-netflix เช…เชฅเชตเชพ เชจเชตเซเช‚ เชตเชธเช‚เชค เชตเชพเชฆเชณ เชธเชฐเซเช•เชฟเชŸ เชฌเซเชฐเซ‡เช•เชฐ, เชธเซเชฅเชพเชจเซ‹เชจเซ‡ เชฒเชชเซ‡เชŸเซ€เชจเซ‡ เชœเซเชฏเชพเช‚ เชฌเชพเชนเซเชฏ เชธเซ‡เชตเชพเช“เชจเซ‡ เชฏเซ‹เช—เซเชฏ เช…เชฎเซ‚เชฐเซเชคเชฎเชพเช‚ เชฌเซ‹เชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชตเชงเซเชฎเชพเช‚, เชคเซ‡ เชฎเชพเชŸเซ‡ เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเซ‡ เช›เซ‡ เชฌเชฒเซเช•เชนเซ‡เชก เชชเซ‡เชŸเชฐเซเชจ, เชœเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชชเชฃ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเซเชชเซเชฐเชฟเช‚เช—-เช•เซเชฒเชพเช‰เชก-เชจเซ‡เชŸเชซเซเชฒเชฟเช•เซเชธเชฎเชพเช‚ เช† เชฅเซเชฐเซ‡เชก เชชเซ‚เชฒ เช…เชฅเชตเชพ เชธเซ‡เชฎเชพเชซเซ‹เชฐ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชจเชฟเชทเซเช•เชฐเซเชท

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

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‹ เชเช• เชฎเซเช–เซเชฏ เชซเชพเชฏเชฆเซ‹ เช เช›เซ‡ เช•เซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเชฎเชพเชจ เช•เชพเชซเช•เชพ เช•เซเชฒเชธเซเชŸเชฐ เชชเชฐ เชšเชพเชฒเชคเซ€ เชฌเชพเชนเซเชฏ เชธเชฟเชธเซเชŸเชฎเซ‹ เชฆเซเชตเชพเชฐเชพ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชคเซ‡เชฎเชจเซ€ เชฌเชพเชœเซเชฎเชพเช‚ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ! เช†เชตเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชซเช•เซเชค เชชเซเชจเชƒเชชเซเชฐเชฏเชพเชธเชจเชพ เชตเชฟเชทเชฏเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡, เชฅเซ‹เชกเชพ เช•เชพเชซเช•เชพ เชนเซ‡เชกเชฐเซ‹ เชญเชฐเซ‹ เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชจเชพเชฐเชจเซ‡ เชธเช‚เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเซ‹. เช•เซ‹เชˆ เชตเชงเชพเชฐเชพเชจเซเช‚ เชˆเชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ เชŠเชญเซเช‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เช…เชจเซ‡ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเชฎเชพเช‚เชฅเซ€ เชฐเซ€เชŸเซเชฐเซ€เชฏเชฐ เช…เชจเซ‡ เชฌเซ‡เช• เชชเชฐ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเชพเชฏเซ‡เชฒเชพ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เช˜เชŸเชพเชกเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชฐเซ‡เช–เซ€เชฏ เชคเชฐเซเช• เชธเชพเชฅเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเซ‡ เช“เชณเช–เซ€ เช…เชจเซ‡ เช‰เชชเชญเซ‹เช•เซเชคเชพ เชธเซเชŸเซ‹เชช เชฆเซเชตเชพเชฐเชพ เชซเชฐเซ€เชฅเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ€.

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

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