рдХрд╛рдлреНрдХрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкреБрдирд░реНрдкреНрд░рд╕рдВрд╕реНрдХрд░рдг

рдХрд╛рдлреНрдХрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкреБрдирд░реНрдкреНрд░рд╕рдВрд╕реНрдХрд░рдг

рд╣реЗ рд╣рдмрд░ред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐ рдПрдХ рдЯреАрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рдХрд╛рдлреНрдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рд▓рд┐рдП рдЧрд╛рд░рдВрдЯреАрдХреГрдд рдбрд┐рд▓реАрд╡рд░реА рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рдХреА рдЕрд╕реНрдерд╛рдпреА рдЕрдиреБрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдордиреЗ рдХрд╛рдлреНрдХрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдПрдХ рдШрдЯрдирд╛ рдХреЗ рдкреБрди: рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЖрдпреЛрдЬрди рдХреИрд╕реЗ рдХрд┐рдпрд╛ред

рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдЖрдзреБрдирд┐рдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реНрдЯреИрдХ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдпрд╛ рдУрдкрдирд╢рд┐рдлреНрдЯ рдЬреИрд╕реЗ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдбреЙрдХрд░ рдЫрд╡рд┐ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рднреМрддрд┐рдХ рдФрд░ рдЖрднрд╛рд╕реА рд░рд╛рдЙрдЯрд░ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдпрд╛ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдРрд╕реЗ рдорд╛рд╣реМрд▓ рдореЗрдВ, рдХреБрдЫ рд╣рдореЗрд╢рд╛ рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреЛрдИ рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ рддреЛ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреБрди: рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╣рдорд╛рд░реА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдХрд╛рдлреНрдХрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдХреИрд╕рд╛ рдерд╛

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣рдордиреЗ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдВрджреЗрд╢ рдбрд┐рд▓реАрд╡рд░реА рдХреЗ рд▓рд┐рдП рдЖрдИрдмреАрдПрдо рдПрдордХреНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рдпрджрд┐ рд╕реЗрд╡рд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реБрдИ, рддреЛ рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢ рдХреЛ рдЖрдЧреЗ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдбреЗрдб-рд▓реЗрдЯрд░-рдХреНрдпреВ (рдбреАрдПрд▓рдХреНрдпреВ) рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдиреЗ рд╡рд╛рд▓реА рдХрддрд╛рд░ рдХреЗ рдмрдЧрд▓ рдореЗрдВ DLQ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рдВрджреЗрд╢ рдХреЛ IBM MQ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрджрд┐ рддреНрд░реБрдЯрд┐ рдЕрд╕реНрдерд╛рдпреА рдереА рдФрд░ рд╣рдо рдЗрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рдереЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, HTTP рдХреЙрд▓ рдкрд░ рдПрдХ рд░рд┐рд╕реЛрд░реНрд╕ рдПрдХреНрд╕реЗрд╕ рдЕрдкрд╡рд╛рдж рдпрд╛ MongoDb рдЕрдиреБрд░реЛрдз рдкрд░ рдПрдХ MongoTimeoutException), рддреЛ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рд░рдгрдиреАрддрд┐ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдЧреАред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рддрд░реНрдХ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореВрд▓ рд╕рдВрджреЗрд╢ рдХреЛ рджреЗрд░реА рд╕реЗ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рд╕рд┐рд╕реНрдЯрдо рдХрддрд╛рд░ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдПрдХ рдЕрд▓рдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдореЗрдВ рд╕рдВрджреЗрд╢ рд╣реЗрдбрд░ рдореЗрдВ рдПрдХ рдкреБрдирдГ рднреЗрдЬреЗрдВ рдирдВрдмрд░ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рд╡рд┐рд▓рдВрдм рдЕрдВрддрд░рд╛рд▓ рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рд╕реНрддрд░реАрдп рд░рдгрдиреАрддрд┐ рдХреЗ рдЕрдВрдд рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдпрджрд┐ рд╣рдо рд░рдгрдиреАрддрд┐ рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪ рдЧрдП рд╣реИрдВ рд▓реЗрдХрд┐рди рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рдЕрднреА рднреА рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рддреЛ рд╕рдВрджреЗрд╢ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП DLQ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВ

рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдирд┐рд░реНрдгрдп. рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд▓рдВрдм рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рдмрдирд╛рдиреЗ рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд▓рдВрдм рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрдврд╝реЗрдЧрд╛ред

рдХрд╛рдлреНрдХрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкреБрдирд░реНрдкреНрд░рд╕рдВрд╕реНрдХрд░рдг

рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЛ, рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд░реНрдгрд┐рдд рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдкрд╣реБрдВрдЪ рдирд┐рдпрдВрддреНрд░рдг рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╡рд┐рд╖рдп рдмрдирд╛рдиреЗ рдФрд░ рдЙрди рддрдХ рдЖрд╡рд╢реНрдпрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рд╕рд╣реА retention.ms рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреБрдирдГ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдордп рдорд┐рд▓ рд╕рдХреЗ рдФрд░ рд╡реЗ рдЗрд╕рд╕реЗ рдЧрд╛рдпрдм рди рд╣реЛрдВред рдкреНрд░рддреНрдпреЗрдХ рдореМрдЬреВрджрд╛ рдпрд╛ рдирдИ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдкрд╣реБрдВрдЪ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рд╣реЛрдЧрд╛ред

рдЖрдЗрдП рдЕрдм рджреЗрдЦреЗрдВ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ-рдХрд╛рдлреНрдХрд╛ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ-рдХрд╛рдлреНрдХрд╛ рд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреБрдирд░реНрдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдкреНрд░рд┐рдВрдЧ-рдХрд╛рдлреНрдХрд╛ рдХреА рд╕реНрдкреНрд░рд┐рдВрдЧ-рд░рд┐рдЯреНрд░реА рдкрд░ рдПрдХ рд╕рдХрд░реНрдордХ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдмреИрдХрдСрдл рдкреЙрд▓рд┐рд╕рд┐рдпреЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╕рд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдпрд╣ рдХрд╛рдлреА рд▓рдЪреАрд▓рд╛ рдЙрдкрдХрд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЛрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рджреЛрдмрд╛рд░рд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЕрдкрдбреЗрдЯ рдпрд╛ рдкрд░рд┐рдЪрд╛рд▓рди рд╕рдВрдмрдВрдзреА рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдкреБрдирд░реНрд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рдВрдмрд┐рдд рд╕рднреА рд╕рдВрджреЗрд╢ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЪреВрдБрдХрд┐ рдпрд╣ рдмрд┐рдВрджреБ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕ рдкрд░ рдЖрдЧреЗ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдкреНрд░рд┐рдВрдЧ-рдХрд╛рдлреНрдХрд╛ рд╕реНрд╡рдпрдВ рдХрдВрдЯреЗрдирд░рдЕрд╡реЗрдпрд░рдПрд░рд░рд╣реИрдВрдбрд▓рд░ рдХреЗ рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ SeekToCurrentErrorHandler, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдСрдлрд╝рд╕реЗрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдВрджреЗрд╢ рдХреЛ рдмрд╛рдж рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдкреНрд░рд┐рдВрдЧ-рдХрд╛рдлреНрдХрд╛ 2.3 рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рдХреЗ, BackOffPolicy рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред

рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреБрди:рд╕рдВрд╕рд╛рдзрд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреБрдирд░рд╛рд░рдВрдн рд╕реЗ рдмрдЪреЗ рд░рд╣рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХреЛрдИ 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
    }

рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрджрд┐ MessageListenerContainer рдЕрднреА рднреА рдЪрд▓ рд░рд╣рд╛ рд╣реИ рддреЛ retryAt рдЙрд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдкреБрди: рд▓реЙрдиреНрдЪ рдЯрд╛рд╕реНрдХ рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рд╕реНрдкреНрд░рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ retryAt рдорд╛рди рдкрд╛рддреЗ рд╣реИрдВ:

  1. рд░реА-рдХреЙрд▓ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдореВрд▓реНрдп рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рдХрд╛рдЙрдВрдЯрд░ рд╡реИрд▓реНрдпреВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рд░рдгрдиреАрддрд┐ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╡рд┐рд▓рдВрдм рдЕрдВрддрд░рд╛рд▓ рдХреА рдЦреЛрдЬ рдХреА рдЬрд╛рддреА рд╣реИред рд░рдгрдиреАрддрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣реА рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рд╣реИ; рд╣рдордиреЗ рдЗрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП JSON рдкреНрд░рд╛рд░реВрдк рдЪреБрдирд╛ рд╣реИред
  3. JSON рд╕рд░рдгреА рдореЗрдВ рдкрд╛рдП рдЧрдП рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рд╕реЗрдХрдВрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред retryAt рдХрд╛ рдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдХрдВрдб рдХреА рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдореЗрдВ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИред
  4. рдпрджрд┐ рдЕрдВрддрд░рд╛рд▓ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ retryAt рдХрд╛ рдорд╛рди рд╢реВрдиреНрдп рд╣реИ рдФрд░ рд╕рдВрджреЗрд╢ рдореИрдиреНрдпреБрдЕрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП DLQ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЬреЛ рдХреБрдЫ рдмрдЪрд╛ рд╣реИ рд╡рд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдмрд╛рд░-рдмрд╛рд░ рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдореЛрд░реА рдореЗрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдореЗрдВ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХреА рдЧрд┐рдирддреА рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд░реИрдЦрд┐рдХ рддрд░реНрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИред рд╕реНрдкреНрд░рд┐рдВрдЧ-рд░рд┐рдЯреНрд░реА рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдЦреЛрдП рд╣реБрдП рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреБрди: рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдмрд▓реНрдХрд┐ рд░рдгрдиреАрддрд┐ рдкреБрдирдГ рдЖрд░рдВрдн рд╣реЛ рдЬрд╛рдПрдЧреАред

рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рднрд╛рд░ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рднрд╛рд░реА рднрд╛рд░ рдХреЗ рдХрд╛рд░рдг рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдкреБрдирд░реНрдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рдкреИрдЯрд░реНрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рд╕рд░реНрдХрд┐рдЯ рдмреНрд░реЗрдХрд░.

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рддреНрд░реБрдЯрд┐ рд╕реАрдорд╛ рдХреЗрд╡рд▓ 1 рд╣реИ, рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдиреЗрдЯрд╡рд░реНрдХ рдЖрдЙрдЯреЗрдЬ рдХреЗ рдХрд╛рд░рдг рд╕рд┐рд╕реНрдЯрдо рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЫреЛрдЯреЗ рд╡рд┐рд▓рдВрдмрддрд╛ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╕реНрддреГрдд рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рднреА рд╕рдореВрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддреНрд░реБрдЯрд┐ рд╕реАрдорд╛ рдФрд░ рдЕрдВрддрд░рд╛рд▓ рдорд╛рди рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЧреИрд░-рдирд┐рдпрддрд╛рддреНрдордХ рддрд░реНрдХ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди

рдпрд╣рд╛рдВ рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдРрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (Retryer) рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ, рдЬреЛ 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ред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореВрд▓ рд╕рдВрджреЗрд╢ рдХреА рд░рд┐рдХреЙрд░реНрдб.рдХреА() рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирдпрд╛ рд╡рд┐рднрд╛рдЬрди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рд░рдгрдиреАрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди COUNTER рдорд╛рдиред
  • SEND_TO рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИ рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ RETRY_AT рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рдкреБрди: рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ DLQ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
  • рдХрд╛рд░рдг - рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдмрд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдгред

рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕рдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреБрдирдГ рднреЗрдЬрдиреЗ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП PostgreSQL рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЯрд╛рдЗрдорд░ рдПрдХ рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ RETRY_AT рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢ рдвреВрдВрдврддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреБрдВрдЬреА рд░рд┐рдХреЙрд░реНрдб.рдХреА() рдХреЗ рд╕рд╛рде DESTINATION рд╡рд┐рд╖рдп рдХреЗ ORIGINAL_PARTITION рд╡рд┐рднрд╛рдЬрди рдкрд░ рд╡рд╛рдкрд╕ рднреЗрдЬрддрд╛ рд╣реИред

рдПрдХ рдмрд╛рд░ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрджреЗрд╢ PostgreSQL рд╕реЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдпреВрдЖрдИ рдореЗрдВ рд╣реЛрддреА рд╣реИ рдЬреЛ REST API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд┐рдЯреНрд░реАрдпрд░ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддреА рд╣реИред рдЗрд╕рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдбреАрдПрд▓рдХреНрдпреВ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рджреЛрдмрд╛рд░рд╛ рднреЗрдЬрдирд╛ рдпрд╛ рд╣рдЯрд╛рдирд╛, рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрдирд╛ рдФрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдирд╛рдо рд╕реЗред

рдЪреВрдБрдХрд┐ рд╣рдорд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рдкрд░ рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рд╕рдХреНрд╖рдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдЙрд╕ рд╡рд┐рд╖рдп рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд┐рд╕реЗ рд░рд┐рдЯреНрд░реАрдпрд░ рд╕реБрди рд░рд╣рд╛ рд╣реИ, рдФрд░ рд░рд┐рдЯреНрд░реАрдпрд░ рдХреЛ DESTINATION рд╡рд┐рд╖рдп рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди, рдЕрдВрддрд░рд╛рд▓ рд╡рд┐рд╖рдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдбреАрдПрд▓рдХреНрдпреВ рдФрд░ рдпреВрдЖрдИ рд╣реИред

рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдПрдХ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╖рдп рдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрднреЛрдХреНрддрд╛ рд╕рдореВрд╣реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реНрдХ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд░рд┐рдЯреНрд░реАрдпрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рд╕рдВрджреЗрд╢ рдХреЛ рджреЛрдмрд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдкрд░ рджреВрд╕рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЙрддреНрдкрдиреНрди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд╕реЗ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рд╣рдо рдкреБрди: рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рдмрдирд╛рддреЗ рд╣реИрдВред рдЖрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдЧрдП рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рдПрдХ рд╣реА рдЙрдкрднреЛрдХреНрддрд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИред

рдХрд╛рдлреНрдХрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкреБрдирд░реНрдкреНрд░рд╕рдВрд╕реНрдХрд░рдг

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд░реНрдХрд┐рдЯ рдмреНрд░реЗрдХрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╕реНрдкреНрд░рд┐рдВрдЧ-рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрдлреНрд▓рд┐рдХреНрд╕ рдпрд╛ рдирдпрд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рд╕рд░реНрдХрд┐рдЯ рдмреНрд░реЗрдХрд░, рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдирд╛ рдЬрд╣рд╛рдВ рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЙрдЪрд┐рдд рдЕрдореВрд░реНрдд рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдгрдиреАрддрд┐ рдЪреБрдирдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рджрд┐рд╡рд╛рд░ рдкреИрдЯрд░реНрди, рдЬреЛ рдЙрдкрдпреЛрдЧреА рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдкреНрд░рд┐рдВрдЧ-рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрдлреНрд▓рд┐рдХреНрд╕ рдореЗрдВ рдпрд╣ рдереНрд░реЗрдб рдкреВрд▓ рдпрд╛ рд╕реЗрдорд╛рдлреЛрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЙрддреНрдкрд╛рджрди

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореБрдЦреНрдп рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕реА рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдирдХреА рдУрд░ рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛! рдРрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЗрд╡рд▓ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рд╖рдп рддрдХ рдкрд╣реБрдВрдЪрдиреЗ, рдХреБрдЫ рдХрд╛рдлреНрдХрд╛ рд╣реЗрдбрд░ рднрд░рдиреЗ рдФрд░ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕рдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдЬреБрдЯрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ. рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд░рд┐рдЯреНрд░реАрдпрд░ рдФрд░ рд╡рд╛рдкрд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд░реИрдЦрд┐рдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкрд╣рдЪрд╛рди рдХреА рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛ рд╕реНрдЯреЙрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ