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

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдзрд╛рд░рд╛рдПрдБ рд╕рдВрдХрд▓реНрдкрдирд╛
рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдзрд╛рд░рд╛рдУрдВ рдирд╛рдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЪрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдзрд╛рд░рд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧрддрд┐ рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдмрдлрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реИ, рддреЛ рдпрд╣ рддреЗрдЬреА рд╕реЗ рдЪрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдордп рдХрд┐рддрдирд╛ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдЗрд╕ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдмреИрдХрдкреНрд░реЗрд╢рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХрдИ рддрддреНрд╡ рдареАрдХ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХ рдирд╣реАрдВ, рдФрд░ рдлрд┐рд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рддреЗ рд╣реИрдВред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд░рд┐рдПрдХреНрдЯрд┐рд╡ рд╕реНрдЯреНрд░реАрдо
рдкреНрд░рдХрд╛рд╢рдХ-рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИред рдпрд╣ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЪрд╛рд░ рдЗрдВрдЯрд░рдлреЗрд╕ (рдкреНрд░рдХрд╛рд╢рдХ, рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░, рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди) рдФрд░ рдЙрдирдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрдмрдВрдз рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЖрдЗрдП рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕реЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
public interface Publisher<T> { public void subscribe(Subscriber<? super T> s); } public interface Subscriber<T> { public void onSubscribe(Subscription s); public void onNext(T t); public void onError(Throwable t); public void onComplete(); } public interface Subscription { public void request(long n); public void cancel(); } public interface Processor<T, R> extends Subscriber<T>, Publisher<R> { }
рдкреНрд░рдХрд╛рд╢рдХ-рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдореЙрдбрд▓ рдХреЗ рджреЛ рдкрдХреНрд╖ рд╣реИрдВ: рд╕рдВрдЪрд╛рд░рдг рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдзрд╛рд░рд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рдХрд╛рд╢рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЙрдирдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЛ рдЗрд╕рдХреА рд╕рджрд╕реНрдпрддрд╛ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдкреНрд░рдХрд╛рд╢рдХ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рдХрд╛рд╢рдХ рдХреЛ рдирд┐рдореНрди рдХреНрд░рдо рдореЗрдВ рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
- onSubscribeред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЛ рдкреНрд░рдХрд╛рд╢рдХ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рд╡рд╕реНрддреБ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдкреНрд░рдХрд╛рд╢рдХ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕ рд╕рдмрд╕реНрдХреНрд░рд╛рдЗрдмрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдкреНрд░рдХрд╛рд╢рдХ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рдХрд╛рд╢рдХ рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реБрдП, рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЛ рдСрди рд▓рд╛рдЗрди рд╡рд┐рдзрд┐ рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- рдЗрд╕рдХреЗ рдмрд╛рдж рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рд╕рдордп-рд╕рдордп рдкрд░ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдкрд░ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдореЗрдердб рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрдмреНрд▓рд┐рд╢рд░ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдореЗрдердб рдХреЗ рдЬрд░рд┐рдП рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЯреЛрдЯрд▓ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
- рдпрджрд┐ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдкрд░рд┐рдорд┐рдд рд╣реИ, рддреЛ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ onNext рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рдХрд╛рд╢рдХ рдХреЛ onComplete рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
- рдпрджрд┐ рдкреНрд░рдХрд╛рд╢рдХ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рд╣реИ рдФрд░ рддрддреНрд╡реЛрдВ рдХреА рдЖрдЧреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдСрдирд░рд░ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
- рдСрдирдХреНрд░реАрдо рдпрд╛ рдСрдирд░реЙрдЗрдб рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдХрд╛рд╢рдХ рдХреА рдЖрдЧреЗ рдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рдкреНрд░рдХрд╛рд╢рдХ рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЗ рдмреАрдЪ рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдиреЗ рдкреНрд░рдХрд╛рд╢рдХ рдХреЛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдиреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рдФрд░ рдкреНрд░рдХрд╛рд╢рдХ, рдмрджрд▓реЗ рдореЗрдВ, рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпрд╛ рддреЛ рдЕрдЧрд▓рд╛ рддрддреНрд╡ рд╣реИ, рдпрд╛ рдХреЛрдИ рдФрд░ рддрддреНрд╡ рдирд╣реАрдВ рд╣реИрдВ, рдпрд╛ рдХреБрдЫ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рд╣реИред
рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдкреНрд░рдХрд╛рд╢рдХ рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЗ рджреВрд╕рд░реЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдирдХреЗ рдмреАрдЪ рдХреА рдмрд╛рддрдЪреАрдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реЛрдЧреАред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореВрд▓ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдХреНрд░рдорд╢рдГ рдкреНрд░рдХрд╛рд╢рдХ рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдХреЗ, рд╣рдо рд▓реЗрдЦ рдХреЗ рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдкрд╣рдЪрд╛рдиреА рдЧрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдХреЗ рдЪрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдлрд▓ рдпрд╛ рдЕрд╕рдлрд▓ рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреНрд░рдорд╢рдГ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЛ рдСрдирдХрд╛рдЙрдЯрд▓ рдпрд╛ рдСрдирд░реЙрдЗрдб рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬрдХрд░ рд╣рд▓ рдХреА рдЬрд╛рддреА рд╣реИред рдкреНрд░рдХрд╛рд╢рдХ рдЗрди рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрд┐рддрдиреЗ HTTP рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗ рдЧрдП рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рддрдиреЗ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдорд┐рд▓реАрдВред рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдПрдХ рдСрдирд╕реНрдХреНрд░реАрди рдЕрдзреВрд░рд╛ рд╕рдВрдХреЗрдд рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдПрдХ рдСрдирд░реНрд░ рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЛ рдЖрдЧреЗ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рд╛рде рд╣реА рдореВрд▓ рдЗрдЯреНрд░реЗрдЯрд░ рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдШрдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ рдмрдлрд░ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдСрдирдиреЗрдХреНрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ Iterator рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ hasNext рдФрд░ рдЕрдЧрд▓реЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдмрдлрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдПрдХ рдЕрд╡рд░реБрджреНрдз рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдВрдХреНрдбрдмреНрд▓реЙрдХрдбреАрдХреНрдпреВред
рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рддреБрд░рдВрдд рд╕рд╡рд╛рд▓ рдкреВрдЫреЗрдЧрд╛: рдЕрд╡рд░реБрджреНрдз рдХрддрд╛рд░ рдХреНрдпреЛрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдзрд╛рд░рд╛рдУрдВ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рднреА рддрд░реАрдХреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдпрд╣реАрдВ рд╣реИ: рдЪреВрдВрдХрд┐ рд╣рдо рддрддреНрд╡реЛрдВ рдХреА рдХрдбрд╝рд╛рдИ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд╢рдХ рд╕реЗ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдСрдирдиреЗрдХреНрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдХрддрд╛рд░ рд╣рдореЗрд╢рд╛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЬреЛрдбрд╝ рд╕рдХрддреА рд╣реИред
рджреВрд╕рд░реА рдУрд░, рдЬрдм рдПрдХ рдЦрд╛рд▓реА рдХрддрд╛рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИрдирдХреНрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдмреНрд▓реЙрдХрд┐рдВрдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕рдм рдареАрдХ рд╣реИ: рд╣реИрдирдХреНрд╕реНрдЯ рд╡рд┐рдзрд┐ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЕрдиреБрдмрдВрдз рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ Iterator рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдмрддрд╛рдпрд╛ рдерд╛, рдПрдХ рдЕрд╡рд░реБрджреНрдз рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдЕрдЧрд▓реА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЛ рдХрддрд╛рд░ рд╕реЗ рдШрдЯрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЬрдм рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рд╕реЗ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЗ рдЕрдЧрд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЪрд┐рддреНрд░рд╛ 7. рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдзрд╛рд░рд╛рдУрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрд╛рддрдЪреАрддрдмреЗрд╢рдХ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╡рд░реБрджреНрдз рдХреЙрд▓ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдирд╣реАрдВ рдкрд╛рдПрдВрдЧреЗред рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рддрд┐рдорд╛рдиреЛрдВ рдХреЗ рдПрдХ рдмреЗрдореЗрд▓ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрд╛рддрдЪреАрдд, рдФрд░ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ hasNext рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп trueN рдпрд╛ false рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрд╛рддрдЪреАрдд рдХреЗ рд╡рд┐рдкрд░реАрдд, рддрд╛рд▓реЗ рдХреЗ рдХрд╛рд░рдг рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЗ рд╕рдордЧреНрд░ рднрд╛рд░ рдХреЛ рдмрдврд╝рд╛рдХрд░ рдХрд╛рдлреА рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ рдпрджрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдкрд╛рдЪреЗ рд╕реНрдкрд╛рд░реНрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдореИрдкрдкрд╛рд░реНрдЯрд┐рд╢рди рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдЬреЛ рдкреНрд░рдХрд╛рд╢рдХ рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдзрд╛рдЧреЗ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛ред
рдЕрдХреНрдХрд╛-рдзрд╛рд░рд╛рдПрдБ рдФрд░ рдПрдХреНрдХрд╛-http рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ
рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд░рд┐рдПрдХреНрдЯрд┐рд╡ рд╕реНрдЯреНрд░реАрдо рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВред рдРрд╕рд╛ рд╣реА рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЕрдХреНрдХрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЕрдХреНрдХрд╛-рдзрд╛рд░рд╛ рдореЙрдбреНрдпреВрд▓ рд╣реИред рдЬреЗрд╡реАрдПрдо рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдПрдХреНрдХрд╛ рдиреЗ рдЦреБрдж рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рд╕рд╛рдзрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдиреАрдВрд╡ рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд
рдЕрднрд┐рдиреЗрддрд╛ рдореЙрдбрд▓ рд╣реИ , рдЬреЛ рдЖрдкрдХреЛ рдереНрд░реЗрдбреНрд╕ рдФрд░ рдЙрдирдХреЗ рдкреВрд▓ рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдмрд┐рдирд╛ рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЕрдХреНрдХрд╛ рдореЗрдВ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд╛рд╣рд┐рддреНрдп рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдпрд╣рд╛рдВ рдирд╣реАрдВ рд░реБрдХрддреЗ рд╣реИрдВ (
рдЕрдХреНрдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╕реНрд░реЛрдд рд╣реИ, рдореИрдВ
рдПрдХреНрд╢рди рдореЗрдВ рднреА
рдЕрдХреНрдХрд╛ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ)ред рдпрд╣рд╛рдВ рд╣рдо JVM рдХреЗ рддрд╣рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рддрдХрдиреАрдХреА рдкрдХреНрд╖ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВрдЧреЗред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЕрднрд┐рдиреЗрддрд╛ рд╕реНрд╡рдпрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рддреЗ рд╣реИрдВред рдПрдХ рдЕрднрд┐рдиреЗрддрд╛ рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓рд╛ рдЪрд░рдг рдЬрдм рдПрдХреНрдХрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рддреЛ рдПрдХреНрдЯрд░рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рд╣реИред рдЬрдм рдПрдХреНрдЯрд░рд╕рд┐рд╕реНрдЯрдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдереНрд░реЗрдб рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдкреВрд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдбрд┐рд╕реНрдкреИрдЪрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рднреА рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░, рдПрдХ рдПрдХрд▓ рдзрд╛рдЧрд╛ рдХрдИ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдПрдХ рдЕрд╡рд░реБрджреНрдз рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдирд╛)ред
рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдП рдЧрдП рд╕рдмрд╕реЗ рдЖрдо рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдХреА рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ рдЙрдирдХреЗ рдмреАрдЪ рдХреЛрдИ рдЕрдбрд╝рдЪрди рдирд╣реАрдВ рдереА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдИ рдЕрднрд┐рдиреЗрддрд╛ рдЕрдЧрд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝реА рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдХрд╛ рдПрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдЙрдЯрдСрдлрд╝рдореИрд░реАрдСрд░рд░ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред
рд╕рдВрд╕реНрдХрд░рдг 2.4 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдПрдХреНрдХрд╛-рд╕реНрдЯреНрд░реАрдо рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХреНрдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдШреЛрд╖рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрднрд┐рдиреЗрддрд╛ рдмрдирд╛рддрд╛ рд╣реИред рдЕрдХреНрдХрд╛-рдзрд╛рд░рд╛рдПрдБ рдмреИрдХрдкреНрд░реЗрд╢рд░ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИрдВ, рдЬреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдХрддрд╛рд░ рдХреЛ рдУрд╡рд░рдлреНрд▓реЛ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рдПрдХреНрдХрд╛-рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдпреЛрдЬрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рддрддреНрд╡ рд╕реНрд░реЛрдд, рдкреНрд░рд╡рд╛рд╣ рдФрд░ рд╕рд┐рдВрдХ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдХрд░, рд╣рдореЗрдВ рдПрдХ рд░рдирдиреЗрдмрд▓ рдЧреНрд░рд╛рдлрд╝ рдорд┐рд▓рддрд╛ рд╣реИред рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдордЯреАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧреНрд░рд╛рдл рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ (рднреМрддрд┐рдХрд╡рд╛рджреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди ActorMaterializer) рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред
рдЖрдЗрдП рдЪрд░рдгреЛрдВ рдХреЗ рд╕реНрд░реЛрдд, рдкреНрд░рд╡рд╛рд╣ рдФрд░ рд╕рд┐рдВрдХ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдХреНрдХрд░рд╛-рдзрд╛рд░рд╛рдПрдБ рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ, рдЬреЛ рдПрдХ рдЗрдЯреНрд░реЗрдЯрд░ рд╕рд╣рд┐рдд рд╕реНрд░реЛрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ:
val featuresSource: Source[Array[Float], NotUsed] = Source.fromIterator { () => featuresIterator }
рдореМрдЬреВрджрд╛ рд╕реНрд░реЛрдд рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдХреЗ рднреА рд╕реНрд░реЛрдд рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
val newSource: Source[String, NotUsed] = source.map(item => transform(item))
рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ nontrivial рдСрдкрд░реЗрд╢рди рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдкреНрд░рд╡рд╛рд╣ рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдХреНрдХрд╛-рдзрд╛рд░рд╛ рдкреНрд░рд╡рд╛рд╣ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрдирд╛рдирд╛ рд╣реИ:
val someFlow: Flow[String, Int, NotUsed] = Flow.fromFunction((x: String) => x.length)
рд╕реЛрд░реНрд╕ рдПрдВрдб рдлреНрд▓реЛ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рд╕реЛрд░реНрд╕ рдорд┐рд▓рддрд╛ рд╣реИред
val newSource: Source[Int, NotUsed] = oldSource.via(someFlow)
рд╕рд┐рдВрдХ рдХреЛ рдбрд╛рдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдЕрдВрддрд┐рдо рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрд░реЛрдд рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдХреНрдХрд╛-рдзрд╛рд░рд╛рдПрдВ рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рднрд┐рдиреНрди рд╕рд┐рдВрдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Sink.foreach рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рдВрдХ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐ред
val printSink: Sink[Any, Future[Done]] = Sink.foreach(println)
рд╕реНрд░реЛрдд, рдкреНрд░рд╡рд╛рд╣ рдФрд░ рд╕рд┐рдВрдХ рдХреНрд░рдорд╢рдГ рдЗрдирдкреБрдЯ рдФрд░ / рдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рддрддреНрд╡реЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рдЪрд╛рд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЪрд░рдг рдореЗрдВ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рдХреБрдЫ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╕реЛрд░реНрд╕, рдлреНрд▓реЛ рдФрд░ рд╕рд┐рдВрдХ рднреА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рднреМрддрд┐рдХреАрдХреГрдд рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдСрдкрд░реЗрд╢рди рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рдгрд╛рдо рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрд░реНрде рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлреНрд▓реЛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ NotUsed рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреМрддрд┐рдХ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрд╡рд╢реНрдпрдХ рд╕реНрд░реЛрдд, рдкреНрд░рд╡рд╛рд╣, рдФрд░ рд╕рд┐рдВрдХ рдХреЛ рдорд┐рд▓рд╛рдХрд░, рд╣рдореЗрдВ RunnableGraph рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкрд░рд┐рдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдЧреНрд░рд╛рдл рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЪрд░рдгреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рдЪрд░рдгреЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдкреВрд░реЗ рдЧреНрд░рд╛рдл рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕реНрд░реЛрдд рдЪрд░рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
val graph: RunnableGraph[NotUsed] = someSource.to(Sink.foreach(println))
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рд╕рд┐рдВрдХ рдЪрд░рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
val graph: RunnableGraph[Future[Done]] = someSource.toMat(Sink.foreach(println))(Keep.right)
рдСрдкрд░реЗрд╢рди рдХреЗ рдЧреНрд░рд╛рдл рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЗрд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, runnableGraph рдХреЛ рд░рди рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ ActorMaterializer рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрддрд╛ рд╣реИ (рдЬреЛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рджрд╛рдпрд░реЗ рдореЗрдВ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рдЬреЛ рдХрд┐ рдЙрди рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдЬреЛ рдСрдкрд░реЗрд╢рди рдХрд░реЗрдВрдЧреЗред рдЖрдорддреМрд░ рдкрд░, рдПрдХ ActorMaterializer рдПрдХ ActorSystem рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдкрдиреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рд╕рд░рд▓ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдПрдХ рдЕрд▓рдЧ RunnableGraph рдмрдирд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╕ рд╕реНрд░реЛрдд рдХреЛ рд╕рд┐рдВрдХ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд░реЛрдд рдкрд░ рд░рдирд╡рд┐рде рд╡рд┐рдзрд┐ рдХрд╣рдХрд░ рд╢реБрд░реВ рдХрд░реЗрдВред рдпрд╣ рд╡рд┐рдзрд┐ рдпрд╣ рднреА рдорд╛рдирддреА рд╣реИ рдХрд┐ рдПрдХ ActorMaterializer рдСрдмреНрдЬреЗрдХреНрдЯ рдирд┐рд╣рд┐рдд рджрд╛рдпрд░реЗ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд┐рдВрдХ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рднреМрддрд┐рдХ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рд╕реНрд░реЛрдд рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╕реЗ рдкреНрд░рдХрд╛рд╢рдХ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
val source: Source[Score, NotUsed] = Source.fromIterator(() => sourceIterator).map(item => transform(item)) val publisher: Publisher[Score] = source.runWith(Sink.asPublisher(false))
рддреЛ, рдЕрдм рд╣рдордиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЖрдк рд╕реНрд░реЛрдд рдЗрдЯреНрд░реЗрдЯрд░ рд╕реЗ рдПрдХ рд╕реНрд░реЛрдд рдмрдирд╛рдХрд░ рдФрд░ рдЙрд╕рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдХреЗ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рдХрд╛рд╢рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рд╣рдо рдЗрд╕реЗ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд░рд┐рдгрд╛рдореА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдЦрд┐рд░реА рд╕рд╡рд╛рд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ: рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде HTTP рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
Akka рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ akka
-http рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ HTTP рдкрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╕рдВрдЪрд╛рд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдПрдХреНрдХрд╛ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдлреНрд▓реЛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдСрдкрд░реЗрд╢рдВрд╕ рдХреЗ рдЧреНрд░рд╛рдл рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ HTTP рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХреНрдХрд╛-http рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- рдЕрдиреБрд░реЛрдз-рд╕реНрддрд░ рдПрдкреАрдЖрдИ - рдПрдХ рдордирдорд╛рдиреА рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░, HTTP рдХрдиреЗрдХреНрд╢рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдорд╢реАрди рдХрд╛ рдкреВрд░рд╛ рдкрддрд╛ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
- рд╣реЛрд╕реНрдЯ-рд╕реНрддрд░реАрдп рдПрдкреАрдЖрдИ - рдЙрдкрдпреБрдХреНрдд рдЬрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕ рдорд╢реАрди рдкрд░ рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХреНрдХрд╛-HTTP HTTP рдХрдиреЗрдХреНрд╢рди рдХреЗ рдкреВрд▓ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдпрд╣ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
- рдХрдиреЗрдХреНрд╢рди-рд╕реНрддрд░ рдПрдкреАрдЖрдИ - рдЖрдкрдХреЛ HTTP рдХрдиреЗрдХреНрд╢рди рдХреЗ рдкреНрд░рдмрдВрдзрди рдкрд░ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдХрдиреЗрдХреНрд╢рди рднрд░ рдореЗрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЦреЛрд▓рдирд╛, рдмрдВрдж рдХрд░рдирд╛ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд░реНрдЧреАрдХрд░рдг рд╕реЗрд╡рд╛ рдХрд╛ рдкрддрд╛ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдХреЗрд╡рд▓ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╢реАрди рдХреЗ рд╕рд╛рде HTTP рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣реЛрд╕реНрдЯ-рд╕реНрддрд░реАрдп рдПрдкреАрдЖрдИ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдЕрдм, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп HTTP рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкреВрд▓ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
val httpFlow: Flow[(HttpRequest,Id), (Try[HttpResponse],Id), Http.HostConnectionPool] = Http().cachedHostConnectionPool[Id](hostAddress, portNumber)
рдЬрдм Http ()ред CachedHostConnectionPool [T] (hostAddress, portNumber) рдХреЛ рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ ActorSystem рдореЗрдВ, рдЬреЛ рдХрд┐ рдПрдХ рдирд┐рд╣рд┐рдд рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реИ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡рдпрдВ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдлрд╝реНрд▓реЛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдФрд░ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рдЖрдИрдбреА рдкрд╣рдЪрд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдХреЛ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рдЪрд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ HTTP рдХреЙрд▓ inkka-http рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рд╣реИ, рдФрд░ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ, рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛред рдЗрд╕рд▓рд┐рдП, рдЖрдЙрдЯрдкреБрдЯ рдлреНрд▓реЛ рдореЗрдВ рдХреНрд╡реЗрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдо рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкрд╣рдЪрд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреБрдЫ рдЬреЛрдбрд╝реЗ рджреЗрддрд╛ рд╣реИред
рд╕реАрдзреЗ рддреМрд░ рдкрд░, HTTP рдХрдиреЗрдХреНрд╢рди рддрдм рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдЧреНрд░рд╛рдлрд╝ (рдЗрд╕ рдкреНрд░рд╡рд╛рд╣ рд╕рд╣рд┐рдд) рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рднреМрддрд┐рдХреАрдХреГрдд)ред рдЕрдХреНрдХрд╛-http рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЪрд╛рд╣реЗ рдХрд┐рддрдиреА рднреА рдмрд╛рд░ httpFlow рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рднреМрддрд┐рдХ рд░реВрдк рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдПрдХ рдПрдХреНрдЯрд░рд╕рд┐рд╕реНрдЯрдо рдХреЗ рднреАрддрд░ рд╣рдореЗрд╢рд╛ HTTP рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреВрд▓ рд╣реЛрдЧрд╛ рдЬреЛ рд╕рднреА рднреМрддрд┐рдХрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рднрд╛рд░ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, HTTP рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ ActorSystem рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдереНрд░реЗрдб рдкреВрд▓ рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рднреА рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ (рдпрд╛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪрд░рдг akka-streams рдФрд░ akka-http) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЕрдзрд┐рдХрддрдо рджрдХреНрд╖рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрд╕реА JVM рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рднреАрддрд░ ActorSystem рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛: рд╡рд░реНрдЧреАрдХрд░рдг рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
рддреЛ, рдЕрдм рд╣рдо рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдмрд╛рддрдЪреАрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрдкрд╛рдЪреЗ рд╕реНрдкрд╛рд░реНрдХ рдкрд░ рд╡рд┐рддрд░рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдмрдбрд╝реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреА рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛ рдкрд╣рд▓реЗ рд╣реА рдЪрд┐рддреНрд░ 7 рдореЗрдВ рджрд┐рдЦрд╛рдИ рдЬрд╛ рдЪреБрдХреА рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛рд╕реЗрдЯ [рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ] рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред рдореИрдкрдкрд╛рд░реНрдЯрд┐рд╢рди рдСрдкрд░реЗрд╢рди рдХреЛ рдЙрд╕ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛рд╕реИрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рд╕реНрд░реЛрдд рд╕реЗрдЯ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЖрдИрдбреА рдХреЛ рд╡рд░реНрдЧреАрдХрд░рдг (рдбреЗрдЯрд╛рд╕реЗрдЯ [рд╕реНрдХреЛрд░]) рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдореЛрд╣рд░ рджреА рдЧрдИ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрдХреЛрдВ рдкрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕реНрд░реЛрдд рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд╢рдХ рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдореЗрдВ рдХреНрд░рдорд╢рдГ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╕реЗ рд▓рдкреЗрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
case class Features(id: String, vector: Array[Float]) case class Score(id: String, score: Float) //(1) val batchesRequestCount = config.getInt(тАЬscoreService. batchesRequestCountтАЭ)
рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧреАрдХрд░рдг рд╕реЗрд╡рд╛ рдПрдХ рдмрд╛рд░ рдлреАрдЪрд░ рд╡реИрдХреНрдЯрд░ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдПрдХ рдХреЙрд▓ рдХреЗ рдмрд╛рдж рд╡рд░реНрдЧреАрдХрд░рдг рдкрд░рд┐рдгрд╛рдо рднреА рдкреВрд░реЗ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рдХрд╛рд╢рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рд╕реНрдХреЛрд░ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди Iterable [рд╕реНрдХреЛрд░]ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдЗрд╕ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА рдЗрдЯреНрд░реЗрдЯрд░ (рдЬреЛ рдХрд┐ рдПрдХ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рднреА рд╣реИ) рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧреАрдХрд░рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдСрди рдХреЙрд▓ рд╡рд┐рдзрд┐ рд╕реЗ рд╕рд┐рдВрдЧрд▓ рдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП onNext рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИред рдЕрдм рд╣рдо рдЗрд╕ рдХреЛрдб рдХрд╛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред
- рд╣рдо рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЖрдИрдбреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдХреЗ рд╕рд╛рде рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
- рд╣рдо рдПрдХ рдмрд╛рд░ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рдХ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдореВрд╣реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдорд╛рди рдмрдлрд░ рдореЗрдВ рдЭреВрда рд╣реЛрдВрдЧреЗ рдФрд░ рдЬрдм рддрдХ рд╡реЗ рдкрд░рд┐рдгрд╛рдореА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рдорд╛рди рдирд┐рд╖реНрдкрд╛рджрдХ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ рдХреА рдорд╛рддреНрд░рд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
- рд╕реНрд░реЛрдд рдЗрдЯреНрд░реЗрдЯрд░ рд╕реЗ рдкреНрд░рдХрд╛рд╢рдХ рдмрдирд╛рдПрдБред рд╡рд╣ рд╡рд░реНрдЧреАрдХрд░рдг рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред CreatePublisher рдлрд╝рдВрдХреНрд╢рди рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред
- рдПрдХ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЗрдЯреНрд░реЗрдЯрд░ рд╣реЛрдЧрд╛ред IteratorSubscriber рд╡рд░реНрдЧ рдХреЛрдб рднреА рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдкреНрд░рдХрд╛рд╢рдХ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛ред
- рдореИрдкрдкрд╛рд░реНрдЯрд┐рд╢рди рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ IteratorSubscriber рд▓реМрдЯреЗрдВред
рдЕрдм createPublisher рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
type Ids = Seq[String]
- - , . httpFlow, .
- : , (batchSize) (parallelismLevel).
- implicit scope ActorSystem, ActorMaterializer httpFlow. Spark-. ActorSystemHolder .
- akka-streams . Source[Features] .
- batchSize .
- HttpRequest . HttpRequest createHttpRequest. createPublisher. feature-, , ( predict). , HTTP-. , HTTP-, HTTP-, URI .
- httpFlow.
- , . flatMapMerge, akka-http Source[ByteString], , . . parallelismLevel , ( ). HTTP-: , , , .
- : . akka ByteString. , ByteString O(1), ByteString . , , . , .
- HTTP- , Stream . , discardEntityBytes , , .
- . akka-http , .
- , Publisher, . , . false Sink.asPublisher , Publisher Subscriber-.
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдЦрдВрдб рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдХреНрдХрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдПрдХреНрдЯрд░рд╕рд┐рд╕реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд┐рд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдкрд╛рд░реНрдХ рдирд┐рд╖реНрдкрд╛рджрдХ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕реНрдкрд╛рд░реНрдХ рдирд┐рд╖реНрдкрд╛рджрдХ рдПрдХ рдЕрд▓рдЧ JVM рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреЗ рднреАрддрд░, рд╣рдо рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо ActorSystem рдФрд░ ActorMatrializer рдФрд░ httpFlow рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред object ActorSystemHolder { implicit lazy val actorSystem: ActorSystem = {
- рд╣рдо рдЖрд▓рд╕реА рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рд╡реИрд╢реНрд╡рд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓реНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рддрдм рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ рдЬрдм рд╡реЗ рдкрд╣рд▓реА рдмрд╛рд░ рдорд╛рдБрдЧ рдореЗрдВ рд╣реЛрдВрдЧреЗред
- рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ ActorSystem рдмрдирд╛рддрд╛ рд╣реИред
- рдПрдХреНрдЯрд░рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрд╕ рдкрд░ рд╕рдорд╛рдкреНрддрд┐ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рд╕рднреА рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рдорд╛рдирдХ рд╕реНрдЯреЙрдк рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рджреЗрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрд╕ рд╣реБрдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ JVM рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ ActorMaterializer рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ ActorSystem рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрдХрд╛-рд╕реНрдЯреНрд░реАрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред
- рдЕрдВрдд рдореЗрдВ, рд╣рдо рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП httpFlow рдмрдирд╛рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣рд╛рдБ рд╣рдо ActorSystem рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ HTTP рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЗ рдкреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк HTTP рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╣рдорд╛рд░реА HTTP рдЗрдВрдЯрд░реИрдХреНрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред sealed trait QueueItem[+T] case class Item[+T](item: T) extends QueueItem[T] case object Done extends QueueItem[Nothing] case class Failure(cause: Throwable) extends QueueItem[Nothing] //(1) class StreamErrorCompletionException(cause: Throwable) extends Exception(cause) //(2) class IteratorSubscriber[T](requestSize: Int) extends Subscriber[Iterable[T]] with Iterator[T] {
IteratorSubscriber рд╡рд░реНрдЧ рдирд┐рд░реНрдорд╛рддрд╛-рдЙрдкрднреЛрдХреНрддрд╛ рдореЙрдбрд▓ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рднрд╛рдЧ Iterator рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдЙрдкрднреЛрдХреНрддрд╛ рд╣реИред рдЕрд╡рд░реБрджреНрдз рдХрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрдЪрд╛рд░ рдХреЗ рд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Iterator рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ Apache Spark рдирд┐рд╖реНрдкрд╛рджрдХ рдкреВрд▓ рд╕реЗ рдПрдХ рдзрд╛рд░рд╛ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рддрд░реАрдХреЗ ActorSystem рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╡рд╛рд▓реЗ рдкреВрд▓ рд╕реЗ рдмреБрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВредрдЕрдм, рдЖрдЗрдП рджрд┐рдП рдЧрдП IteratorSubscriber рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВред- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдмрдлрд░ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреАрдЬреАрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдмрдлрд░ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрддреНрд╡реЛрдВ рдХрд╛ рд╕рдореВрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдбреЛрди рдХреЗ рд╕рдлрд▓ рд╕рдорд╛рдкрди рдХрд╛ рд╕рдВрдХреЗрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдереНрд░реЛрдмреЗрдмрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред
- , hasNext .
- , , Publisher-.
- , . LinkedBlockingQueue, . , .
- , . , , Publisher-. , , Publisher- . hasNext next ( requestNextBatches hasNext), , .
- subscriptionPromise subscription Subscription, Publisher onSubscribe. , Reactive Streams Subscriber- Publisher- , , hasNext , onSubscribe. , subscription, Publisher-. lazy subscription, Promise.
- . hasNext next, , .
- , , hasNext false . hasNext, .
- onSubscribe Publisher- Subscription Promise, subscription.
- onNext Publisher-, . .
- Publisher onComplete, Done.
- Publisher onError. .
- hasNext , . , true, . , .
- , false.
- , , requestSize, Publisher. , , , Publisher- , HTTP- .
- . , , , . , , ( , , subscription), , , , .
- , currentIterator. , . , hasNext , ( , ), .
- , false hasNext. , isDone, , . - , hasNext , false. , hasNext , false , . , .
- , , , .
- рдЕрдЧрд▓реА рд╡рд┐рдзрд┐ рд╡рд░реНрддрдорд╛рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдЕрдЧрд▓рд╛ рддрддреНрд╡ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдХреЙрд▓ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ hasNext рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд▓реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рдЕрдЧрд▓рд╛ рддрддреНрд╡ рд╣рдореЗрд╢рд╛ рдЕрдЧрд▓рд╛ рддрддреНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдпрд╣рд╛рдВ рд╣рдо рдкреНрд░рдХрд╛рд╢рдХ рдХреЛ рдПрдХ рд╕рдВрдХреЗрдд рднреЗрдЬрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдкреНрд░рдХрд╛рд╢рдХ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХрд░рдг рдХрд░рддреЗ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рд╕рджрд╕реНрдпрддрд╛ рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдЧрд▓реЗ рд╕рдореВрд╣ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рд╕рдореВрд╣реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рдореВрд▓реНрдп рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИред рд╣рдо рдЗрд╕ рдорд╛рди рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рднреА рдмрдврд╝рд╛рддреЗ рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛, рдирд┐рд╖реНрдкрд╛рджрдХ рдкрд░ рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ, рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:рдЪрд┐рддреНрд░рд╛ 8. рд╕реНрд░реЛрдд рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреА рд╕рд╣рднрд╛рдЧрд┐рддрд╛редрдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ: рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди
рдЗрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЙрдкрд▓рдмреНрдз рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХрд╛ рдПрдХ рдорд╛рдирдХ рд╕рд╛рдзрди рд╣реИред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдореЙрдбрд▓ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИредрдПрдХ рдФрд░ рд▓рд╛рдн - рдпрд╣ рдпреЛрдЬрдирд╛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдб рдХрд┐рдП рдЧрдП рднрд╛рдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдорд╢реАрдиреЛрдВ рдХреЛ рдпрд╛ рддреЛ Hadoop рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдореЙрдбрд▓ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдирддреАрдЬрддрди, рдпрд╣ рдпреЛрдЬрдирд╛ рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рдорд╢реАрди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдПрдЪрдбреАрдПрдлрдПрд╕ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрдЧреАрдХрд░рдг рд╕реЗрд╡рд╛ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдпреЛрдЬрдирд╛ рдЯреНрдпреВрдирд┐рдВрдЧ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪреВрдБрдХрд┐ akka-http рдЕрдкрдиреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдореЗрдВ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рднреАрддрд░ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдПрдХ рд╣реА рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрд╛ рдпрджрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдХрдИ рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░ рдореЗрдВ рдореЙрдбрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ Apache Spark рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рдХреЙрд▓ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдВредрдЕрдВрдд рдореЗрдВ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рдпреЛрдЬрдирд╛ рдЖрдкрдХреЛ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рд╕реЗ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рднреЗрдЬреЗ рдЧрдП рд╕рдореВрд╣ рдХрд╛ рдЖрдХрд╛рд░, рд╡рд░реНрдЧреАрдХрд░рдг рд╕реЗрд╡рд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ http рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ, рд╕реЗрд╡рд╛ рдкрдХреНрд╖ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдкрдХреНрд╖ рдкрд░ рджреЛрдиреЛрдВ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдХрд╛ рдЕрдзрд┐рдХрддрдо рднрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИредрдЗрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди рдШрдЯрдХреЛрдВ рдХреА рдЬреБрджрд╛рдИ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХреА рд╕рд╛рдкреЗрдХреНрд╖ рдЬрдЯрд┐рд▓рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдВрдЪрд╛рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рджрдХреНрд╖рддрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░реЗрдЧрд╛ред рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЪрд╛рд░ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдирддреАрдЬрддрди, рдмрд╛рддрдЪреАрдд рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИредрдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдорд╢реАрди рдкрд░ рд╕реЗрд╡рд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ Hadoop рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдорд╢реАрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛рдлреА рдмрдбрд╝реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░ рдПрдХ рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдг рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рднрд╣реАрди рд╣реЛрдЧрд╛, рдЦрд╛рд╕рдХрд░ рдмрдбрд╝реЗ рдореЙрдбрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ Hadoop рдХреНрд▓рд╕реНрдЯрд░ рдкрд░, рдХрдИ рдХрд╛рд░реНрдп рдПрдХ рд╕рд╛рде рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрд╡рд╛ рдХреЗ рд▓реЙрдиреНрдЪ рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХрдореА рдЖрдПрдЧреАредрд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдХреНрд▓реАрд╡рд░рдбреИрдЯрд╛ рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдЙрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЯреАрдо рдПрдХ-рджреВрд╕рд░реЗ рдХреА рдкрд╕рдВрдж рдХреЛ рд╕реАрдорд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЙрдкрдпреБрдХреНрдд рд╕рд╛рдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдВрдпреБрдХреНрдд рдЪрд░реНрдЪрд╛ рдФрд░ рд╕рдордиреНрд╡рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реА рдПрдХрдорд╛рддреНрд░ рдЬрдЧрд╣ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдФрд░ рдЕрдиреНрдп рд╕рднреА рдореБрджреНрджреЛрдВ рдХреЛ рдЯреАрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рднреАрддрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЯреАрдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕реБрд▓рдЭрд╛рдиреЗ рдореЗрдВ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереАрдВред