рджрдорд┐рд╢реНрдХ рдХреЗ рд▓рд┐рдП рдЕрдкрд╛рдЪреЗ рдХрд╛рдлреНрдХрд╛

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

рдХрд┐рд╕ рд▓рд┐рдП?


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

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

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

рд╡рд┐рдВрдбреЛрдЬ 10 рдкрд░ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░рдХреАрдкрд░ рдФрд░ рдЕрдкрд╛рдЪреЗ рдХрд╛рдлреНрдХрд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ Apache Kafka, ZooKeeper рд╕реЗрд╡рд╛ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЪрд▓рддреА рд╣реИред рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░рдХреАрдкрд░ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗрд╡рд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрд╛рдлреНрдХрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░рдХреАрдкрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреЗрдЖрд░рдИ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╣реИред

рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░рдХреАрдкрд░ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

рд╣рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░рдХреАрдкрд░ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред
рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдЬрд╝реВрдХреАрдкрд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рд╣рдо рдЧреЛрдкрдиреАрдп рдлрд╝реЛрд▓реНрдбрд░ рдвреВрдВрдврддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓ "zoo_sample.cfg"ред



рдЗрд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдХреЙрдкреА рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ "zoo.cfg" рдХрд░реЗрдВред рдХреЙрдкреА рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд▓рд╛рдЗрди рдбреЗрдЯрд╛рдбрд┐рдЕрд░ = / tmp / zookeeper рдЦреЛрдЬреЗрдВред рдЗрд╕ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ zookeeper-x.x.x рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: dataDir = C: \\ ZooKeeper \\ zookeeper-3.6.0

рдЕрдм рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдкрд░рд┐рд╡реЗрд╢ рдЪрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: ZOOKEEPER_HOME = C: \ ZooKeeper \ zookeeper-3.4.9 рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдЪрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрде рдЬреЛрдбрд╝реЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реЗрдВ:% ZOOKEEPER_HOME; % \ bin;

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЪрд▓рд╛рдПрдВ рдФрд░ рдХрдорд╛рдВрдб рд▓рд┐рдЦреЗрдВ:

zkserver

рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреИрд╕рд╛ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред



рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рдХреАрдкрд░ рдиреЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╢реБрд░реБрдЖрдд рдХреАред рд╣рдо Apache Kafka рд╕рд░реНрд╡рд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдХрд╛рд▓реЗрдВ: kafka.apache.org/downloads

Kafka рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдо рдХреЙрдиреНрдлрд┐рдЧ рдлрд╝реЛрд▓реНрдбрд░ рдкрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рд╣рдореЗрдВ server.properties рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЦреЛрд▓реЗрдВред



рд╣рдо рд▓рд╛рдЗрди log.dirs = / tmp / kafka- рд▓реЙрдЧ рдкрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд╡рд╣ рд░рд╛рд╕реНрддрд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдХрд╛рдлреНрдХрд╛ рд▓реЙрдЧ рдХреЛ рдмрдЪрд╛рдПрдЧрд╛: log.dirs = c: / kafka / kafka-logред



рдПрдХ рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, zookeeper.properties рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рд╣рдо рд▓рд╛рдЗрди dataDir = / tmp / zookeeper рдХреЛ dataDir = c: / kafka / zookeeper-data рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рдбрд┐рд╕реНрдХ рдирд╛рдо рдХреЗ рдмрд╛рдж рдЕрдкрдиреЗ рдХрд╛рдлреНрдХрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдХрд┐рдпрд╛, рддреЛ рдЖрдк рдЬрд╝реВрдХреАрдкрд░ рдФрд░ рдХрд╛рдлреНрдХрд╛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред



рдХреБрдЫ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдЕрдкреНрд░рд┐рдп рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рдлреНрдХрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬреАрдпреВрдЖрдИ рдирд╣реАрдВ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реЗрд╡рд╛ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдВрд╕реЛрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдареЛрд░ рдирд░реНрдб рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рд░рд╛рд╕реНрддрд╛ рдпрд╛ рджреВрд╕рд░рд╛, рдХрд╛рдлреНрдХрд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рдХреАрдкрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрдлрд╝реНрдХрд╛ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдо рдмрд┐рди / рд╡рд┐рдВрдбреЛрдЬрд╝ рдлрд╝реЛрд▓реНрдбрд░ рдкрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рд╣рдореЗрдВ рдЬрд╝реВрдХреАрдкрд░-рд╕рд░реНрд╡рд░-рд╕реНрдЯрд╛рд░реНрдЯ-рдмрдЯ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИ, рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдХреБрдЫ рдирд╣реАрдВ рд╣реБрдЖ? рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рд▓рд┐рдЦреЗрдВ:

 start zookeeper-server-start.bat

рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рдЖрджрд░реНрд╢ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ zookeeper-server-start.bat рдХреЛ zookeeper.properties рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рд╣рдо рд╕рд╛рдВрддреНрд╡рдирд╛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

start zookeeper-server-start.bat c:\kafka\config\zookeeper.properties 

рдЕрдм рд╕рдм рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред



рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдЦреЛрд▓реЗрдВ (рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░рдХреАрдкрд░ рдХреЛ рдмрдВрдж рди рдХрд░реЗрдВ!) рдФрд░ рдХрдлрдХрд╛ рдЪрд▓рд╛рдПрдВ:

start kafka-server-start.bat c:\kafka\config\server.properties

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╣рд░ рдмрд╛рд░ рдХрдорд╛рдВрдб рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреБрд░рд╛рдиреА рд╕рд┐рджреНрдз рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

start C:\kafka\bin\windows\zookeeper-server-start.bat C:\kafka\config\zookeeper.properties
timeout 10
start C:\kafka\bin\windows\kafka-server-start.bat C:\kafka\config\server.properties

рдЬрд╝реВрдХреАрдЯрд░ рдФрд░ рдХрд╛рдлреНрдХрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рдард╣рд░рд╛рд╡ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдордЖрдЙрдЯ 10 рд▓рд╛рдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдмрдХреБрдЫ рд╕рд╣реА рдХрд┐рдпрд╛ рд╣реИ, рдЬрдм рдЖрдк рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреЛ рдХрдВрд╕реЛрд▓ рдХреЛ рдЬрд╝реВрдХреАрдкрд░ рдФрд░ рдХрд╛рдлреНрдХрд╛ рдХреЗ рд╕рд╛рде рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдм рд╣рдо рдПрдХ рд╕рдВрджреЗрд╢ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдПрдХ рдЙрдкрднреЛрдХреНрддрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд╕реАрдзреЗ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИред рд▓реЗрдХрд┐рди, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рдо IDEA рд╕реЗ рдХрд╛рдлреНрдХрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рд▓реЗрдВрдЧреЗред

рдЖрдИрдбреАрдИрдП рд╕реЗ рдХрд╛рдлреНрдХрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


рд╣рдо рд╕рд░рд▓рддрдо рд╕рдВрднрд╡ рдЖрд╡реЗрджрди рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЬреЛ рдПрдХ рд╕рд╛рде рд╕рдВрджреЗрд╢ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛ рд╣реЛрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдЗрд╕рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдирдпрд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдпрд╣ рдПрдХ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрдирд┐рд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдмрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЬреЛрдбрд╝реЗрдВред org.springframework.kafka рдФрд░ рд╡рд╕рдВрдд-рдмреВрдЯ-рд╕реНрдЯрд╛рд░реНрдЯрд░-рд╡реЗрдм





рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, pom.xml рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:



рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ KafkaTemplate / K, V> рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╕реНрддреБ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рд╣реИред рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреБрдВрдЬреА рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ, рджреВрд╕рд░рд╛ рд╕реНрд╡рдпрдВ рд╕рдВрджреЗрд╢ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛрдиреЛрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗред рд╣рдо рдХреНрд▓рд╛рд╕-рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВрдЧреЗред KafkaTemplate рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЛ рдПрдиреЛрдЯреЗрдЯ рдХрд░рдХреЗ рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВAutowiredред

@Autowired
private KafkaTemplate<String, String> kafkaTemplate;

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

@RestController
@RequestMapping("msg")
public class MsgController {

    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;

    @PostMapping
    public void sendOrder(String msgId, String msg){
        kafkaTemplate.send("msg", msgId, msg);
    }
}

рдХрдВрдЯреНрд░реЛрд▓рд░ рдореИрдкреНрд╕ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП : 8080 / рд╕рдВрджреЗрд╢, рдХреБрдВрдЬреА рдФрд░ рд╕рдВрджреЗрд╢ рд╕реНрд╡рдпрдВ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

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

@KafkaListener(topics="msg")

рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╡рд┐рдзрд┐, рдПрдХ рд╕реНрд╡реАрдХреГрдд рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рд╕рдВрджреЗрд╢ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред

рдЬрд┐рд╕ рд╡рд░реНрдЧ рдореЗрдВ рдЙрдкрднреЛрдХреНрддрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЙрд╕реЗ @EnableKafka рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

@EnableKafka
@SpringBootApplication
public class SimpleKafkaExampleApplication {

    @KafkaListener(topics="msg")
    public void msgListener(String msg){
        System.out.println(msg);
    }

    public static void main(String[] args) {
        SpringApplication.run(SimpleKafkaExampleApplication.class, args);
    }
}

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, application.property рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдкрдХреЛ рдХрдВрд╕реАрдпрдЬ рдкреИрд░рд╛рдореАрдЯрд░ рдЧреНрд░реБрдк-рдЖрдИрдбреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрд╡реЗрджрди рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдкреИрд░рд╛рдореАрдЯрд░ рдЯрд╛рдЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

spring.kafka.consumer.group-id=app.1

рд╣рдорд╛рд░реА рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрдлрдХрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рддреИрдпрд╛рд░ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░реЗрд╖рдХ рдФрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, ZooKeeper рдФрд░ Kafka рдХреЛ рдЙрд╕ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛, рдлрд┐рд░ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рдкреЛрд╕реНрдЯрдореИрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдирд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЕрдиреБрд░реЛрдз рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ, msgId рдФрд░ msg рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред

рдпрджрд┐ рд╣рдо рдЖрдИрдбреАрдИрдП рдореЗрдВ рдРрд╕реА рддрд╕реНрд╡реАрд░ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдирд┐рд░реНрдорд╛рддрд╛ рдиреЗ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛, рдЙрдкрднреЛрдХреНрддрд╛ рдиреЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ред


рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ


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

рдпрджрд┐ рдЖрдкрдиреЗ рднреЗрдЬрдиреЗ () рд╡рд┐рдзрд┐ рдХреЛ рдЦреЛрд▓рд╛ рд╣реИ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреЗ рд╕рднреА рд╡реЗрд░рд┐рдПрдВрдЯреНрд╕ рдореЗрдВ HearableFuture <SendResult <K, V >> рдХрд╛ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рд╣реИред рдЕрдм рд╣рдо рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдпрд╣рд╛рдВ рдпрд╣ рдХрд╣рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ рдХрд┐ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@PostMapping
public void sendMsg(String msgId, String msg){
    ListenableFuture<SendResult<String, String>> future = kafkaTemplate.send("msg", msgId, msg);
    future.addCallback(System.out::println, System.err::println);
    kafkaTemplate.flush();
}

AddCallback () рд╡рд┐рдзрд┐ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ - SuccessCallback рдФрд░ FailureCallbackред рдпреЗ рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВред рдирд╛рдо рд╕реЗ рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓реЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рдлрд▓ рднреЗрдЬрдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рджреВрд╕рд░рд╛ - рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдкред рдЕрдм, рдпрджрд┐ рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрдВрд╕реЛрд▓ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреИрд╕рд╛ рдХреБрдЫ рджреЗрдЦреЗрдВрдЧреЗ:

SendResult [producerRecord=ProducerRecord(topic=msg, partition=null, headers=RecordHeaders(headers = [], isReadOnly = true), key=1, value=Hello, world!, timestamp=null), recordMetadata=msg-0@6]

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



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



рдпрджрд┐ рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ KafkaTemplate рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛рдлреИрдХреНрдЯрд░реА <K, V> рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DefaultKafkaProducerFactory <>, рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред DefaultKafkaProducerFactory рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдЗрд╕рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдпреБрдХреНрдд рдПрдХ рдирдХреНрд╢рд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдореЗрдВ рд░рдЦреЗ рдЬрд╛рдПрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд┐рдЧ рдкреИрдХреЗрдЬ рдФрд░ рдЙрд╕рдореЗрдВ KafkaProducerConfig рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВред

@Configuration
public class KafkaProducerConfig {

    private String kafkaServer="localhost:9092";

    @Bean
    public Map<String, Object> producerConfigs() {
        Map<String, Object> props = new HashMap<>();
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
                kafkaServer);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
                LongSerializer.class);
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
                StringSerializer.class);
        return props;
    }

    @Bean
    public ProducerFactory<Long, String> producerFactory() {
        return new DefaultKafkaProducerFactory<>(producerConfigs());
    }

    @Bean
    public KafkaTemplate<Long, String> kafkaTemplate() {
        return new KafkaTemplate<>(producerFactory());
    }
}

рдирд┐рд░реНрдорд╛рддрд╛рдХреЙрдиреНрдлрд╝рд┐рдЧреНрд╕ () рд╡рд┐рдзрд┐ рдореЗрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдмрдирд╛рдПрдВ рдФрд░ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ LongSerializer.class рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдкреЛрд╕реНрдЯрдореИрди рд╕реЗ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм рд╕рдм рдХреБрдЫ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ: рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

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

@Data
public class UserDto {
    private Long age;
    private String name;
    private Address address;
}

@Data
@AllArgsConstructor
public class Address {
    private String country;
    private String city;
    private String street;
    private Long homeNumber;
    private Long flatNumber;
}

рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдбреАрдЯреАрдУ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред JsonSerializer.class рдХреЛ рд╕рдВрджреЗрд╢ рдорд╛рди рдХреЗ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рд╣рд░ рдЬрдЧрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдХреЛ UserDto рдореЗрдВ рдмрджрд▓рдирд╛ рди рднреВрд▓реЗрдВред

@Configuration
public class KafkaProducerConfig {

    private String kafkaServer="localhost:9092";

    @Bean
    public Map<String, Object> producerConfigs() {
        Map<String, Object> props = new HashMap<>();
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
                kafkaServer);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
                LongSerializer.class);
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
                JsonSerializer.class);
        return props;
    }

    @Bean
    public ProducerFactory<Long, UserDto> producerFactory() {
        return new DefaultKafkaProducerFactory<>(producerConfigs());
    }

    @Bean
    public KafkaTemplate<Long, UserDto> kafkaTemplate() {
        return new KafkaTemplate<>(producerFactory());
    }
}

рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВред рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧреА:



рдЕрдм рд╣рдо рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реА рд╡рд┐рдзрд┐ public void msgListener (рд╕реНрдЯреНрд░рд┐рдВрдЧ msg), рдПрдиреЛрдЯреЗрд╢рди @KafkaListener (рд╡рд┐рд╖рдпреЛрдВ = "рд╕рдВрджреЗрд╢") рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдкреНрд░реЗрд╖рд┐рдд рд╕рдВрджреЗрд╢ рдХреЗ рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреБрдВрдЬреА рдпрд╛ рдПрдХ рд╡рд┐рднрд╛рдЬрди? рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреНрд░реЗрд╖рд┐рдд рдорд╛рди рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

@KafkaListener(topics="msg")
public void orderListener(ConsumerRecord<Long, UserDto> record){
    System.out.println(record.partition());
    System.out.println(record.key());
    System.out.println(record.value());
}

ConsumerRecord рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╣рдо рдЙрди рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред



рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрд╕реЛрд▓ рдкрд░ рдХреБрдВрдЬреА рдХреЗ рдмрдЬрд╛рдп, рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрджрдорд╛рд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ StringDeserializer рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдВрдЬреА рдХреЛ рдбреАрд░рд┐рдПрд░рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреБрдВрдЬреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ, рддреЛ рд╣рдореЗрдВ рдЗрд╕реЗ LongDeserializer рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдХрдВрдлрд┐рдЧрд░ рдкреИрдХреЗрдЬ рдореЗрдВ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, KafkaConsumerConfig рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВред

@Configuration
public class KafkaConsumerConfig {

    @Value("${spring.kafka.bootstrap-servers}")
    private String kafkaServer;

    @Value("${spring.kafka.consumer.group-id}")
    private String kafkaGroupId;

    @Bean
    public Map<String, Object> consumerConfigs() {
        Map<String, Object> props = new HashMap<>();
        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaServer);
        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, LongDeserializer.class);
        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
        props.put(ConsumerConfig.GROUP_ID_CONFIG, kafkaGroupId);
        return props;
    }

    @Bean
    public KafkaListenerContainerFactory<?> kafkaListenerContainerFactory() {
        ConcurrentKafkaListenerContainerFactory<Long, UserDto> factory =
                new ConcurrentKafkaListenerContainerFactory<>();
        factory.setConsumerFactory(consumerFactory());
        return factory;
    }

    @Bean
    public ConsumerFactory<Long, UserDto> consumerFactory() {
        return new DefaultKafkaConsumerFactory<>(consumerConfigs());
    }
}

KafkaConsumerConfig рд╡рд░реНрдЧ KafkaProducerConfig рдХреЗ рд╕рдорд╛рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдерд╛ред рдПрдХ рдирдХреНрд╢рд╛ рднреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ рдХреБрдВрдЬреА рдФрд░ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЬрд╝рд░рд╛рдЗрдЬрд╝рд░ред рдмрдирд╛рдП рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ ConsumerFactory <> рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, KafkaListenerContainerFactory <?> рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг: рдХрдлрд╝реНрдХрд╛ рд▓рд┐рд╕реНрдЯрдирд░рдХреЙрдирдЯреЗрдирд░ рдлреИрдХреНрдЯреНрд░реА рд▓реМрдЯрдиреЗ рдХреА рд╡рд┐рдзрд┐ <?> рдХреЛ рдХрдлрд╝реН рд▓реНрд▓рд┐рд╕реНрдЯреЗрдирдХреЙрдиреНрд╕реЗрдЯрд░рдлрд╝реЗрдХреНрдЯрд░реА () рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рд╡рд╛рдВрдЫрд┐рдд рдмреАрди рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреАред рд╣рдо рд╢реБрд░реВ рдХрд░реЗрдВред



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

рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдмрд╛рд░ рдзреЛрдПрдВ, рдорд╛рд╕реНрдХ рдкрд╣рдиреЗрдВ, рдмрд┐рдирд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд╣рд░ рди рдЬрд╛рдПрдВ рдФрд░ рд╕реНрд╡рд╕реНрде рд░рд╣реЗрдВред

All Articles