{"id":306460,"date":"2020-07-05T21:00:30","date_gmt":"2020-07-05T21:00:30","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=306460"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=306460","title":{"rendered":"Spring Integration \u2014 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/509676\/\">\u0421\u0430\u043b\u044e\u0442 \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u2014 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Spring Integration \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0438 \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u043e\u0442\u043e\u043a\u0438 \u0432 runtime \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043b\u0435\u0436\u0438\u0442 \u0432 <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\" rel=\"nofollow\">\u0413\u0438\u0442\u0435<\/a>.<\/p>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>  Spring Integration \u2014 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (EIP), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043e\u0431\u043c\u0435\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430\u043c\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432\/\u0441\u0438\u0441\u0442\u0435\u043c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 (\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438). \u0418\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0430\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u2014 Camel, Mule, Nifi.<\/p>\n<p>  \u0418\u0437 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043a\u0435\u0439\u0441\u0430 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c REST \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043d\u0430\u0448\u0443 \u0431\u0430\u0437\u0443, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, postgres, \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430, \u0438 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e (request\/response), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0443\u0442\u044f\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<p>  \u0423\u0441\u043b\u043e\u0432\u043d\u043e \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 data flow (\u043f\u043e\u0442\u043e\u043a\u0430) \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/790\/0f7\/08b\/7900f708b19f98c6d2ce50d0cf8e714b.png\" alt=\"image\"><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u0442\u0430\u043d\u0446\u0435\u0432 \u0441 \u0431\u0443\u0431\u043d\u043e\u043c, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e IntegrationFlowContext, \u0441 REST-\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u044d\u043d\u0434\u0435\u043f\u043e\u0438\u043d\u0442\u0430\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432\/\u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u0412\u0435\u0441\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0437\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0436\u0443 \u043b\u0438\u0448\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0440\u0435\u0437\u043a\u0438. \u0427\u0442\u043e \u0436, \u043a\u0442\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d, \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<h3>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439<\/h3>\n<p>  \u041f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u0431\u043b\u043e\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u044b spring-boot \u2014 \u0434\u043b\u044f REST \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438\/\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, spring-integration \u2014 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u0435\u0439\u0441\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0438 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432.<\/p>\n<p>  \u0418 \u0441\u0440\u0430\u0437\u0443 \u0434\u0443\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0436\u0435 \u043d\u0430\u043c \u0435\u0449\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043a\u0435\u0439\u0441\u0430. \u041a\u0440\u043e\u043c\u0435 core \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u044b \u2014 integration-http, integration-jdbc, integration-groovy (\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438-\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Goovy \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432). \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c groovy \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430 \u043d\u0435\u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u0437 \u0432\u043d\u0435.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">Dependency list<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\"> &lt;!-- Spring block --&gt;         &lt;dependency&gt;             &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;             &lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;         &lt;\/dependency&gt;          &lt;dependency&gt;             &lt;groupId&gt;org.springframework.data&lt;\/groupId&gt;             &lt;artifactId&gt;spring-data-commons&lt;\/artifactId&gt;         &lt;\/dependency&gt;          &lt;dependency&gt;             &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;             &lt;artifactId&gt;spring-boot-starter-integration&lt;\/artifactId&gt;         &lt;\/dependency&gt;          &lt;dependency&gt;             &lt;groupId&gt;org.springframework.integration&lt;\/groupId&gt;             &lt;artifactId&gt;spring-integration-groovy&lt;\/artifactId&gt;         &lt;\/dependency&gt;          &lt;dependency&gt;             &lt;groupId&gt;org.springframework.integration&lt;\/groupId&gt;             &lt;artifactId&gt;spring-integration-http&lt;\/artifactId&gt;         &lt;\/dependency&gt;          &lt;dependency&gt;             &lt;groupId&gt;org.springframework.integration&lt;\/groupId&gt;             &lt;artifactId&gt;spring-integration-jdbc&lt;\/artifactId&gt;         &lt;\/dependency&gt;          &lt;!-- Db block --&gt;         &lt;dependency&gt;             &lt;groupId&gt;org.postgresql&lt;\/groupId&gt;             &lt;artifactId&gt;postgresql&lt;\/artifactId&gt;         &lt;\/dependency&gt;          &lt;dependency&gt;             &lt;groupId&gt;com.zaxxer&lt;\/groupId&gt;             &lt;artifactId&gt;HikariCP&lt;\/artifactId&gt;         &lt;\/dependency&gt;          &lt;!-- Utility block --&gt;         &lt;dependency&gt;             &lt;groupId&gt;org.apache.commons&lt;\/groupId&gt;             &lt;artifactId&gt;commons-lang3&lt;\/artifactId&gt;         &lt;\/dependency&gt;          &lt;dependency&gt;             &lt;groupId&gt;org.reflections&lt;\/groupId&gt;             &lt;artifactId&gt;reflections&lt;\/artifactId&gt;             &lt;version&gt;0.9.12&lt;\/version&gt;         &lt;\/dependency&gt;          &lt;dependency&gt;             &lt;groupId&gt;org.projectlombok&lt;\/groupId&gt;             &lt;artifactId&gt;lombok&lt;\/artifactId&gt;             &lt;version&gt;1.18.4&lt;\/version&gt;             &lt;scope&gt;provided&lt;\/scope&gt;         &lt;\/dependency&gt; <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<h3>\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043a\u0443\u0445\u043d\u044f<\/h3>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u043e\u0431\u0435\u0440\u0442\u043e\u043a\/\u043c\u043e\u0434\u0435\u043b\u0435\u0439). \u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u0438 channel, bean, httpInboundGateway, handler, jdbcOutboundGateway \u0438 result.<\/p>\n<p>   \u2014 bean \u2014 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432, \u043f\u043e\u0442\u043e\u043a\u0430<br \/>   \u2014 channel \u2014 \u043a\u0430\u043d\u0430\u043b \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432\/\u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0442\u043e\u043a\u0430<br \/>   \u2014 httpInboundGateway \u2014 http \u0442\u043e\u0447\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0434\u0430\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438<br \/>   \u2014 handler \u2014 \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 (\u0433\u0440\u0443\u0432\u0438 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u044b, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u044b, etc.)<br \/>   \u2014 jdbcOutboundGateway \u2014 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 jdbc<br \/>   \u2014 result \u2014 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0442\u0434\u0430\u0447\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b<\/p>\n<p>  \u041e\u0431\u0435\u0440\u0442\u043a\u0438 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0446\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0437\u0443 \u0434\u0435\u043b\u0430\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0434\u043e\u043f. \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u043e\u0440\u043e\u0432 JSON -&gt; Definition Model. \u041f\u0440\u044f\u043c\u043e\u0435 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e jackson \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043c\u043e\u0435\u043c \u043a\u0435\u0439\u0441\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u2014 \u0438\u043c\u0435\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434 \u043f\u043e\u0434 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043a\u0440\u0430\u0441\u0438\u0432\u043e, <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\/tree\/master\/src\/main\/java\/org\/genfork\/integration\/stream\/annotation\" rel=\"nofollow\">\u043d\u0430 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f\u0445<\/a>:<br \/>  StreamComponent \u2014 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u0447\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u0438\u043c\u0435\u0435\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u2014 \u0438\u043c\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430, \u0442\u0438\u043f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043b\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435;<br \/>  SettingClass \u2014 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0441\u0443\u043f\u0435\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u0435\u0439 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439;<br \/>  SettingValue \u2014 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u043f\u043e\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0438\u0437 \u0432\u043d\u0435, \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0432 JSON, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0442\u0438\u043f\u043e\u0432, \u0444\u043b\u0430\u0433\u043e\u043c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0438 \u0444\u043b\u0430\u0433\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438;<\/p>\n<p>  <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\/blob\/master\/src\/main\/java\/org\/genfork\/integration\/stream\/StreamComponentRegistrar.java\" rel=\"nofollow\">\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432<\/a><\/p>\n<p>  <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\/blob\/master\/src\/main\/java\/org\/genfork\/integration\/stream\/StreamComponentOptionsParser.java\" rel=\"nofollow\">\u0412\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0434\u043b\u044f REST \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432<\/a><\/p>\n<p>  <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\/blob\/master\/src\/main\/java\/org\/genfork\/integration\/model\/components\/AbstractDefinition.java\" rel=\"nofollow\">\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u2014 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439\/\u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438<\/a><\/p>\n<p>  <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\/tree\/master\/src\/main\/java\/org\/genfork\/integration\/model\/components\" rel=\"nofollow\">\u0422\u0435\u043a\u0443\u0449\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0442\u043e\u043a\u0430<\/a><\/p>\n<p>  <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\/blob\/master\/src\/main\/java\/org\/genfork\/integration\/utils\/TypeUtils.java\" rel=\"nofollow\">\u041c\u0430\u043f\u043f\u0435\u0440 JSON -&gt; Definition Model<\/a><\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u043e\u0447\u0432\u0443 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b, \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u0441\u0440\u0430\u0437\u0443 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0438\u0434\u0435\u044e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e 1 \u043f\u043e\u0442\u043e\u043a \u0441 \u0442\u0435\u043c \u0436\u0435 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0441\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432, \u0442.\u0435. \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b (\u0433\u0443\u0438\u0434\u044b) \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0442\u043e\u043a\u0430 \u0438\u043d\u0430\u0447\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 singleton \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 (\u0431\u0438\u043d\u0430\u043c\u0438, \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438 \u0438 \u043f\u0440.). \u041d\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043c\u0430\u043f\u043f\u0435\u0440\u044b \u0434\u0432\u0443\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u2014 \u044d\u0442\u043e http \u0438 jdbc, \u0442.\u0435. \u043f\u0440\u0438\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u0435\u0435 \u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 (HttpRequestHandlerEndpointSpec \u0438 JdbcOutboundGateway).<\/p>\n<p>  <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\/blob\/master\/src\/main\/java\/org\/genfork\/integration\/stream\/registry\/HttpRegistry.java\" rel=\"nofollow\">HttpRegistry<\/a><\/p>\n<p>  <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\/blob\/master\/src\/main\/java\/org\/genfork\/integration\/stream\/registry\/JdbcRegistry.java\" rel=\"nofollow\">JdbcRegistry<\/a><\/p>\n<p>  \u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 (<a href=\"https:\/\/github.com\/GenCloud\/sample-integration\/blob\/master\/src\/main\/java\/org\/genfork\/integration\/service\/StreamDeployingService.java\" rel=\"nofollow\">StreamDeployingService<\/a>) \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u0445\/\u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u043e\u0432\u044b\u0435, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442, \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u043e\u0442\u043e\u043a\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412\u0430\u0436\u043d\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 IntegrationFlowBuilderRegistry, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u044d\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 xml \u0444\u0430\u0439\u043b\u044b \u0438\u043b\u0438 DSL \u043a\u043b\u0430\u0441\u0441\u044b \u043d\u0430 \u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440\u044b). \u041f\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u0430 \u2014 \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 inbound \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u043a\u0430\u043d\u0430\u043b\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u044d\u0442\u043e \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 registerStreamContext.<\/p>\n<p>  \u0418 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 (<a href=\"https:\/\/github.com\/GenCloud\/sample-integration\/blob\/master\/src\/main\/java\/org\/genfork\/integration\/service\/IntegrationFlowBuilderRegistry.java\" rel=\"nofollow\">IntegrationFlowBuilderRegistry<\/a>), \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a\u0430\u043a \u043c\u0430\u043f\u043f\u0435\u0440\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u043e\u0442\u043e\u043a\u0430, \u0442\u0430\u043a \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 IntegrationFlowBuilder. \u0422\u0430\u043a \u0436\u0435 \u044f \u0432\u043d\u0435\u0434\u0440\u0438\u043b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043b\u043e\u0433\u043e\u0432 \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u043f\u043e\u0442\u043e\u043a\u0430, \u0441\u0435\u0440\u0432\u0438\u0441 \u0441\u0431\u043e\u0440\u0430 \u043c\u0435\u0442\u0440\u0438\u043a \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043f\u043e\u0442\u043e\u043a\u0430 (\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0430\u044f \u043e\u043f\u0446\u0438\u044f) \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043f\u043e\u0442\u043e\u043a\u0430, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 Groovy \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (\u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0434\u0430, \u0442\u043e \u043f\u0440\u0435\u0434\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e groovy \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u0430, \u0438\u0431\u043e \u0443\u043f\u0440\u0435\u0442\u0435\u0441\u044c \u043d\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u0430\u0445 \u0432 \u041e\u0417\u0423 \u0438 \u0431\u0435\u0437 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443 \u0412\u0430\u0441 \u044f\u0434\u0435\u0440 \u0438 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438). \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 log-stages \u0438 log-level, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u0435\u043d \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443. \u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0432 application.yml:  <\/p>\n<pre><code class=\"plaintext\">monitoring:   injectction:     default: true <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0441\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0430 \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043c\u0430\u043f\u043f\u0435\u0440\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0438 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432 \u0442\u0438\u043f\u0430 RabbitMQ, Kafka, Tcp, Ftp, etc. \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0440\u0443\u0447\u043d\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0430\u043c\u043e\u043c\u0443 (\u043a\u0440\u043e\u043c\u0435, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432) \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0443\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 <a href=\"https:\/\/mvnrepository.com\/search?q=spring-integration\" rel=\"nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>.<\/p>\n<p>  \u0417\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a.<\/p>\n<p>  <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\/blob\/master\/src\/main\/java\/org\/genfork\/integration\/controller\/ComponentsController.java\" rel=\"nofollow\">ComponentsController <\/a> \u2014 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0430\u0447\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043a\u0430\u043a \u043e \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445 \u0432 \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u0442\u0430\u043a \u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0438 \u0442\u0438\u043f\u0443.<\/p>\n<p>  <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\/blob\/master\/src\/main\/java\/org\/genfork\/integration\/controller\/StreamController.java\" rel=\"nofollow\">StreamController <\/a> \u2014 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u043e\u0432\u044b\u0445 \u043f\u043e JSON \u043c\u043e\u0434\u0435\u043b\u0438, \u0437\u0430\u043f\u0443\u0441\u043a, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0434\u0430\u0447\u0443 \u043c\u0435\u0442\u0440\u0438\u043a \u043f\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0443.<\/p>\n<h3>\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442<\/h3>\n<p>  \u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u0435\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u0435\u0439\u0441 \u0432 JSON \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">Sample Data Stream<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u0421\u043a\u0440\u0438\u043f\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445:  <\/p>\n<pre><code class=\"sql\">CREATE TABLE IF NOT EXISTS account_data (     id          INT                      NOT NULL,     accountname VARCHAR(45)              NOT NULL,     password    VARCHAR(128),     email       VARCHAR(255),     last_ip     VARCHAR(15) DEFAULT NULL NOT NULL );  CREATE UNIQUE INDEX account_data_username_uindex     ON account_data (accountname);  ALTER TABLE account_data     ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (         SEQUENCE NAME account_data_id_seq             START WITH 1             INCREMENT BY 1             NO MINVALUE             NO MAXVALUE             CACHE 1         );  ALTER TABLE account_data     ADD CONSTRAINT account_data_pk         PRIMARY KEY (id);  CREATE TABLE IF NOT EXISTS account_info (     id             INT NOT NULL,     banned         BOOLEAN  DEFAULT FALSE,     premium_points INT      DEFAULT 0,     premium_type   SMALLINT DEFAULT -1 );  ALTER TABLE account_info     ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (         SEQUENCE NAME account_info_id_seq             START WITH 1             INCREMENT BY 1             NO MINVALUE             NO MAXVALUE             CACHE 1         );  ALTER TABLE account_info     ADD CONSTRAINT account_info_account_data_id_fk FOREIGN KEY (id) REFERENCES account_data (id)         ON UPDATE CASCADE ON DELETE CASCADE;  ALTER TABLE account_info     ADD CONSTRAINT account_info_pk         PRIMARY KEY (id);    INSERT INTO account_data (accountname, password, email, last_ip) VALUES ('test', 'test', 'test@test', '127.0.0.1'); INSERT INTO account_info (banned, premium_points, premium_type) VALUES (false, 1000, 1); <\/code><\/pre>\n<p>  \u0412\u0430\u0436\u043d\u043e: \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 order \u2014 \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u043e\u0442\u043e\u043a\u0430, \u0442.\u0435. \u043a\u0430\u043a \u0432\u044b\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443, \u0442\u0430\u043a \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. (\u043a\u0430\u043d\u0430\u043b\u044b \u0438 \u0431\u0438\u043d\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435). \u0410 \u043f\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443 \u2014 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0433\u0440\u0430\u0444\u0430 \u0438 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 \u043e\u0442\u043f\u0430\u0434\u0435\u0442 \u0441\u0430\u043c \u0441\u043e\u0431\u043e\u0439.   <\/p>\n<pre><code class=\"json\">{   &quot;flowName&quot;: &quot;Rest Postgres stream&quot;,   &quot;components&quot;: [     {       &quot;componentName&quot;: &quot;bean&quot;,       &quot;componentType&quot;: &quot;other&quot;,       &quot;componentParameters&quot;: {         &quot;id&quot;: &quot;pgDataSource&quot;,         &quot;bean-type&quot;: &quot;com.zaxxer.hikari.HikariDataSource&quot;,         &quot;property-args&quot;: [           {             &quot;property-name&quot;: &quot;username&quot;,             &quot;property-value&quot;: &quot;postgres&quot;           },           {             &quot;property-name&quot;: &quot;password&quot;,             &quot;property-value&quot;: &quot;postgres&quot;           },           {             &quot;property-name&quot;: &quot;jdbcUrl&quot;,             &quot;property-value&quot;: &quot;jdbc:postgresql:\/\/localhost:5432\/test&quot;           },           {             &quot;property-name&quot;: &quot;driverClassName&quot;,             &quot;property-value&quot;: &quot;org.postgresql.Driver&quot;           }         ]       }     },     {       &quot;componentName&quot;: &quot;message-channel&quot;,       &quot;componentType&quot;: &quot;source&quot;,       &quot;componentParameters&quot;: {         &quot;id&quot;: &quot;jdbcReqChannel&quot;,         &quot;order&quot;: 1,         &quot;channel-type&quot;: &quot;direct&quot;,         &quot;max-subscribers&quot;: 1000       }     },     {       &quot;componentName&quot;: &quot;message-channel&quot;,       &quot;componentType&quot;: &quot;source&quot;,       &quot;componentParameters&quot;: {         &quot;id&quot;: &quot;jdbcRepChannel&quot;,         &quot;order&quot;: 1,         &quot;channel-type&quot;: &quot;direct&quot;       }     },     {       &quot;componentName&quot;: &quot;http-inbound-gateway&quot;,       &quot;componentType&quot;: &quot;source&quot;,       &quot;componentParameters&quot;: {         &quot;order&quot;: 2,         &quot;http-inbound-supported-methods&quot;: [           &quot;POST&quot;         ],         &quot;payload-type&quot;: &quot;org.genfork.integration.model.request.http.SimpleJdbcPayload&quot;,         &quot;log-stages&quot;: true,         &quot;log-level&quot;: &quot;INFO&quot;,         &quot;request-channel&quot;: &quot;jdbcReqChannel&quot;,         &quot;reply-channel&quot;: &quot;jdbcRepChannel&quot;       }     },     {       &quot;componentName&quot;: &quot;handler&quot;,       &quot;componentType&quot;: &quot;processor&quot;,       &quot;componentParameters&quot;: {         &quot;order&quot;: 3,         &quot;handler-definition&quot;: {           &quot;componentName&quot;: &quot;jdbc-outbound-adapter&quot;,           &quot;componentType&quot;: &quot;app&quot;,           &quot;componentParameters&quot;: {             &quot;data-source&quot;: &quot;pgDataSource&quot;,             &quot;query&quot;: &quot;SELECT accountname, password, email, last_ip, banned, premium_points, premium_type FROM account_data d INNER JOIN account_info i ON d.id = i.id WHERE d.id = :payload.accountId&quot;,             &quot;update-query&quot;: &quot;UPDATE account_info SET banned = true WHERE id = :payload.accountId&quot;,             &quot;jdbc-reply-channel&quot;: &quot;jdbcRepChannel&quot;,             &quot;log-stages&quot;: true,             &quot;log-level&quot;: &quot;INFO&quot;           }         }       }     },     {       &quot;componentName&quot;: &quot;result&quot;,       &quot;componentType&quot;: &quot;app&quot;,       &quot;componentParameters&quot;: {         &quot;order&quot;: 4,         &quot;cancel&quot;: false,         &quot;result-channel&quot;: &quot;jdbcRepChannel&quot;       }     }   ] }  <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c:<br \/>  1) \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u043c:<br \/>  POST \/stream\/deploy, \u0433\u0434\u0435 \u0432 \u0442\u0435\u043b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0448 JSON.<\/p>\n<p>  \u0412 \u043e\u0442\u0432\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0441\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435:  <\/p>\n<pre><code class=\"json\">{     &quot;status&quot;: &quot;SUCCESS&quot;, - \u0441\u0442\u0430\u0442\u0443\u0441 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438     &quot;streamId&quot;: &quot;2bf65d9d-97c6-4199-86aa-0c808c25071b&quot; - \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u043e\u0442\u043e\u043a\u0430 } <\/code><\/pre>\n<p>  2) \u0418\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u043c:<br \/>  GET \/stream\/2bf65d9d-97c6-4199-86aa-0c808c25071b\/start, \u0433\u0434\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0440\u0430\u043d\u0435\u0435.<\/p>\n<p>  \u0412 \u043e\u0442\u0432\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0441\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435:  <\/p>\n<pre><code class=\"json\">{     &quot;status&quot;: &quot;SUCCESS&quot;, - \u0441\u0442\u0430\u0442\u0443\u0441 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 } <\/code><\/pre>\n<p>  3) \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0442\u043e\u043a \u043f\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0443 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435? \u041a\u0430\u043a, \u0447\u0442\u043e \u0438 \u0433\u0434\u0435 \u2014 \u0432 \u043c\u0430\u043f\u043f\u0435\u0440\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 HttpRegistry \u044f \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043b \u0443\u0441\u043b\u043e\u0432\u0438\u0435  <\/p>\n<pre><code class=\"java\">Http.inboundGateway(localPath != null ? localPath : String.format(&quot;\/stream\/%s\/call&quot;, uuid)) <\/code><\/pre>\n<p>  \u0433\u0434\u0435, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 http-inbound-path, \u0438, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u044f\u0432\u043d\u043e \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430, \u0442\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0432\u044b\u0437\u043e\u0432\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0438 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442:<\/p>\n<p>  POST \/stream\/ece4d4ac-3b46-4952-b0a6-8cf334074b99\/call \u2014 \u0433\u0434\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u043e\u0442\u043e\u043a\u0430, c \u0442\u0435\u043b\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0430:  <\/p>\n<pre><code class=\"json\">{     &quot;accountId&quot;: 1 } <\/code><\/pre>\n<p>  \u0412 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u043c, \u0435\u0441\u043b\u0438 \u044d\u0442\u0430\u043f\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043f\u043b\u043e\u0441\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446 account_data \u0438 account_info.<\/p>\n<pre><code class=\"json\">{     &quot;accountname&quot;: &quot;test&quot;,     &quot;password&quot;: &quot;test&quot;,     &quot;email&quot;: &quot;test@test&quot;,     &quot;last_ip&quot;: &quot;127.0.0.1&quot;,     &quot;banned&quot;: true,     &quot;premium_points&quot;: 1000,     &quot;premium_type&quot;: 1 } <\/code><\/pre>\n<p>  \u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 JdbcOutboundGateway \u0442\u0430\u043a\u0430\u044f, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 update-query, \u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 query.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043f\u0443\u0442\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441 HttpInboundGateway \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043a\u0430\u043a \u0442\u043e\u0447\u043a\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u043e\u0442\u043e\u043a\u0443 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u0440\u0430\u0437\u0434\u043d\u0435\u043d\u0430 \u0438\u0431\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u0434\u0430\u0441\u0442 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043f\u0443\u0442\u044c.<\/p>\n<p>  4) \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c GET \/stream\/2bf65d9d-97c6-4199-86aa-0c808c25071b\/metrics  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0442\u0432\u0435\u0442\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u041f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0432 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0442\u043e\u043a\u0430, \u0440\u0435\u0439\u0442\u0435 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0445\/\u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u0441\u0440\u0435\u0434\u043d\u0435\u0435\/\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043a\u0430\u043d\u0430\u043b\u0435\/\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 \u043f\u043e\u0442\u043e\u043a\u0430:  <\/p>\n<pre><code class=\"json\">[     {         &quot;streamId&quot;: &quot;2bf65d9d-97c6-4199-86aa-0c808c25071b&quot;,         &quot;channelName&quot;: &quot;application.Rest Postgres stream_2bf65d9d-97c6-4199-86aa-0c808c25071b_jdbcReqChannel&quot;,         &quot;sendDuration&quot;: {             &quot;count&quot;: 1,             &quot;min&quot;: 153.414,             &quot;max&quot;: 153.414,             &quot;mean&quot;: 153.414,             &quot;standardDeviation&quot;: 0.0,             &quot;countLong&quot;: 1         },         &quot;maxSendDuration&quot;: 153.414,         &quot;minSendDuration&quot;: 153.414,         &quot;meanSendDuration&quot;: 153.414,         &quot;meanSendRate&quot;: 0.001195117818082359,         &quot;sendCount&quot;: 1,         &quot;sendErrorCount&quot;: 0,         &quot;errorRate&quot;: {             &quot;count&quot;: 0,             &quot;min&quot;: 0.0,             &quot;max&quot;: 0.0,             &quot;mean&quot;: 0.0,             &quot;standardDeviation&quot;: 0.0,             &quot;countLong&quot;: 0         },         &quot;meanErrorRate&quot;: 0.0,         &quot;meanErrorRatio&quot;: 1.1102230246251565E-16     },     {         &quot;streamId&quot;: &quot;2bf65d9d-97c6-4199-86aa-0c808c25071b&quot;,         &quot;channelName&quot;: &quot;application.2bf65d9d-97c6-4199-86aa-0c808c25071b.channel#2&quot;,         &quot;sendDuration&quot;: {             &quot;count&quot;: 1,             &quot;min&quot;: 0.1431,             &quot;max&quot;: 0.1431,             &quot;mean&quot;: 0.1431,             &quot;standardDeviation&quot;: 0.0,             &quot;countLong&quot;: 1         },         &quot;maxSendDuration&quot;: 0.1431,         &quot;minSendDuration&quot;: 0.1431,         &quot;meanSendDuration&quot;: 0.1431,         &quot;meanSendRate&quot;: 0.005382436008121413,         &quot;sendCount&quot;: 1,         &quot;sendErrorCount&quot;: 0,         &quot;errorRate&quot;: {             &quot;count&quot;: 0,             &quot;min&quot;: 0.0,             &quot;max&quot;: 0.0,             &quot;mean&quot;: 0.0,             &quot;standardDeviation&quot;: 0.0,             &quot;countLong&quot;: 0         },         &quot;meanErrorRate&quot;: 0.0,         &quot;meanErrorRatio&quot;: 0.0     },     {         &quot;streamId&quot;: &quot;2bf65d9d-97c6-4199-86aa-0c808c25071b&quot;,         &quot;channelName&quot;: &quot;application.Rest Postgres stream_2bf65d9d-97c6-4199-86aa-0c808c25071b_jdbcRepChannel&quot;,         &quot;sendDuration&quot;: {             &quot;count&quot;: 1,             &quot;min&quot;: 0.0668,             &quot;max&quot;: 0.0668,             &quot;mean&quot;: 0.0668,             &quot;standardDeviation&quot;: 0.0,             &quot;countLong&quot;: 1         },         &quot;maxSendDuration&quot;: 0.0668,         &quot;minSendDuration&quot;: 0.0668,         &quot;meanSendDuration&quot;: 0.0668,         &quot;meanSendRate&quot;: 0.001195118373693797,         &quot;sendCount&quot;: 1,         &quot;sendErrorCount&quot;: 0,         &quot;errorRate&quot;: {             &quot;count&quot;: 0,             &quot;min&quot;: 0.0,             &quot;max&quot;: 0.0,             &quot;mean&quot;: 0.0,             &quot;standardDeviation&quot;: 0.0,             &quot;countLong&quot;: 0         },         &quot;meanErrorRate&quot;: 0.0,         &quot;meanErrorRatio&quot;: 1.1102230246251565E-16     } ] <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0431\u044b\u043b\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0441\u0438\u043b, \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438, \u0447\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0432 \u0441\u0432\u043e\u0435\u043c \u0436\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0443\u0447\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 (\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b) \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u043f\u043e 200-500 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430.<br \/>  \u0412 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0438\u0437\u0431\u0435\u0433\u0430\u044f \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0439 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u043e\u0442\u043e\u043a\u0430 (\u0431\u0438\u043d\u0430\u043c\u0438, \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438, etc.)<br \/>  \u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442:<br \/>   \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 \u0431\u0434;<br \/>   \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0432\u0441\u0435\u0445 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e spring \u0438 spring-integration;<br \/>   \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043e\u0440\u043a\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438;<br \/>   \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 UI \u043f\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0439 \u00ab\u043c\u044b\u0448\u043a\u043e\u0439 \u0438 \u043a\u0443\u0431\u0438\u043a\u0430\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432\u00bb (\u043a\u0441\u0442\u0430\u0442\u0438, \u043f\u0440\u0438\u043c\u0435\u0440 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0437\u0430\u0442\u0430\u0447\u0438\u0432\u0430\u043b\u0441\u044f \u043f\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/spring-cloud\/spring-cloud-dataflow-ui\" rel=\"nofollow\">github.com\/spring-cloud\/spring-cloud-dataflow-ui<\/a>);<\/p>\n<p>  \u0418 \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\" rel=\"nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/a>.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/509676\/\"> https:\/\/habr.com\/ru\/post\/509676\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/509676\/\">\u0421\u0430\u043b\u044e\u0442 \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u2014 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Spring Integration \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0438 \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u043e\u0442\u043e\u043a\u0438 \u0432 runtime \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043b\u0435\u0436\u0438\u0442 \u0432 <a href=\"https:\/\/github.com\/GenCloud\/sample-integration\" rel=\"nofollow\">\u0413\u0438\u0442\u0435<\/a>.<\/p>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>  Spring Integration \u2014 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (EIP), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u043e\u0431\u043c\u0435\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430\u043c\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432\/\u0441\u0438\u0441\u0442\u0435\u043c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 (\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438). \u0418\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0430\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u2014 Camel, Mule, Nifi.<\/p>\n<p>  \u0418\u0437 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043a\u0435\u0439\u0441\u0430 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c REST \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043d\u0430\u0448\u0443 \u0431\u0430\u0437\u0443, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, postgres, \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430, \u0438 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e (request\/response), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0443\u0442\u044f\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<p>  \u0423\u0441\u043b\u043e\u0432\u043d\u043e \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 data flow (\u043f\u043e\u0442\u043e\u043a\u0430) \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/790\/0f7\/08b\/7900f708b19f98c6d2ce50d0cf8e714b.png\" alt=\"image\"><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u0442\u0430\u043d\u0446\u0435\u0432 \u0441 \u0431\u0443\u0431\u043d\u043e\u043c, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e IntegrationFlowContext, \u0441 REST-\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u044d\u043d\u0434\u0435\u043f\u043e\u0438\u043d\u0442\u0430\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432\/\u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u0412\u0435\u0441\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0437\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0436\u0443 \u043b\u0438\u0448\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0440\u0435\u0437\u043a\u0438. \u0427\u0442\u043e \u0436, \u043a\u0442\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d, \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-306460","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/306460","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=306460"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/306460\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=306460"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=306460"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=306460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}