рдХрд╛рдлреНрдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдХрд╕рд╛ рдмрдирд▓рд╛

рдХрд╛рдлреНрдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдХрд╕рд╛ рдмрдирд▓рд╛

рдЕрд╣реЛ рд╣рд╛рдмреНрд░!

рдореА рдЯрд┐рдВрдХреЙрдл рдЯреАрдорд╡рд░ рдХрд╛рдо рдХрд░рддреЛ, рдЬреЗ рд╕реНрд╡рддрдГрдЪреЗ рд╕реВрдЪрдирд╛ рдХреЗрдВрджреНрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдд рдЖрд╣реЗ. рдореА рдЬрд╛рд╡рд╛рдордзреНрдпреЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рд╡рд╛рдкрд░реВрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдЙрджреНрднрд╡рдгрд╛рд▒реНрдпрд╛ рд╡рд┐рд╡рд┐рдз рддрд╛рдВрддреНрд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЛ.

рдЖрдордЪреНрдпрд╛ рдмрд╣реБрддреЗрдХ рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕ рдореЗрд╕реЗрдЬ рдмреНрд░реЛрдХрд░рджреНрд╡рд╛рд░реЗ рдПрдХрдореЗрдХрд╛рдВрд╢реА рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕рдкрдгреЗ рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрддрд╛рдд. рдкреВрд░реНрд╡реА, рдЖрдореНрд╣реА рдмреНрд░реЛрдХрд░ рдореНрд╣рдгреВрди 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 рдореВрд▓реНрдп рдореНрд╣рдгреВрди рд╡рд┐рд╖рдпрд╛рдЪреЗ рдирд╛рд╡ рд╕рдВрдпреЛрдЬрди рд╡рд╛рдкрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ. рдЖрдордЪреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдХрдорд╛рдВрдб рдЖрдЙрдЯрдкреБрдЯрдордзреНрдпреЗ рджрд┐рд╕реВ рд╢рдХрддреЛ kafka-рдЧреНрд░рд╛рд╣рдХ-рдЧрдЯ Confluent рдХрдбреВрди рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬ рдХрдбреВрди:

рдХрд╛рдлреНрдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдХрд╕рд╛ рдмрдирд▓рд╛

рдЖрддрд╛ рдЧреЕрд░рдВрдЯреАрдб рдореЗрд╕реЗрдЬ рдбрд┐рд▓рд┐рд╡реНрд╣рд░реАрд╕рд╛рдареА рдкрд░рд┐рд╕реНрдерд┐рддреА рдкрд╛рд╣реВ. рдХрд╛рдлреНрдХрд╛ рдирд┐рд░реНрдорд╛рддреНрдпрд╛рдХрдбреЗ рдПрдХ рдкреЕрд░рд╛рдореАрдЯрд░ рдЖрд╣реЗ 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 рдХреА рдЖрдгрд┐ рдкреЕрд░рд╛рдореАрдЯрд░ рдкреНрд░реЛрдбреНрдпреБрд╕рд░рд╡рд░ рд╕реЗрдЯ рдХрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдЪрд▓рд╛ рдХреА рд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░реВрдпрд╛. рдкреНрд░рддреНрдпреЗрдХ рд╕рдмрдорд┐рд╢рдирд╕рд╛рдареА рддреЗ рд╕рдорд╛рди рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдореВрд│ рдкреЛрд╕реНрдЯрдордзреАрд▓ рдХреЛрдгрддрд╛рд╣реА рд╡реНрдпрд╡рд╕рд╛рдп рдЖрдпрдбреА рд╡рд╛рдкрд░реВрди рд╣реЗ рд╕рд╣рдЬ рд╕рд╛рдзреНрдп рдХрд░рддрд╛ рдпреЗрддреЗ. 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 рджрд┐рд╡рд╕" тАЛтАЛрдЪреЗ рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдп рдЖрд╣реЗ. рдЬрд░ рдпрд╛ рдХрд╛рд▓рд╛рд╡рдзреАрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕ рдХреЛрдгрддреЗрд╣реА рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ рдирд╛рд╣реАрдд, рддрд░ рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрдг рдкреБрдвреАрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рд╛рд▓ рддреЗрд╡реНрд╣рд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдИрд▓ рдЕрд╡реИрдзPidMappingException. рддреНрдпрд╛рдирдВрддрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдордиреНрд╡рдпрдХ рдкреБрдвреАрд▓ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рд╕рд╛рдареА рдирд╡реАрди рдЕрдиреБрдХреНрд░рдо рдХреНрд░рдорд╛рдВрдХ рдЬрд╛рд░реА рдХрд░реЗрд▓. рддрдерд╛рдкрд┐, 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 = read_committed

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

рд╕реНрд╡рдпрдВ-рдЕрднреНрдпрд╛рд╕рд╛рд╕рд╛рдареА рдпреЗрдереЗ рдХрд╛рд╣реА рд╕рд╛рд╣рд┐рддреНрдп рдЖрд╣реЗрдд:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛