рдХрд╛рдлреНрдХрд╛ рдХрд╕рд░реА рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдмрдиреНрдпреЛ

рдХрд╛рдлреНрдХрд╛ рдХрд╕рд░реА рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдмрдиреНрдпреЛ

рд╣реЗ рд╣рд╛рдмрд░!

рдо Tinkoff рдЯреЛрд▓реАрдорд╛ рдХрд╛рдо рдЧрд░реНрдЫреБ, рдЬрд╕рд▓реЗ рдЖрдлреНрдиреИ рд╕реВрдЪрдирд╛ рдХреЗрдиреНрджреНрд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫред рдо рдкреНрд░рд╛рдпрдГ рдЬрд╛рднрд╛рдорд╛ рд╡рд╕рдиреНрдд рдмреБрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдЫреБ рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдЙрддреНрдкрдиреНрди рд╣реБрдиреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдЫреБред

рд╣рд╛рдореНрд░рд╛ рдзреЗрд░реИрдЬрд╕реЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВрд▓реЗ рд╕рдиреНрджреЗрд╢ рдмреНрд░реЛрдХрд░ рдорд╛рд░реНрдлрдд рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рд░реВрдкрдорд╛ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНрдЫрдиреНред рдкрд╣рд┐рд▓реЗ, рд╣рд╛рдореАрд▓реЗ IBM MQ рд▓рд╛рдИ рдмреНрд░реЛрдХрд░рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ, рдЬрд╕рд▓реЗ рдЕрдм рд▓реЛрдбрд╕рдБрдЧ рд╕рд╛рдордирд╛ рдЧрд░реНрди рд╕рдХреНрджреИрди, рддрд░ рдПрдХреИ рд╕рдордпрдорд╛ рдЙрдЪреНрдЪ рдбреЗрд▓рд┐рднрд░реА рдЧреНрдпрд╛рд░реЗрдиреНрдЯреАрд╣рд░реВ рдерд┐рдПред

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

рдЧреНрдпрд╛рд░реЗрдиреНрдЯреА рд╡рд┐рддрд░рдг рд░ рдЕрдзрд┐рдХ

рддрд▓ рдЫрд▓рдлрд▓ рдЧрд░рд┐рдПрдХрд╛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд▓реЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЬрдбрд╛рди рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд╕рдБрдЧ рдзреЗрд░реИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд░реЛрдХреНрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫред рддрд░ рдкрд╣рд┐рд▓реЗ рдо рдПрдХ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдорд╛ рдзреНрдпрд╛рди рджрд┐рди рдЪрд╛рд╣рдиреНрдЫреБ рдЬрд╕рд▓реЗ рд╕рдореНрднрд╛рд╡рд┐рдд рдбрд┐рдмрдЧрд▓рд╛рдИ рд╕реБрд╡рд┐рдзрд╛ рджрд┐рдиреНрдЫред

рдпрд╕рд▓реЗ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ 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, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреНрд▓рд╕реНрдЯрд░ рдиреЗрддрд╛рд▓реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЗрдЦрд┐рдПрдХреЛ рд╕рдиреНрджреЗрд╢рд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдХрддрд┐ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реЗрдкрдЫрд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд▓реЗ рдирд┐рдореНрди рдорд╛рди рд▓рд┐рди рд╕рдХреНрдЫ:

  • реж - рдорд╛рдиреНрдпрддрд╛рд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░рд┐рдиреЗ рдЫреИрдиред
  • 1 рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╣реЛ, рдХреЗрд╡рд▓ 1 рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
  • тИТ1 тАФ рд╕рдмреИ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬреНрдб рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВрдмрд╛рдЯ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ (рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗрдЯрдЕрдк min.insync.replicas).

рд╕реВрдЪреАрдмрджреНрдз рдорд╛рдирд╣рд░реВрдмрд╛рдЯ рдпреЛ рд╕реНрдкрд╖реНрдЯ рдЫ рдХрд┐ acks рдмрд░рд╛рдмрд░ тИТ1 рд▓реЗ рд╕рдиреНрджреЗрд╢ рд╣рд░рд╛рдЙрдиреЗ рдЫреИрди рднрдиреНрдиреЗ рдмрд▓рд┐рдпреЛ рдЧреНрдпрд╛рд░реЗрдиреНрдЯреА рджрд┐рдиреНрдЫред

рд╣рд╛рдореА рд╕рдмреИрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ, рд╡рд┐рддрд░рдг рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЫрдиреНред рдХреНрд╖рдгрд┐рдХ рдЧрд▓реНрддреАрд╣рд░реВ рд╡рд┐рд░реБрджреНрдз рд╕реБрд░рдХреНрд╖рд╛ рдЧрд░реНрди, рдХрд╛рдлреНрдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рднрд┐рддреНрд░ рдкреБрди: рдкрдард╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд╕реЗрдЯ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рдбреЗрд▓рд┐рднрд░реА.рдЯрд╛рдЗрдордЖрдЙрдЯ.рдПрдордПрд╕ред рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдорд╛ Integer.MAX_VALUE (2147483647) рдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рди рднрдПрдХреЛрд▓реЗ, рд╕рдиреНрджреЗрд╢ рдкреБрди: рдкреНрд░рдпрд╛рд╕рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдХреЗрд╡рд▓ delivery.timeout.ms рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрд░ рд╕рдорд╛рдпреЛрдЬрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рд╣рд╛рдореА рдареНрдпрд╛рдХреНрдХреИ рдПрдХ рдкрдЯрдХ рдбреЗрд▓рд┐рднрд░реА рддрд┐рд░ рд▓рд╛рдЧрд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ

рд╕реВрдЪреАрдмрджреНрдз рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд▓реЗ рд╣рд╛рдореНрд░реЛ рдирд┐рд░реНрдорд╛рддрд╛рд▓рд╛рдИ рдЙрдЪреНрдЪ рдЧреНрдпрд╛рд░реЗрдиреНрдЯреАрд╕рд╣рд┐рдд рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдард╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдЕрдм рдХрд╛рдлреНрдХрд╛ рд╡рд┐рд╖рдпрдорд╛ рдПрдЙрдЯрд╛ рд╕рдиреНрджреЗрд╢рдХреЛ рдПрдЙрдЯрд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдорд╛рддреНрд░реИ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ рднрдиреА рдХрд╕рд░реА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдХреБрд░рд╛ рдЧрд░реМрдВ? рд╕рд░рд▓ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рд░реНрдорд╛рддрд╛ рдорд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╕реЗрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рд╕рдХреНрд╖рдоред idempotence рд╕рддреНрдп рдХреЛ рд▓рд╛рдЧреАред рдЗрдбрдореНрдкреЛрдЯреЗрдиреНрд╕реАрд▓реЗ рдЧреНрдпрд╛рд░реЗрдиреНрдЯреА рджрд┐рдиреНрдЫ рдХрд┐ рдПрдЙрдЯрд╛ рд╡рд┐рд╖рдпрдХреЛ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рднрд╛рдЬрдирдорд╛ рдПрдЙрдЯрд╛ рд╕рдиреНрджреЗрд╢ рдорд╛рддреНрд░ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫред рдЗрдбрдореНрдкреЛрдЯреЗрдиреНрд╕реА рд╕рдХреНрд╖рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрд╡ рд╢рд░реНрдд рдорд╛рдирд╣рд░реВ рд╣реЛ acks = all, рдкреБрди: рдкреНрд░рдпрд╛рд╕ > 0, max.in.flight.requests.per.connection тЙд релред рдпрджрд┐ рдпреА рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ, рдорд╛рдерд┐рдХрд╛ рдорд╛рдирд╣рд░реВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕реЗрдЯ рд╣реБрдиреЗрдЫрдиреНред

рдЬрдм idempotency рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдпреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рд╕рдорд╛рди рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рд╕рдорд╛рди рд╡рд┐рднрд╛рдЬрдирд╣рд░реВрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫред рдпреЛ partitioner.class рдХреБрдЮреНрдЬреА рд░ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд▓рд╛рдИ рдирд┐рд░реНрдорд╛рддрд╛рдорд╛ рд╕реЗрдЯ рдЧрд░реЗрд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдХреБрдЮреНрдЬреАрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реМрдВред рдпреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдмрдорд┐рд╢рдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рд╣реБрдиреБрдкрд░реНрдЫред рдпреЛ рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рдореВрд▓ рдкреЛрд╕реНрдЯрдмрд╛рдЯ рдХреБрдиреИ рдкрдирд┐ рд╡реНрдпрд╡рд╕рд╛рдп рдЖрдИрдбреАрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред partitioner.class рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рди рдЫ - рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд┐рднрд╛рдЬрдирдХрд░реНрддрд╛ред рдпрд╕ рд╡рд┐рднрд╛рдЬрди рд░рдгрдиреАрддрд┐рдХреЛ рд╕рд╛рде, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рд╣рд╛рдореА рдпрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫреМрдВ:

  • рдпрджрд┐ рд╕рдиреНрджреЗрд╢ рдкрдард╛рдЙрдБрджрд╛ рд╡рд┐рднрд╛рдЬрди рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВред
  • рдпрджрд┐ рд╡рд┐рднрд╛рдЬрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди, рддрд░ рдХреБрдЮреНрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, рдХреБрдЮреНрдЬреАрдХреЛ рд╣реНрдпрд╛рд╕рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрди рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  • рдпрджрд┐ рд╡рд┐рднрд╛рдЬрди рд░ рдХреБрдЮреНрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ, рд╡рд┐рднрд╛рдЬрдирд╣рд░реВ рдПрдХ рдПрдХ рдЧрд░реА рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН (рд░рд╛рдЙрдгреНрдб-рд░реЛрдмрд┐рди)ред

рд╕рд╛рдереИ, рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдХреЛ рд╕рд╛рде рдХреБрдЮреНрдЬреА рд░ idempotent рдкрдард╛рдЙрдиреЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ max.in.flight.requests.per.connection = 1 рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЙрдкрднреЛрдХреНрддрд╛рдорд╛ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╢реЛрдзрди рджрд┐рдиреНрдЫред рдпреЛ рдкрдирд┐ рдпрд╛рдж рдЧрд░реНрди рд▓рд╛рдпрдХ рдЫ рдХрд┐ рдпрджрд┐ рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдг рддрдкрд╛рдЗрдБрдХреЛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдХреБрдиреИ рд╡рд┐рд╖рдпрдорд╛ рдЗрдорд╛рдирджрд╛рд░реАрдкреВрд░реНрд╡рдХ рд▓реЗрдЦреНрди рдЕрдзрд┐рдХрд╛рд░ рдЪрд╛рд╣рд┐рдиреНрдЫред

рдпрджрд┐ рддрдкрд╛рдИрдорд╛ рдЕрдЪрд╛рдирдХ рдХреБрдЮреНрдЬреАрджреНрд╡рд╛рд░рд╛ рдкрдард╛рдЙрдиреЗ рдХреНрд╖рдорддрд╛рдХреЛ рдХрдореА рдЫ рд╡рд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдкрдХреНрд╖рдорд╛ рддрд░реНрдХрд▓реЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рднрд╛рдЬрдирд╣рд░реВ рдмреАрдЪ рдбреЗрдЯрд╛ рд╕реНрдерд┐рд░рддрд╛ рдХрд╛рдпрдо рд░рд╛рдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рддрдм рд▓реЗрдирджреЗрдирд╣рд░реВ рдЙрджреНрдзрд╛рд░рдорд╛ рдЖрдЙрдиреЗрдЫрдиреНред рдердк рд░реВрдкрдорд╛, рдЪреЗрди рд▓реЗрдирджреЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рддрдкрд╛рдЗрдБ рд╕рд╢рд░реНрдд рд░реВрдкрдорд╛ рдХрд╛рдлреНрдХрд╛рдорд╛ рд░реЗрдХрд░реНрдб рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд░реЗрдХрд░реНрдбрдХреЛ рд╕рд╛рдеред рдирд┐рд░реНрдорд╛рддрд╛рд▓рд╛рдИ рд▓реЗрдирджреЗрди рдкрдард╛рдЙрди рд╕рдХреНрд╖рдо рдЧрд░реНрди, рдпреЛ рдирд┐рд░реНрджреЛрд╖ рд░ рдердк рд╕реЗрдЯ рд╣реБрдиреБрдкрд░реНрдЫ transactional.idред рдпрджрд┐ рддрдкрд╛рдЗрдБрдХреЛ рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдкрд╣реБрдБрдЪ рдирд┐рдпрдиреНрддреНрд░рдг рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, рдПрдХ idempotent рд░реЗрдХрд░реНрдб рдЬрд╕реНрддреИ рд▓реЗрдирджреЗрди рд░реЗрдХрд░реНрдбрд▓рд╛рдИ рд▓реЗрдЦрди рдЕрдиреБрдорддрд┐ рдЪрд╛рд╣рд┐рдиреНрдЫ, рдЬреБрди 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 рдкрдвреНрди_рдкреНрд░рддрд┐рдмрджреНрдз рдорд╛рдиред рдпрд╕реНрддреЛ рдЙрдкрднреЛрдХреНрддрд╛рд▓реЗ рдкрд╣рд┐рд▓реЗ рдЬрд╕реНрддреИ рдЧреИрд░-рд▓реЗрдирджреЗрди рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдвреНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫрдиреН, рд░ рд▓реЗрдирджреЗрди рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдкрдЫрд┐ рдорд╛рддреНрд░ред
рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рд╕реВрдЪреАрдмрджреНрдз рдЧрд░рд┐рдПрдХрд╛ рд╕рдмреИ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдПрдХ рдкрдЯрдХ рдбреЗрд▓рд┐рднрд░реА рдареАрдХ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫред рдмрдзрд╛рдИ рдЫ!

рддрд░ рддреНрдпрд╣рд╛рдБ рдПрдХ рдердк nuance рдЫред Transactional.id, рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдорд╛рдерд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реЗрдХрд╛ рдЫреМрдВ, рд╡рд╛рд╕реНрддрд╡рдорд╛ рд▓реЗрдирджреЗрди рдЙрдкрд╕рд░реНрдЧ рд╣реЛред рд▓реЗрдирджреЗрди рдкреНрд░рдмрдиреНрдзрдХрдорд╛, рдПрдХ рдЕрдиреБрдХреНрд░рдо рдирдореНрдмрд░ рдпрд╕рдорд╛ рдердкрд┐рдПрдХреЛ рдЫред рдкреНрд░рд╛рдкреНрдд рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдЫ transactional.id.expiration.ms, рдЬреБрди рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ "7 рджрд┐рди" рдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рди рдЫред рдпрджрд┐ рдпрд╕ рдЕрд╡рдзрд┐рдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓реЗ рдХреБрдиреИ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдХреЛ рдЫреИрди рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЕрд░реНрдХреЛ рд▓реЗрдирджреЗрди рдкрдард╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрд╛ рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫ рдЕрдорд╛рдиреНрдпPidMappingExceptionред рд▓реЗрдирджреЗрди рд╕рдордиреНрд╡рдпрдХрд▓реЗ рддреНрдпрд╕рдкрдЫрд┐ рдЕрд░реНрдХреЛ рд▓реЗрдирджреЗрдирдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдЕрдиреБрдХреНрд░рдо рдирдореНрдмрд░ рдЬрд╛рд░реА рдЧрд░реНрдиреЗрдЫред рдпрджреНрдпрдкрд┐, рд╕рдиреНрджреЗрд╢ рд╣рд░рд╛рдЙрди рд╕рдХреНрдЫ рдпрджрд┐ InvalidPidMappingException рд╕рд╣реА рд░реВрдкрдорд╛ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред

рдирддрд┐рдЬрд╛рдХреЛ рд╕рдЯреНрдЯрд╛

рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдХрд╛рдлреНрдХрд╛рд▓рд╛рдИ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдард╛рдЙрдиреБ рдорд╛рддреНрд░ рдкрд░реНрдпрд╛рдкреНрдд рдЫреИрдиред рддрдкрд╛рдИрдВрд▓реЗ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд╕рдВрдпреЛрдЬрди рдЫрдиреМрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рд░ рджреНрд░реБрдд рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЧрд░реНрди рддрдпрд╛рд░ рд╣реБрдиреБрд╣реЛрд╕реНред рдпрд╕ рд▓реЗрдЦрдорд╛, рдореИрд▓реЗ рдареНрдпрд╛рдХреНрдХреИ рдПрдХ рдкрдЯрдХ рдбреЗрд▓рд┐рднрд░реА рд╕реЗрдЯрдЕрдкрдХреЛ рд╡рд┐рд╡рд░рдг рджреЗрдЦрд╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реЗрдВ рд░ рд╣рд╛рдореАрд▓реЗ рд╕рд╛рдордирд╛ рдЧрд░реЗрдХрд╛ client.id рд░ transactional.id рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВрд╕рдБрдЧ рдзреЗрд░реИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реЗрдВред рддрд▓ рдирд┐рд░реНрдорд╛рддрд╛ рд░ рдЙрдкрднреЛрдХреНрддрд╛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдХреЛ рд╕рд╛рд░рд╛рдВрд╢ рдЫред

рдирд┐рд░реНрдорд╛рддрд╛:

  1. acks = рд╕рдмреИ
  2. рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН > реж
  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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди