рдкрдм-рд╕рдм рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ: рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ / рдереНрд░реЗрдбреНрд╕, рдЬрдЯрд┐рд▓ рдЖрдИрдкреАрд╕реА, рдкреЛрд▓-рдУрд╡рд░-рдПрдЪрдЯреАрдкреА рдФрд░ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдПрдХ рдкреВрд▓ рдХреЛ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯ рдХрд░рдирд╛ред рдЖрдЬ рдореИрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ HTTP рдкрд░ рдкрдм-рд╕рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ рдореЗрд░реА рд╕реЗрд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рддреИрдпрд╛рд░ HTTP рд╕реЗрд╡рд╛ рдмреИрдХрдПрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рд╣реИ:
- рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╕рдВрддреБрд▓рдиред рдЖрдорддреМрд░ рдкрд░, рдмреИрдХрдПрдВрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рдкреАрдЫреЗ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд░реЗрдбреА-рдЯреВ-рд▓реЛрдб рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред
- рдПрдХ рдирд┐рдпрдорд┐рдд REST рдирд┐рдпрдВрддреНрд░рдХ (рдХрд┐рд╕реА рднреА HTTP рд╕рдВрд╕рд╛рдзрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред HTTP рдореИрд╕реЗрдЬрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреИрдХрдПрдВрдб рдХреЗ рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдореНрдкреВрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
- рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╡реЗрдм рд╣реБрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рд░рд▓реАрдХрд░рдгред рдЕрдм рд▓рдЧрднрдЧ рд╣рд░ рд╕реЗрд╡рд╛ (рдЬреАрд░рд╛, рдЧрд┐рдЯрд▓реИрдм, рдореИрдЯрд░реЗрд╕реНрдЯ, рд╕реНрд▓реИрдХ ...) рдХрд┐рд╕реА рднреА рддрд░рд╣ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╣реБрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдпрджрд┐ рдЖрдк HTTP рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рд╕рд┐рдЦрд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдиреБрдХрд╕рд╛рди рднреА рд╣реИрдВ:
- рдЖрдк рд╕рдорд╛рдзрд╛рди рдХреА рд▓рдкрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред HTTP рдПрдХ рднрд╛рд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ, рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЪреМрдЦрдЯреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рддреБрд░рдиреНрдд рд╡рд┐рд▓рдВрдмрддрд╛ рдФрд░ рднрд╛рд░ рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛ред
- рд╣рдо рдкреБрд╢ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдкреЛрд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддрд╛рдХрдд рдЦреЛ рджреЗрддреЗ рд╣реИрдВред
- рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЙрд╕реА рд╕реЗрд╡рд╛ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╡рд╛рдмрджреЗрд╣реА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрддреБрд▓рди рдФрд░ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдХреНрдпреВ-рдУрд╡рд░-рдПрдЪрдЯреАрдкреА рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдЬрд┐рд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХреЛрдЯрд▓рд┐рди рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ 2.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рджрд▓рд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЗрд╡рд▓ рдЕрдкрд╛рдЪреЗ рдХрд╛рдлреНрдХрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рд▓реЗрдЦ рдореЗрдВ рдЖрдЧреЗ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдХрд╛рдлреНрдХрд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ рдФрд░ рд╕рдВрджреЗрд╢реЛрдВ (рд╕рдореВрд╣реЛрдВ) рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ (рдЙрдкрднреЛрдХреНрддрд╛) рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдХрдорд┐рдЯ (рдСрдлрд╝рд╕реЗрдЯ) рдФрд░ рдСрдлрд╝рд╕реЗрдЯ (рдСрдлрд╝рд╕реЗрдЯ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рднреА рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рднрд╛рдЬрди (рд╡рд┐рднрд╛рдЬрди) рд╡рд┐рд╖рдп (рд╡рд┐рд╖рдп) рд╕реЗ рдХреИрд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ ред рдпрджрд┐ рдЕрдВрддрд░рд╛рд▓ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд╛рд░реА рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рдлреНрдХрд╛ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЗрд╕ рднрд╛рдЧ рдХреЛ рдкрдврд╝реЗрдВредрд╕рд╛рдордЧреНрд░реА
рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди
рдХрддрд╛рд░-рдУрд╡рд░-рдПрдЪрдЯреАрдкреА рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рдВрджреЗрд╢ рджрд▓рд╛рд▓ рдФрд░ рдЕрдВрддрд┐рдо HTTP рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рдмреАрдЪ рдордзреНрдпрд╕реНрде рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ (рд╕реЗрд╡рд╛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрднреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди * рдЖрд░рдкреАрд╕реА)ред рдлрд┐рд▓рд╣рд╛рд▓, рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдХреЗрд╡рд▓ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм, рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдирд╛ рдФрд░ рджреЗрдЦрдирд╛ рдЙрдкрд▓рдмреНрдз рд╣реИред рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╡рд┐рд╢реЗрд╖ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрджреЗрд╢ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХреА рдЕрдХреНрд╖рдорддрд╛ рдХреЗ рдХрд╛рд░рдг, HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреНрд░реЛрдХрд░ (рдЙрдкрдЬ) рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕реЗрд╡рд╛ рдХрд╛ рдореБрдЦреНрдп рдЖрдВрдХрдбрд╝рд╛ рдЙрдкрднреЛрдХреНрддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рднрд╛рдЬрди рдпрд╛ рдХреЗрд╡рд▓ рд╡рд┐рд╖рдпреЛрдВ (рд╡рд┐рд╖рдп рдкреИрдЯрд░реНрди рд╕рдорд░реНрдерд┐рдд рд╣реИ) рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рднрд╛рдЬрди рдХрд╛ рд╕реНрд╡рдд: рд╕рдВрддреБрд▓рди рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рд░реНрджрд┐рд╖реНрдЯ HTTP рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рдХрд╛рдлреНрдХрд╛ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХ рдПрдХ рджреЗрд╢реА рдХрд╛рдлреНрдХрд╛ рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
рдХрдлрд╝реНрдХрд╛ рдХреЛрдВрд╕реБрдореЗрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордиреЛрд░рдВрдЬрдХ рдХрд╣рд╛рдиреАрдХрд╛рдлреНрдХрд╛ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрджреНрднреБрдд рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдмреНрд░реЛрдХрд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдЕрдбреИрдкреНрдЯрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд╕реЗрд╡рд╛ рдХрддрд╛рд░реЛрдВ рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реВрдВред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдПрдХрд▓ рдзрд╛рдЧреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИред рд╣рдо рдПрдХ рд╕реВрддреНрд░ рдореЗрдВ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рджреЗрд╢реА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╢реЗрдбреНрдпреВрд▓рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред рдпрд╣реА рд╣реИ, рд╣рдо рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
while (!Thread.interrupted()) { var hasWork = false for (consumer in kafkaConsumers) { val queueGroup = consumers[consumer] ?: continue invalidateSubscription(consumer, queueGroup) val records = consumer.poll(Duration.ZERO) if (!records.isEmpty) { hasWork = true } } val committed = doCommit() if (!hasWork && committed == 0) {
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЕрджреНрднреБрдд рд╣реИ, рджрд░реНрдЬрдиреЛрдВ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рднреА рд╡рд┐рд▓рдВрдмрддрд╛ рдиреНрдпреВрдирддрдо рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐
KafkaConsumer
рдСрдкрд░реЗрд╢рди рдХреЗ рдЗрд╕ рдореЛрдб рдХреЗ рд▓рд┐рдП
KafkaConsumer
рдФрд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕рдордп рдореЗрдВ рд▓рдЧрднрдЧ 1.5 рдПрдордмреА / рдПрд╕ рдХреА рдЖрд╡рдВрдЯрди рджрд░ рджреЗрддрд╛ рд╣реИред 100 рдХреЛрд░рд┐рдпрд░ рдХреЗ рд╕рд╛рде, рдЖрд╡рдВрдЯрди рджрд░ 150 рдПрдордмреА / рдПрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЬреАрд╕реА рдХреЛ рдЕрдХреНрд╕рд░ рдЖрд╡реЗрджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рд╕рднреА рдХрдЪрд░рд╛ рдпреБрд╡рд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИ, рдЬреАрд╕реА рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдХреНрд╖рдо рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рд╕рдорд╛рдзрд╛рди рд╕рд╣реА рдирд╣реАрдВ рд╣реИред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЖрдкрдХреЛ
KafkaConsumer
рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдЕрдм рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЕрдкрдиреА рд╕реНрдЯреНрд░реАрдо рдореЗрдВ
KafkaConsumer
рд╣реВрдВред рдпрд╣ рдореЗрдореЛрд░реА рдФрд░ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдУрд╡рд░рд╣реЗрдб рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдКрдкрд░ рд╕реЗ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рдЖрдВрддрд░рд┐рдХ рд▓реВрдк рдХреЛ рд╣рдЯрд╛рдХрд░
Duration.ZERO
рдХреЛ
Duration.ofMillis(100)
рдмрджрд▓ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдЖрд╡рдВрдЯрди рдХреА рджрд░ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдкреНрд░рддрд┐ рдЙрдкрднреЛрдХреНрддрд╛ 80-150 рдХреЗрдмреА / рдПрд╕ рддрдХ рдЧрд┐рд░рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, 100ms рдХреЗ рд╕рдордп рдХреЗ рд╕рд╛рде рдорддрджрд╛рди, рдЗрдиреНрд╣реАрдВ 100ms рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдВрдкреВрд░реНрдг рдХрддрд╛рд░ рдХреЛ рд╡рд┐рд▓рдВрдмрд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореБрдЭреЗ
KafkaConsumer::wakeup
рдпрд╛рдж рд╣реИ, рдЬреЛ рдПрдХ
WakeupException
рдлреЗрдВрдХрддрд╛ рд╣реИ рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрд╡рд░реБрджреНрдз рдСрдкрд░реЗрд╢рди рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рде, рдХрдо-рд╡рд┐рд▓рдВрдмрддрд╛ рдХрд╛ рдорд╛рд░реНрдЧ рд╕рд░рд▓ рд╣реИ: рдЬрдм рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЕрдиреБрд░реЛрдз рдЖрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдореВрд▓ рдЙрдкрднреЛрдХреНрддрд╛ рдкрд░ рд╣рдо
wakeup
рдХрд╣рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдп рдЪрдХреНрд░ рдореЗрдВ,
WakeupException
рдХреЛ
WakeupException
рдФрд░ рдХрдорд┐рдЯ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЬрдорд╛ рд╣реБрдЖ рд╣реИред рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рдорджрдж рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддреБрд░рдВрдд рдЗрд╕реЗ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ ...
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕рд╣реА рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджреЗрд╢реА рдЙрдкрднреЛрдХреНрддрд╛ рдкрд░ рдХреЛрдИ рднреА рдСрдкрд░реЗрд╢рди рдЕрдм
WakeupException
,
WakeupException
рд╕рд╣рд┐рддред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдХреЛрдб рдХреЛ рдлреНрд▓реИрдЧ рдХреЗ рд╕рд╛рде рдЕрд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдореИрдВ рдЗрд╕ рдирддреАрдЬреЗ рдкрд░
KafkaConsumer::poll
рдХрд┐
KafkaConsumer::poll
рдкрджреНрдзрддрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдзреНрд╡рдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдмрд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдирддреАрдЬрддрди,
рдлреНрд░реЗрдВрдХрд╕реНрдЯреАрди рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕реЗ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛, рдЬреЛ рдореВрд▓ рдорддрджрд╛рди рд╡рд┐рдзрд┐ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИ, рдзреНрд╡рдЬ рджреНрд╡рд╛рд░рд╛ рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдзреНрд╡рдЬ рдПрдХ рдЕрд▓рдЧ рд╕реЗ рд╡реНрдпрд╡рдзрд╛рди рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧреНрд░рд╛рд╣рдХ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЛ I / O рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдереНрд░реЗрдб рд▓реЙрдХ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╛рддрд╛ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЙрд╕ рдкрд▓ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЧрддрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХрдо рд╕реЗ рдХрдо 100 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рддрдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмреНрд░реЛрдХрд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╡рд┐рд▓рдВрдмрддрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд╛рдиреАрдп рдХрддрд╛рд░ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдПрдбрд╛рдкреНрдЯрд░ рдмреНрд░реЛрдХрд░ рд╕реЗ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЗрд╕рд╕реЗ рд╕рдВрджреЗрд╢ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рднреЗрдЬрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдПред
рд╕реЗрд╡рд╛ рдереНрд░реВрдкреБрдЯ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдЪ рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдЬрдм рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╖рдп рдХреЗ
concurrencyFactor
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рднрд╛рдЬрди рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
concurrencyFactor=1000
рдЕрд░реНрде рд╣реИ рдХрд┐ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ 1000 рд╕рдВрджреЗрд╢ рдЙрд╕реА рд╕рдордп рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рднреЗрдЬреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ рд╣реА рдкреИрдХ рд╕реЗ рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЙрдкрднреЛрдХреНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛, рд╕реЗрд╡рд╛ рдХрд╛рдлрдХрд╛ рдореЗрдВ рдЕрдВрддрд┐рдо рд╕рдВрджреЗрд╢ рдХреА рдСрдлрд╕реЗрдЯ рдХреА рдЕрдЧрд▓реА рдкреНрд░рддрд┐рдмрджреНрдз рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХрдВрдлрд╝реЗрдХреНрдЯрдлреИрдХреНрдЯрд░ рдХрд╛ рджреВрд╕рд░рд╛ рдореВрд▓реНрдп рдХрдлрд╝реНрдХрд╛ рдпрд╛ рдХреНрдпреВ-рдУрд╡рд░-рдПрдЪрдЯреАрдкреА рджреБрд░реНрдШрдЯрдирд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдкрднреЛрдХреНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рд╣реИред
рджреЗрд░реА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрддрд╛рд░ рдореЗрдВ
loadFactor = concurrencyFactor * 2
, рдЬреЛ рдЖрдкрдХреЛ рдмреНрд░реЛрдХрд░ рдХреЗ рджреЛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдмрд╛рд░ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдСрдЯреЛрдХреЙрдорд┐рдЯ рджреЗрд╢реА рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЕрдХреНрд╖рдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕реА рдпреЛрдЬрдирд╛ рдПрдЯ-рд▓рд┐рд╕реНрдЯ-рд╡рдиреНрд╕ рдЧрд╛рд░рдВрдЯреА рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
рдПрдХ рдЙрдЪреНрдЪ
concurrencyFactor
рдорд╛рди рдХрддрд╛рд░ рдХреЗ рдереНрд░реВрдкреБрдЯ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рд╕рдмрд╕реЗ рдмреБрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо 10 рдПрдордПрд╕ рддрдХ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдЙрдкрднреЛрдХреНрддрд╛ рдкрд░ рднрд╛рд░ рдмрдврд╝рддрд╛ рд╣реИред
рдмрдВрдбрд▓ рдХреЗ рднреАрддрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдЖрджреЗрд╢ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ
concurrencyFactor=1
рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
concurrencyFactor=1
ред
рдкреНрд░рддрд┐рдмрджреНрдз
рдХрдорд┐рдЯ рд╕реЗрд╡рд╛ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдЬрдм рдбреЗрдЯрд╛ рдХрд╛ рдЕрдЧрд▓рд╛ рдкреИрдХреЗрдЯ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреИрдХреЗрдЯ рд╕реЗ рдЕрдВрддрд┐рдо рд╕рдВрджреЗрд╢ рдХреА рднрд░рдкрд╛рдИ рддреБрд░рдВрдд рдХрд╛рдлреНрдХрд╛ рдХреЛ рдХрд░ рджреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдПрдХ рд╕рдлрд▓ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреЗ рдмрд╛рдж рд╣реА рдЕрдЧрд▓рд╛ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИред рдЕрдХреНрд╕рд░ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдСрдЯреЛ рдХрдорд┐рдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреИрд░рд╛рдореАрдЯрд░
autoCommitPeriodMs
, рдЬрд┐рд╕рдореЗрдВ рдореВрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╢рд╛рд╕реНрддреНрд░реАрдп рдСрдЯреЛрдХреЙрдорд┐рдЯ рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрдо рд╣реИ рдЬреЛ рд╡рд┐рднрд╛рдЬрди рд╕реЗ рдкрдврд╝реЗ рдЧрдП рдЕрдВрддрд┐рдо рд╕рдВрджреЗрд╢ рдХреЛ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП
concurrencyFactor=10
ред рд╕реЗрд╡рд╛ рдиреЗ рд╕рднреА 10 рд╕рдВрджреЗрд╢ рднреЗрдЬреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИред рд╕рдВрджреЗрд╢ 3 рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд╣рд▓реЗ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ рд╕рдВрджреЗрд╢ 1, рдФрд░ рдлрд┐рд░, рд╕рдВрджреЗрд╢ 10ред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдпрд╣ рдСрдЯреЛ-рдХрдорд┐рдЯ рдХрд╛ рд╕рдордп рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдПрдЯ-рд▓рд┐рд╕реНрдЯ-рд╡рдиреНрд╕ рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рди рдХрд░реЗрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рд╕рдВрджреЗрд╢ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ рд╣реИ, рдСрдлрд╕реЗрдЯ 2, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдЙрд╕ рд╕рдордп рдЗрд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд▓реЗ рдСрдЯреЛрдХреЙрдорд┐рдЯ рддрдХ, рд╕рдВрджреЗрд╢ 2, 5, 6, 4, рдФрд░ 8 рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЕрдм рдЖрдкрдХреЛ рдХреЗрд╡рд▓ 7 рдСрдлрд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдСрдЯреЛрдХреЙрдорд┐рдЯ рдХрд╛ рдереНрд░реВрдкреБрдЯ рдкрд░ рд▓рдЧрднрдЧ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реИред
рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐
рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ, рд╕реЗрд╡рд╛ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЛ рдПрдХ рдмрд╛рд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреА рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЗрд╕рдореЗрдВ 4xx рдпрд╛ 5xx рддреНрд░реБрдЯрд┐ рд╣реБрдИ, рддреЛ рд╕реЗрд╡рд╛ рд╕рдВрджреЗрд╢ рдХреЛ рдлрд┐рд░ рд╕реЗ рднреЗрдЬ рджреЗрдЧреА, рдЬреЛ рд╕рдлрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реА рд╣реИред рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рд╕рдордп рдХреЛ рдПрдХ рдЕрд▓рдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрди рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХрд╛рд░ рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ред рдореИрдВ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреЗрддрд╛, рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪрд┐рдкрдЪрд┐рдкреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реЗрд╡рд╛ рд▓реЙрдЧ рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪрд┐рдкрдХреЗ рд░рд╣рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВрдЖрдорддреМрд░ рдкрд░, HTTP рд╕рд░реНрд╡рд░, 4xx рдпрд╛ 5xx рдХреЛ рд░рд┐рд╕реНрдкрд╛рдВрд╕ рдХрд╛ рджрд░реНрдЬрд╛ рджреЗрддреЗ рд╣реБрдП, Connection: close
рд╣реЗрдбрд░ рднреА рднреЗрдЬрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди TIME_WAITED
рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕реЗ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдлрд╝ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдкреВрд░реЗ рдкреЛрд░реНрдЯ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рдЬреЛ рдЬрд╛рд░реА рд╣реЛрдиреЗ рддрдХ рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рдпрд╣ рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╢реАрди рдкрд░ рдирд┐: рд╢реБрд▓реНрдХ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж рд▓реЙрдЧ рдореЗрдВ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╡рд┐рдВрдбреЛрдЬ 10 рдкрд░, рдкреЛрд░реНрдЯ 10-20 рд╣рдЬрд╛рд░ рдХреЗ рдмрд╛рдж рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ 1-2 рдорд┐рдирдЯ рдХреЗ рднреАрддрд░ рдЧрд▓рдд рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВред рдорд╛рдирдХ рдореЛрдб рдореЗрдВ, рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рд╕рдВрджреЗрд╢реЛрдВ
рдмреНрд░реЛрдХрд░ рд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рд▓рд╛рд╣рдХрд╛рд░ рдХреЗ рдкрд╛рд╕ HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рджреМрд░рд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрд╕рд╛рдзрди рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╢рд░реАрд░ рдореЗрдВ POST рдЕрдиреБрд░реЛрдз рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╡рд┐рдзрд┐ рд╢рд░реАрд░ рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рддреЛ рдЖрдк рдЙрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╕рдордп, рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЗрдбрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЙрдкрднреЛрдХреНрддрд╛, рд╡рд┐рд╖рдп рдФрд░ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдореЗрдВ рд╣реЗрдбрд░ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕реЗ рд╕рдВрджреЗрд╢ рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛, рд╕рдВрджреЗрд╢ рд╕рдВрдЦреНрдпрд╛, рд╡рд┐рднрд╛рдЬрди рдХреБрдВрдЬреА, рдпрджрд┐ рд▓рд╛рдЧреВ рд╣реЛ, рд╕рд╛рде рд╣реА рд╕рд╛рде рджрд▓рд╛рд▓ рдХрд╛ рдирд╛рдоред
рдЙрддреНрдкрд╛рджрдХрддрд╛
рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдкреАрд╕реА (рд╡рд┐рдВрдбреЛрдЬ 10, рдУрдкрдирдЬреЗрдбрдХреЗ -11 (рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдЬреА 1), i7-6700K, 16GB) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рд╕реЗрд╡рд╛ рдФрд░ рдПрдХ рд▓реИрдкрдЯреЙрдк рдЪрд▓рд╛рддрд╛ рд╣реИ (рд╡рд┐рдВрдбреЛрдЬ 10, i5-8250U, 8GB), рдЬрд┐рд╕ рдкрд░ рд╕рдВрджреЗрд╢ рдирд┐рд░реНрдорд╛рддрд╛, HTTP рдШреВрдо рд░рд╣рд╛ рдерд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрди рдЙрдкрднреЛрдХреНрддрд╛ рдФрд░ рдХрд╛рдлреНрдХрд╛ред рдкреАрд╕реА 1Gb / s рд╡рд╛рдпрд░реНрдб рдХрдиреЗрдХреНрд╢рди, 802.11ac рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реИрдкрдЯреЙрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рдЙрдЯрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдирд┐рд░реНрдорд╛рддрд╛ рдкреНрд░рддреНрдпреЗрдХ 110 рдПрдордПрд╕ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ 100 рдПрдордПрд╕ рдкрд░ 110 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдпрд╛рдпрд┐рдпреЛрдВ рдХреЛ рд╕рджрд╕реНрдпрддрд╛ рджреА рдЬрд╛рддреА рд╣реИ (рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдореВрд╣реЛрдВ рд╕реЗ
concurrencyFactor=500
(
concurrencyFactor=500
, рдСрдЯреЛ-рдХрдорд┐рдЯ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рд╕реНрдЯреИрдВрдб рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдХреБрдЫ рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдкреНрд░рдореБрдЦ рдорд╛рдк рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд▓рдВрдмрддрд╛ рдкрд░ рд╕реЗрд╡рд╛ рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╣реИред
рдХрд░рддреЗ рд╣реИрдВ:
- рдореВрд▓ рдЧреНрд░рд╛рд╣рдХ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛ рдХрд╛ рдЯрд╛рдЗрдо
q - рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк
- d
t0 , t
q рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдордп рд╣реИ рдФрд░ рд╕рдВрджреЗрд╢ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдХрддрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдкреВрд▓ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ
- d
t , t
q рдФрд░ HTTP рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд╕рдордп рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдордп рд╣реИред рдпрд╣ d
t рд╕рдВрджреЗрд╢ рдХреЗ рд╡рд┐рд▓рдВрдмрддрд╛ рдкрд░ рд╕реЗрд╡рд╛ рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╣реИред
рдорд╛рдк рдХреЗ рджреМрд░рд╛рди, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП (рд╕реА - рдЙрдкрднреЛрдХреНрддрд╛, рдЯреА - рд╡рд┐рд╖рдп, рдПрдо - рд╕рдВрджреЗрд╢):

рдорд╛рдирдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдореЗрдВ, рд╕реЗрд╡рд╛ рд╕реНрд╡рдпрдВ рд▓рдЧрднрдЧ рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдФрд░ рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдиреНрдпреВрдирддрдо рд╣реИред D
t (рд▓рдЧрднрдЧ 60ms) рдХреЗ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЬреАрд╕реА рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕реЗрд╡рд╛ рдкрд░ рд╣реА рдирд╣реАрдВред рдЬреАрд╕реА рдХреА рд╡рд┐рд╢реЗрд╖ рдЯреНрдпреВрдирд┐рдВрдЧ рдпрд╛ рд╢реЗрдирдбреЛрдирд╣ рдХреЗ рд╕рд╛рде рдЬреА 1 рдХреА рдЬрдЧрд╣ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рдкреНрд░рд╕рд╛рд░ рдХреЛ рд╕реБрдЪрд╛рд░реВ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИред
рдЬрдм рдЙрдкрднреЛрдХреНрддрд╛ рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реЗрд╡рд╛ рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ рдореЛрдб рдкрд░ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ рддреЛ рд╕рдм рдХреБрдЫ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдореЛрдб рдореЗрдВ, рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХрд╛рдлреА рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕рдордп рдкрд░ рд╕рдлрд╛рдИ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╡рд┐рд▓рдВрдмрддрд╛ рдХрд╛ рдкреНрд░рднрд╛рд╡ рдкрд┐рдЫрд▓реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕реНрддрд░ рдкрд░ рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдЙрдЪреНрдЪ рдбреАрдЯреА рдорд╛рди рд╕реНрдерд╛рдиреАрдп рдХрддрд╛рд░ рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреЗ рд╣реИрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЙрдЪреНрдЪ рднрд╛рд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓реИрдкрдЯреЙрдк 1300 рдЖрд░рдкреАрдПрд╕ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЭреБрдХрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЙрдЪреНрдЪ рднрд╛рд░ рдкрд░ рдорд╛рдк рдХреЗ рд╕рдВрдЧрдарди рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЦреБрд╢реА рд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛ред
рдкреНрд░рджрд░реНрд╢рди
рдЕрдм рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
- рдХрд╛рдлреНрдХрд╛ рджрд▓рд╛рд▓, рдЬрд╛рдиреЗ рдХреЛ рддреИрдпрд╛рд░ред рдореИрдВ рдмрд┐рдЯрдирдореА рд╕реЗ 192.168.99.100:9092 рдкрд░ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рд▓реВрдВрдЧрд╛ред
- рдПрдХ HTTP рд╕рдВрд╕рд╛рдзрди рдЬреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрд▓реИрдХ рд╕реЗ рд╡реЗрдм-рд╣реБрдХ рд▓рд┐рдпрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдХреНрдпреВ-рдУрд╡рд░-рдПрдЪрдЯреАрдкреА рд╕реЗрд╡рд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЦрд╛рд▓реА
application.yml
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдмрдирд╛рдПрдБ:
spring: profiles: default logging: level: com: viirrtus: queueOverHttp: DEBUG app: persistence: file: storageDirectory: "persist" brokers: - name: "Kafka" origin: "kafka" config: bootstrap.servers: "192.168.99.100:9092"
рдпрд╣рд╛рдВ рд╣рдо рд╕реЗрд╡рд╛ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмреНрд░реЛрдХрд░ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмреАрдЪ рдЦреЛ рди рдЬрд╛рдПрдВред `App.brokers []ред Config рдореЗрдВ, рдЖрдк рджреЗрд╢реА рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рд╕реА рднреА рдХрдиреЗрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдкреВрд░реА рд╕реВрдЪреА
рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА
рд╣реИ ред
рдЪреВрдВрдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╕реНрдкреНрд░рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╡рд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╣рд┐рдд, рд▓реЙрдЧрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
рдЕрдм рд╕реЗрд╡рд╛ рд╣реА рдЪрд▓рд╛рдУред рд╣рдо рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ -
docker-compose.yml
:
version: "2" services: app: image: viirrtus/queue-over-http:0.1.3 restart: unless-stopped command: --debug ports: - "8080:8080" volumes: - ./application.yml:/application.yml - ./persist:/persist
рдпрджрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЛ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕реНрд░реЛрдд рд╕реЗ рд╕реЗрд╡рд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд░реАрдбрдореА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдирд┐рд░реНрджреЗрд╢, рдПрдХ рд▓рд┐рдВрдХ рдЬреЛ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдЕрдЧрд▓рд╛ рдЪрд░рдг рдкрд╣рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП HTTP рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
POST localhost:8080/broker/subscription Content-Type: application/json { "id": "my-first-consumer", "group": { "id": "consumers" }, "broker": "Kafka", "topics": [ { "name": "slack.test", "config": { "concurrencyFactor": 10, "autoCommitPeriodMs": 100 } } ], "subscriptionMethod": { "type": "http", "delayOnErrorMs": 1000, "retryBeforeCommit": 10, "uri": "<slack-wh-uri>", "additionalHeaders": { "Content-Type": "application/json" } } }
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓рдЧрднрдЧ рдПрдХ рд╣реА рднреЗрдЬреА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рд╣реЛрдЧреАред
рдЪрд▓реЛ рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ:
Consumer.id
- рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдХреА рдЖрдИрдбреАConsumer.group.id
- рд╕рдореВрд╣ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛Consumer.broker
- рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреМрди рд╕реЗ рд╕реЗрд╡рд╛ рджрд▓рд╛рд▓реЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИConsumer.topics[0].name
- рдЙрд╕ рд╡рд┐рд╖рдп рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рд╕реЗ рд╣рдо рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВConsumer.topics[0].config. concurrencyFactor
Consumer.topics[0].config. concurrencyFactor
- рдПрдХ рд╕рд╛рде рднреЗрдЬреЗ рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛Consumer.topics[0].config. autoCommitPeriodMs
Consumer.topics[0].config. autoCommitPeriodMs
- рддреИрдпрд╛рд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдЕрд╡рдзрд┐Consumer.subscriptionMethod.type
- рд╕рджрд╕реНрдпрддрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ HTTP рдЙрдкрд▓рдмреНрдз рд╣реИредConsumer.subscriptionMethod.delayOnErrorMs
- рдПрдХ рддреНрд░реБрдЯрд┐ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛ рд╕рдордпConsumer.subscriptionMethod.retryBeforeCommit
- рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рдкреБрдирдГ рднреЗрдЬрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдпрджрд┐ 0 - рд╕рдВрджреЗрд╢ рд╕рдлрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрдХ рд╕реНрдкрд┐рди рд╣реЛрдЧрд╛ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреВрд░реНрдг рд╡рд┐рддрд░рдг рдХреА рдЧрд╛рд░рдВрдЯреА рдкреНрд░рд╡рд╛рд╣ рдХреА рдЧрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИредConsumer.subscriptionMethod.uri
- рд╡рд╣ рд╕рдВрд╕рд╛рдзрди рдЬрд┐рд╕ рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗConsumer.subscriptionMethod.additionalHeader
- рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢реАрд░реНрд╖ рд▓реЗрдЦред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ JSON рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╕реНрд▓реИрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд╕рдХреЗред
рдЗрд╕ рдЕрдиреБрд░реЛрдз рдореЗрдВ, HTTP рд╡рд┐рдзрд┐ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ, POST, Slack рдХрд╛рдлреА рдареАрдХ рд╣реИредрдЗрд╕ рдкрд▓ рд╕реЗ, рд╕реЗрд╡рд╛ рдирдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП slack.test рд╡рд┐рд╖рдп рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рднрд╛рдЬрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреА рд╣реИред
рд╡рд┐рд╖рдп рдХреЛ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрд╛рдлреНрдХрд╛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдХрд┐ рд▓реЙрдиреНрдЪ
/opt/bitnami/kafka/bin
рдЧрдИ рдХрд╛рдлреНрдХрд╛ рдЫрд╡рд┐ рдХреЗ
/opt/bitnami/kafka/bin
(рдЕрдиреНрдп рдХрд╛рдлреНрдХрд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рд╕реНрдерд╛рди рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ):
kafka-console-producer.sh --broker-list localhost:9092 --topic slack.test > {тАЬtextтАЭ: тАЬHello!тАЭ}
рдЙрд╕реА рд╕рдордп, рд╕реНрд▓реИрдХ рдЖрдкрдХреЛ рдПрдХ рдирдП рд╕рдВрджреЗрд╢ рдХреА рд╕реВрдЪрдирд╛ рджреЗрдЧрд╛:
рдХрд┐рд╕реА рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 'рдмреНрд░реЛрдХрд░ / рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм' рдХреЗ рд▓рд┐рдП рдЙрд╕реА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде POST рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬреЛ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рджреМрд░рд╛рди рдерд╛редрдирд┐рд╖реНрдХрд░реНрд╖
рдлрд┐рд▓рд╣рд╛рд▓, рдХреЗрд╡рд▓ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреИрдЪрд┐рдВрдЧ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рд╕рдЯреАрдХ-рдПрдХ рдмрд╛рд░ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреНрд░реЛрдХрд░ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреНрдп рд▓реЛрдХрдкреНрд░рд┐рдп рдкрдм-рд╕рдм рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВред
рдХрддрд╛рд░-рдУрд╡рд░-рдПрдЪрдЯреАрдкреА рд╕реЗрд╡рд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рддрд╣рдд рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 0.1.3 рджреЗрд╡ рдФрд░ рдордВрдЪ рдХреЗ рд╕реНрдЯреИрдВрдб рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд┐рд░ рд╣реИред рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдВрдбреЛрдЬ 10, рдбреЗрдмрд┐рдпрди 9 рдФрд░ рдЙрдмрдВрдЯреВ 18.04 рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдЕрдкрдиреЗ рдЬреЛрдЦрд┐рдо рдкрд░ рдареЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рд╕реЗрд╡рд╛ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рддреЛ
рдЬреАрдердм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред