{"id":503115,"date":"2026-11-13T16:25:17","date_gmt":"2026-11-13T13:25:17","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=503115"},"modified":"2026-11-13T16:25:17","modified_gmt":"2026-11-13T13:25:17","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=503115","title":{"rendered":"\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f @Scheduled \u0437\u0430\u0434\u0430\u0447 \u0432 Axelix"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0438\u0445\u0430\u0438\u043b \u041f\u043e\u043b\u0438\u0432\u0430\u0445\u0430, \u044f \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043b\u0438\u0434\u0435\u0440\u043e\u043c Open Source <a href=\"https:\/\/github.com\/axelixlabs\/axelix\">\u043f\u0440\u043e\u0435\u043a\u0442\u0430 Axelix<\/a>.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u0423 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c Spring Boot \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0445\u043e\u0434\u0438\u0442 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0441 <code>@Scheduled<\/code>, \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0433\u043e. \u0418 \u0432\u043e\u0442 \u043a \u0412\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043b\u043b\u0435\u0433\u0430 \u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442:<\/p>\n<blockquote>\n<p><em>\u0427\u0442\u043e-\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c. \u0423 \u043d\u0430\u0441 \u0442\u043e\u0447\u043d\u043e \u0441\u0438\u043d\u043a \u043f\u0440\u043e\u0448\u0451\u043b?<\/em><\/p>\n<\/blockquote>\n<p>\u0412\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0435 \u043b\u043e\u0433\u0438. \u041f\u043e\u0442\u043e\u043c \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432\u043e\u043e\u0431\u0449\u0435-\u0442\u043e \u0442\u0440\u0438. \u041f\u043e\u0442\u043e\u043c \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0430\u0434\u0430\u0435\u0442, \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0434\u043e\u043b\u044c\u0448\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e. \u0418 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0438 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u044f \u0431\u044b \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0438\u0441\u0430\u043b\u0438 \u043a\u043e\u0434 \u0432 Enterprise, \u0442\u043e \u044f \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u044d\u0442\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f. \u0418 \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0447\u0430\u0441\u0442\u043e \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0441\u0430\u043c\u044b\u0445 Scheduled \u0442\u0430\u0441\u043e\u043a \u043d\u0430 \u043f\u0440\u043e\u0434\u0435 \u0438\u043b\u0438 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u043f\u043e\u043a\u0440\u044b\u0442\u043e \u0442\u0443\u043c\u0430\u043d\u043e\u043c \u0432\u043e\u0439\u043d\u044b, \u0442\u0430\u043c \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442.<\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b \u0441\u0440\u0435\u043b\u0438\u0437\u0438\u043b\u0438 Axelix 1.3 \u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0444\u0438\u0447, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438, \u044d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f scheduled tasks:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/57\/54\/07\/575407e06ba7d07d75a9dad0dc290ff1.png\" alt=\"\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f scheduled tasks \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 Axelix 1.3\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/57\/54\/07\/575407e06ba7d07d75a9dad0dc290ff1.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/57\/54\/07\/575407e06ba7d07d75a9dad0dc290ff1.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f scheduled tasks \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 Axelix 1.3<\/figcaption><\/div>\n<\/figure>\n<details class=\"spoiler\">\n<summary>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0430\u043a\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p> \u041e\u043a\u043e\u043b\u043e 10 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0435\u0440\u043e\u0432 \u043f\u0440\u0438\u043d\u044f\u043b\u043e \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u0440\u0435\u043b\u0438\u0437\u0435. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0432\u0430\u043c \u0432\u0441\u0435\u043c! \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0438\u0442\u044c \u0432 Open Source &#8212; welcome! \u041c\u044b \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e [\u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0443\u0442](https:\/\/github.com\/axelixlabs\/axelix?tab=contributing-ov-file#how-to-contribute). <\/p>\n<\/div>\n<\/details>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0434\u0432\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0430\u043a\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438: \u043a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 scheduled task, \u0438 \u043a\u0430\u043a \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043e\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0441\u0442\u0430\u0440\u043e\u0433\u043e. \u041f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043c\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0438 \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u044b \u0437\u0430 \u043d\u0438\u043c\u0438 \u0441\u0442\u043e\u044f\u0442.<\/p>\n<p>\u041d\u0443 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043f\u0435\u0440\u0444\u043e\u0440\u043c\u0430\u043d\u0441\u0435 \u0432\u0441\u0435\u0439 \u044d\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u0430\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a \u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440, \u0442\u043e \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u0430\u043c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f &#8212; \u0442\u0443\u0442 \u043c\u043d\u043e\u0433\u043e \u0442\u0440\u0435\u0439\u0434 \u043e\u0444\u0444\u043e\u0432 \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043f\u043e\u0440\u0438\u0442\u044c. \u041d\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0443\u0441\u043b\u044b\u0448\u0430\u0442\u044c \u0432\u0430\u0448\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u0438 \u0441\u043e\u0432\u0435\u0442\u044b \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0438\u043c \u0431\u044b \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0444\u0438\u0447\u0438. <em>\u041c\u044b \u043f\u0440\u0430\u0432\u0434\u0430 \u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e<\/em>.<\/p>\n<h3>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e \u0441\u0430\u043c\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443<\/h3>\n<p>\u0412\u043e\u0437\u044c\u043c\u0451\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"java\">@Componentpublic class CatalogSync {    private final CatalogClient client;    public CatalogSync(CatalogClient client) {        this.client = client;    }    @Scheduled(fixedDelayString = \"${catalog.sync.delay:60000}\")    public void sync() {        client.synchronize();    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0434\u0435\u043b\u0430\u0442\u044c. \u0418\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u0441 \u043a\u0430\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0441 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442, \u043f\u043e\u0447\u0435\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0441\u044f, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0435\u0449\u0438:<\/p>\n<ul>\n<li>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0430\u0441\u044c?<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430\u0441\u044c \u043b\u0438 \u043e\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0438 \u0435\u0441\u043b\u0438 \u0443\u043f\u0430\u043b\u0430 \u0441 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c, \u0442\u043e \u0441 \u043a\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u043d\u043e?<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e?<\/p>\n<\/li>\n<li>\n<p>\u042d\u0442\u043e \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043d\u0430\u0436\u0430\u043b \u043a\u043d\u043e\u043f\u043a\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e? (\u0412 Axelix \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e)<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u0432\u043e\u0442 \u0442\u0443\u0442 \u0432\u0430\u0436\u043d\u043e: <strong>\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441, \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439<\/strong>.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u0433\u0438. \u041c\u043e\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0433\u0434\u0435-\u043b\u0438\u0431\u043e. \u041d\u043e \u044d\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0430\u044f\u0441\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041d\u0430\u043c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f Axelix \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0441\u0430\u043c\u0430. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u043e\u0439 \u043f\u0443\u0442\u044c \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0434\u043e \u043e\u0431\u0449\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.<\/p>\n<h3>\u041a\u0430\u043a \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440<\/h3>\n<p>\u0412\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0438\u043c \u0442\u0440\u0451\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u043c. \u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u043e\u043d\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e. \u0427\u0430\u0441\u0442\u043e \u043b\u044e\u0434\u0438 \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a-\u0442\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 ShedLock \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u0411\u0414, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>SELECT ... FOR UPDATE SKIP LOCKED<\/code> \u0438 \u0442.\u043f. \u0432\u0435\u0449\u0438.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u043e \u0432\u0441\u0435\u0445 \u0440\u0435\u043f\u043b\u0438\u043a \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>\u0412 Axelix \u044d\u0442\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c \u0441\u043b\u0443\u0436\u0438\u0442 <strong>Master<\/strong>, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 UI \u0438 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e Spring Boot \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0430\u0440\u0442\u0435\u0440\u0430. \u041e\u043d\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0438\u0445 \u043c\u0430\u0441\u0442\u0435\u0440\u0443: \u043b\u0438\u0431\u043e \u0441\u0430\u043c\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 heartbeat-\u0430\u0445, \u043b\u0438\u0431\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0445 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u043f\u0440\u043e\u0441 \u043c\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>\u0412 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0437\u0430\u0434\u0430\u0447 Spring \u043c\u044b \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0438 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e, \u0438 \u0434\u043b\u044f \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043e\u043a\u0440\u0443\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438, \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c observations Spring Framework 6.1+, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u0414\u0435\u0442\u0430\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/axelixlabs\/axelix\/blob\/5b5a7b83bb863ac82fba97b0d4c867aed2e409ff\/sbs\/starter-domain\/src\/main\/java\/com\/axelixlabs\/axelix\/sbs\/spring\/core\/scheduled\/ScheduledTaskExecutionHistory.java\">\u043a\u043e\u0434\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438<\/a> \u0438 <a href=\"https:\/\/github.com\/axelixlabs\/axelix\/blob\/5b5a7b83bb863ac82fba97b0d4c867aed2e409ff\/sbs\/axelix-spring-boot-3-starter\/src\/main\/java\/com\/axelixlabs\/axelix\/sbs\/spring\/core\/scheduled\/ScheduledTaskExecutionObservationHandler.java\">\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 observations<\/a>. \u0417\u0434\u0435\u0441\u044c \u0440\u0435\u0447\u044c \u043f\u0440\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0435 <code>@Scheduled<\/code> \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 <code>cron<\/code>, <code>fixedDelay<\/code> \u0438 <code>fixedRate<\/code>.<\/p>\n<p>\u0412 \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0442\u0438\u043f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0431\u044b\u043b\u0430. \u0423\u0441\u043f\u0435\u0445 \u0437\u0434\u0435\u0441\u044c \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0432\u0438\u0434\u0438\u043c\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a\u0443: \u0435\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0430\u043c\u0430 \u043f\u043e\u0439\u043c\u0430\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0443 \u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0430\u0441\u044c, \u043f\u0440\u043e \u0431\u0438\u0437\u043d\u0435\u0441-\u0441\u0431\u043e\u0439 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043c\u044b \u043d\u0435 \u0443\u0437\u043d\u0430\u0435\u043c.<\/p>\n<p><strong>\u0421\u0442\u0430\u0440\u0442\u0435\u0440 \u0445\u0440\u0430\u043d\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 10 \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u044b\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438.<\/strong> \u042d\u0442\u043e \u0440\u043e\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439\u0441\u044f \u0431\u0443\u0444\u0435\u0440 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430: \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0430\u043c\u0430\u044f \u0441\u0442\u0430\u0440\u0430\u044f \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u0435\u0442\u0441\u044f. \u0420\u0430\u0437 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u0430\u0441\u0442\u0435\u0440\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 heartbeat \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 15 \u0441\u0435\u043a\u0443\u043d\u0434. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435\u0442.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/16\/07\/88\/160788d05e86c9007c631f392d661aef.png\" alt=\"\u0414\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0438\u0437 \u0441\u0442\u0430\u0440\u0442\u0435\u0440\u0430 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/16\/07\/88\/160788d05e86c9007c631f392d661aef.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/16\/07\/88\/160788d05e86c9007c631f392d661aef.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0414\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0438\u0437 \u0441\u0442\u0430\u0440\u0442\u0435\u0440\u0430 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440<\/figcaption><\/div>\n<\/figure>\n<p><strong>\u041c\u0430\u0441\u0442\u0435\u0440 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0441\u0432\u043e\u0435\u0439 \u0411\u0414.<\/strong> \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0435\u0451 \u0438\u0437 \u043e\u0431\u0449\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u0435\u0441\u043b\u0438 \u043c\u0430\u0441\u0442\u0435\u0440 \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u043b \u0435\u0451 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c. \u0414\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430; \u0441\u0440\u043e\u043a \u0435\u0451 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0430\u044f, \u0430 \u043d\u0435 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u0430\u044f. \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u0430 \u0432 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0434\u043e \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043c\u0430\u0441\u0442\u0435\u0440 \u0435\u0451 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442. \u041a \u044d\u0442\u043e\u043c\u0443 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044e \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0430\u043c \u0431\u0443\u0444\u0435\u0440.<\/p>\n<h4>\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e<\/h4>\n<p>\u041f\u0440\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043e\u0431\u043c\u0435\u043d\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c <strong>\u0432\u0441\u0451 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043e\u043a\u043d\u043e<\/strong>, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0430\u0441\u0442\u0435\u0440 \u0443\u0436\u0435 \u043c\u043e\u0433 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c. \u041f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u043a\u043d\u043e \u043d\u0435 \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f, \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432.<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043e\u0434\u0438\u043d heartbeat \u043d\u0435 \u0434\u043e\u0448\u0451\u043b. \u041f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043e\u0431\u043c\u0435\u043d\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u043f\u0430\u043a\u0435\u0442, \u0435\u0441\u043b\u0438 \u0435\u0449\u0451 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043e\u043a\u043d\u0435. \u0410 \u0435\u0441\u043b\u0438 \u043c\u0430\u0441\u0442\u0435\u0440 \u0443\u0441\u043f\u0435\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442, \u043d\u043e \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0441\u044f, \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/48\/6d\/39\/486d391fe6f3a71d5cb91e2f86afcbd4.png\" alt=\"\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043e\u043a\u043e\u043d \u0438 \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/48\/6d\/39\/486d391fe6f3a71d5cb91e2f86afcbd4.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/48\/6d\/39\/486d391fe6f3a71d5cb91e2f86afcbd4.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043e\u043a\u043e\u043d \u0438 \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u043c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u043f\u043b\u0438\u043a, \u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044b. \u0418 \u0442\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0434\u0432\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u0430:<\/p>\n<ol>\n<li>\n<p>\u041a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0430,<\/p>\n<\/li>\n<li>\n<p>\u0418 \u043a\u0430\u043a \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u0435\u0451 \u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043e\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0441\u0442\u0430\u0440\u043e\u0433\u043e?<\/p>\n<\/li>\n<\/ol>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.<\/p>\n<h3>\u0420\u0430\u0437\u0434\u0435\u043b\u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u0442 \u0435\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0423 \u043d\u0430\u0448\u0435\u0433\u043e <code>CatalogSync.sync()<\/code> \u0435\u0441\u0442\u044c \u043e\u0431\u0449\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u043e \u0442\u0440\u0451\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b \u0440\u0430\u0437 \u043c\u044b \u043d\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0434\u0432\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 identity:<\/p>\n<ul>\n<li>\n<p><strong>Identity \u0437\u0430\u0434\u0430\u0447\u0438<\/strong>: \u043a\u0430\u043a\u0430\u044f \u0438\u043c\u0435\u043d\u043d\u043e scheduled task \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f. \u041e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>Identity \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/strong>: \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u044b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c. \u0423 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 ID, \u0430 \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0435\u0433\u043e ID \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0438\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043c\u0435\u0448\u0430\u0442\u044c \u044d\u0442\u0438 \u0434\u0432\u0435 \u0432\u0435\u0449\u0438, \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u0442\u0441\u044f. \u041f\u0440\u0438\u0432\u044f\u0436\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 JVM, \u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0411\u0443\u0434\u0435\u043c \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u043d\u043e\u0432\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 UUID \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438, \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0443\u0441\u043a.<\/p>\n<p>\u042d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432 \u043b\u044e\u0431\u043e\u043c \u043f\u043e\u0445\u043e\u0436\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u043c\u044b \u0435\u0451 \u0440\u0435\u0448\u0430\u0435\u043c.<\/p>\n<h3>\u041a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c identity \u0441\u0430\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438<\/h3>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443: \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u0438\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u043f\u0440\u044f\u043c\u043e \u0441\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c, \u0442\u043e \u0441\u044e\u0434\u0430 \u0435\u0449\u0451 \u0438 ClassLoader \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d, \u0442.\u043a. \u043a\u043b\u0430\u0441\u0441 \u0432 Java \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0430\u0440\u043e\u0439 ClassLoader + FQCN, \u043d\u043e \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e \u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u0443 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 Spring Boot Java \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043a\u0440\u0430\u0439\u043d\u0435 \u0440\u0435\u0434\u043a\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043a\u043b\u0430\u0441\u0441\u044b <strong>\u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/strong> \u0433\u0440\u0443\u0437\u0438\u043b\u0438\u0441\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u043b\u043e\u0430\u0434\u0435\u0440\u0430\u043c\u0438 (\u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c \u0441 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 \u0438\u0437 \u0431\u0443\u0442 \u043a\u043b\u0430\u0441\u0441\u043f\u0430\u0441\u0430 \u0438 \u0442.\u0434.).<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f <code>com.example.CatalogSync.sync<\/code>. \u0422\u0430\u043a\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 Pod-\u0430 \u0438\u043b\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u0430\u043a\u043e\u0439 JVM \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0412\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u043e\u043a\u0435\u0439.<\/p>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u0430\u043b\u043e \u043a\u0442\u043e \u0437\u043d\u0430\u0435\u0442: <strong>\u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e <\/strong><code><strong>@Scheduled<\/strong><\/code>, \u0442.\u043a. <code>@Scheduled<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f repeatable. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"java\">@Scheduled(cron = \"0 0 2 * * *\")@Scheduled(cron = \"0 0 14 * * *\")@Scheduled(fixedDelay = 60000)public void sync() {    client.synchronize();}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041c\u0435\u0442\u043e\u0434 \u043e\u0434\u0438\u043d, \u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0439 \u0442\u0440\u0438. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430, \u043c\u044b \u0441\u043c\u0435\u0448\u0430\u0435\u043c \u0438\u0445 \u0438\u0441\u0442\u043e\u0440\u0438\u044e. \u041f\u043e \u0441\u0443\u0442\u0438, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e <code>@Scheduled<\/code> \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0434\u0430\u0451\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <code>taskId<\/code> \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<pre><code>&lt;\u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430&gt;.&lt;\u0438\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430&gt;#&lt;\u0432\u0438\u0434 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f&gt;&lt;\u043d\u043e\u043c\u0435\u0440&gt;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435:<\/p>\n<pre><code>com.example.CatalogSync.sync#cron0com.example.CatalogSync.sync#cron1com.example.CatalogSync.sync#fixedDelay0<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043d\u043e\u043c\u0435\u0440 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f <strong>\u0441 \u043d\u0443\u043b\u044f \u0441\u0440\u0435\u0434\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439 \u0442\u043e\u0433\u043e \u0436\u0435 \u0432\u0438\u0434\u0430<\/strong>, \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Spring. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443 <code>fixedDelay<\/code> \u0437\u0434\u0435\u0441\u044c \u043d\u043e\u043c\u0435\u0440 <code>0<\/code>, \u0445\u043e\u0442\u044f \u043d\u0430 \u043c\u0435\u0442\u043e\u0434\u0435 \u043e\u043d \u0441\u0442\u043e\u0438\u0442 \u0442\u0440\u0435\u0442\u044c\u0438\u043c. \u0414\u043b\u044f <code>fixedRate<\/code> \u0431\u0443\u0434\u0435\u0442 \u0441\u0432\u043e\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a.<\/p>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"java\">runnable + \"#\" + annotation.suffix()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 runnable, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 Spring \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u044f \u0430\u043d\u043d\u043e\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430, \u0430 <code>suffix()<\/code> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0438\u0434 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438 \u0435\u0433\u043e \u043d\u043e\u043c\u0435\u0440. \u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 <code>Object.toString()<\/code> \u0441 identity hash code. \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/axelixlabs\/axelix\/blob\/5b5a7b83bb863ac82fba97b0d4c867aed2e409ff\/sbs\/axelix-spring-boot-3-starter\/src\/main\/java\/com\/axelixlabs\/axelix\/sbs\/spring\/core\/scheduled\/AxelixScheduledAnnotationBeanPostProcessor.java\">AxelixScheduledAnnotationBeanPostProcessor<\/a>, \u0430 \u0441\u0431\u043e\u0440\u043a\u0443 ID \u0432 <a href=\"https:\/\/github.com\/axelixlabs\/axelix\/blob\/5b5a7b83bb863ac82fba97b0d4c867aed2e409ff\/sbs\/axelix-spring-boot-3-starter\/src\/main\/java\/com\/axelixlabs\/axelix\/sbs\/spring\/core\/scheduled\/AxelixScheduledTaskRegistrar.java\">\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0435<\/a>.<\/p>\n<p>\u0421\u0430\u043c\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 cron-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u0432 ID \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442. \u0422\u043e \u0435\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0432\u0438\u0434\u0430 \u0438 \u043d\u043e\u043c\u0435\u0440\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u043e\u0432\u0443\u044e identity \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442.<\/p>\n<h4>\u041a\u0430\u043a \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u043f\u043b\u0438\u043a<\/h4>\n<p>\u0421 <code>taskId<\/code> \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c, \u043d\u043e \u043e\u043d \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432.<\/p>\n<p>\u041d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u043e\u0439 <code>groupId<\/code> \u0438 <code>artifactId<\/code>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u0449\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0442\u0440\u043e\u0439\u043a\u0435:<\/p>\n<pre><code>(groupId, artifactId, taskId)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0412\u0435\u0440\u0441\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u0443 \u0442\u0440\u043e\u0439\u043a\u0443 \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442, \u043a\u0430\u043a \u0438 ID \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430, \u0447\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0432\u0435\u0434\u044c \u043c\u044b \u0445\u0440\u0430\u043d\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0439 \u0436\u0438\u0437\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041f\u043e\u043a\u0430 identity \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c, \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0434\u0435\u043f\u043b\u043e\u0439 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043d\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442.<\/p>\n<p>\u0412 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0438 <code>instanceId<\/code>, \u0438 \u0438\u043c\u044f \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u043c \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0433\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445. SQL-\u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u044d\u0442\u0443 \u0438\u0434\u0435\u044e:<\/p>\n<pre><code class=\"sql\">SELECT * FROM scheduled_task_execution_resultsWHERE group_id = :groupId  AND artifact_id = :artifactId  AND task_id = :taskIdORDER BY started_at DESC, id DESC<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0412 <code>WHERE<\/code> \u043d\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043f\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0443. <strong>\u042d\u0442\u043e \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e<\/strong>. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 <a href=\"https:\/\/github.com\/axelixlabs\/axelix\/blob\/5b5a7b83bb863ac82fba97b0d4c867aed2e409ff\/master\/src\/main\/java\/com\/axelixlabs\/axelix\/master\/repository\/ScheduledTaskExecutionResultRepository.java\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/a>.<\/p>\n<h3>\u041a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c identity \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0438. <code>taskId<\/code> \u0443 \u0434\u0432\u0443\u0445 \u0440\u0435\u043f\u043b\u0438\u043a \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439, \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u0443 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435\u043b\u044c\u0437\u044f. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437.<\/p>\n<p>\u041d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c\u044e <code>ScheduledTaskExecutionResult<\/code>. \u0415\u0451 ID \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437 \u0442\u0440\u0451\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439:<\/p>\n<pre><code>instanceId + taskId + startedAt.toEpochMilli()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0438\u0437 UTF-8 \u0431\u0430\u0439\u0442\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f name-based UUID. \u0412\u043e\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437 <a href=\"https:\/\/github.com\/axelixlabs\/axelix\/blob\/5b5a7b83bb863ac82fba97b0d4c867aed2e409ff\/master\/src\/main\/java\/com\/axelixlabs\/axelix\/master\/service\/convert\/ScheduledTaskExecutionResultConverter.java\">ScheduledTaskExecutionResultConverter<\/a>:<\/p>\n<pre><code class=\"java\">private static String id(String instanceId, String taskId, Instant startedAt) {    String execution = instanceId + taskId + startedAt.toEpochMilli();    return UUID.nameUUIDFromBytes(execution.getBytes(StandardCharsets.UTF_8))            .toString();}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0438 \u043f\u043e\u043b\u044f? <code>instanceId<\/code> \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0435\u0442 \u0440\u0435\u043f\u043b\u0438\u043a\u0438, <code>taskId<\/code> \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0438, \u0430 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0435\u0442 \u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0438. \u0418 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u0435 \u0442\u0440\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0438\u043c\u0438, \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u0440\u0438\u0435\u0437\u0436\u0430\u0435\u0442 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440.<\/p>\n<p><strong>\u0417\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e UUID \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c MD5 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>.<\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0443 \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438: \u0434\u0432\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435, \u043d\u0430\u0447\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u043f\u043e\u043b\u0443\u0447\u0430\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 ID, \u043d\u043e \u043c\u044b \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0439.<\/p>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0443 \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u0445\u043e\u0442\u0438\u043c \u0443\u0437\u043d\u0430\u0442\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041a\u0430\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u043b\u0430\u0441\u0441, \u043c\u0435\u0442\u043e\u0434, \u0432\u0438\u0434 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438 \u043d\u043e\u043c\u0435\u0440 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0432\u0438\u0434\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u0430\u043a\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u043e\u0431\u0449\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>groupId<\/code>, <code>artifactId<\/code>, <code>taskId<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u043b\u0438 \u043c\u044b \u0443\u0436\u0435 \u044d\u0442\u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">ID \u0438\u0437 <code>instanceId<\/code>, <code>taskId<\/code>, \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0423 \u0434\u0432\u0443\u0445 \u0440\u0435\u043f\u043b\u0438\u043a \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u043d\u0430 identity \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u0440\u0430\u0437\u043d\u044b\u0435 ID \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439. \u0410 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0441 \u0442\u043e\u0439 \u0436\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442 \u0435\u0433\u043e ID.<\/p>\n<h4>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435<\/h4>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f ID \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438 \u0432\u044b\u0448\u0435. \u041f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0435 \u0442\u0435\u0445 \u0436\u0435 <code>instanceId<\/code>, <code>taskId<\/code> \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u0430\u0441\u0442\u0435\u0440 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442 \u043f\u0440\u0435\u0436\u043d\u0438\u0439 ID \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439:<\/p>\n<ol>\n<li>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c ID \u0438\u0437 \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0442\u0435 \u0438\u0437 \u043d\u0438\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 \u0411\u0414.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0432 <code>saveAll()<\/code>.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412 <a href=\"https:\/\/github.com\/axelixlabs\/axelix\/blob\/5b5a7b83bb863ac82fba97b0d4c867aed2e409ff\/master\/src\/main\/java\/com\/axelixlabs\/axelix\/master\/service\/scheduled\/DefaultScheduledTaskExecutionHistoryService.java\">\u0441\u0435\u0440\u0432\u0438\u0441\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438<\/a> \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"java\">Set&lt;String&gt; alreadyStoredIds = executionResultRepository.findStoredIds(ids);executionResultRepository.saveAll(scheduledTaskExecutionResults.stream()        .filter(execution -&gt; !alreadyStoredIds.contains(execution.id()))        .toList());<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u0432\u0442\u043e\u0440 \u043e\u043a\u043d\u0430 \u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043c\u0438 <code>3, 4, 5, 6, 7<\/code> \u043f\u043e\u0441\u043b\u0435 \u043e\u043a\u043d\u0430 <code>1, 2, 3, 4, 5<\/code> \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e <code>6<\/code> \u0438 <code>7<\/code>. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043d\u0435 \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0438 \u043d\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0432 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435, \u043f\u043e\u043a\u0430 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 ID \u0435\u0441\u0442\u044c \u0432 \u0411\u0414.<\/p>\n<p>\u0418 \u044d\u0442\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439: \u043a\u043b\u0438\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u0430 \u043c\u0430\u0441\u0442\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445. \u041e\u0434\u043d\u043e\u0439 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0431\u0435\u0437 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 identity \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<h3>\u041d\u043e \u0432\u0435\u0434\u044c \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u043b\u043e\u043c\u0430\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e?<\/h3>\n<p>\u0414\u0430, \u0441\u043b\u043e\u043c\u0430\u0435\u0442.<\/p>\n<p>\u0412\u0441\u044f \u0441\u0445\u0435\u043c\u0430 \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <code>taskId<\/code>, \u0430 \u043e\u043d \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u043e\u0434\u0430. \u0418 \u044d\u0442\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0412\u043e\u0442 \u0443 \u0412\u0430\u0441 \u0431\u044b\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430:<\/p>\n<pre><code>com.example.CatalogSync.sync#cron0<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0410 \u043f\u043e\u0442\u043e\u043c \u0412\u044b \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043b\u0438 \u043c\u0435\u0442\u043e\u0434:<\/p>\n<pre><code>com.example.CatalogSync.synchronize#cron0<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c. \u041d\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0435 \u0435\u0433\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0430\u043a\u0435\u0442. \u0410 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439 \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0438 \u0435\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c.<\/p>\n<p><strong>\u041f\u0440\u0435\u0436\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u0437 \u0411\u0414 \u0438\u0437-\u0437\u0430 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0438\u0445 \u0441 \u043d\u043e\u0432\u044b\u043c <\/strong><code><strong>taskId<\/strong><\/code><strong> \u043c\u044b \u0443\u0436\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u043c.<\/strong> \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u043d\u043e\u0432\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043e\u0442\u0441\u0447\u0451\u0442 \u043d\u0430\u0447\u043d\u0451\u0442\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e.<\/p>\n<h4>\u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0437\u0430\u0434\u0430\u0442\u044c ID \u044f\u0432\u043d\u043e?<\/h4>\n<p>\u041c\u044b \u043a\u0430\u043a \u0440\u0430\u0437 <a href=\"https:\/\/github.com\/axelixlabs\/axelix\/issues\/1721\">\u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438 \u0442\u0430\u043a\u0443\u044e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 \u0432 issue #1721<\/a>. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u0443\u044e \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e \u043f\u043e\u0432\u0435\u0440\u0445 <code>@Scheduled<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u0432\u0430\u043b \u0431\u044b \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 <code>taskId<\/code>. \u0422\u043e\u0433\u0434\u0430 \u0438\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u043b\u0438 \u043f\u0430\u043a\u0435\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 identity \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e. <strong>\u041d\u043e \u0446\u0435\u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0448\u0438\u0440\u0435, \u0447\u0435\u043c \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f.<\/strong><\/p>\n<p>\u0412\u0441\u0451 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u0430: <a href=\"https:\/\/axelix.io\/docs\/ru\/more\/compatibility-and-versioning#%D1%81%D1%82%D0%B0%D1%80%D1%82%D0%B5%D1%80%D1%8B\">\u0412\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 Axelix, \u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0435\u0451 \u043a\u043b\u0430\u0441\u0441\u044b \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/a>. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u043b\u0430\u0441\u0441 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 <code>public<\/code>, \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0412\u0430\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0430 \u043d\u0451\u043c \u0441\u0432\u043e\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e.<\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043b\u0430 \u0431\u044b \u043f\u0440\u0435\u0446\u0435\u0434\u0435\u043d\u0442: <strong>\u0431\u0438\u0437\u043d\u0435\u0441-\u043a\u043e\u0434 \u043d\u0430\u0447\u0430\u043b \u0431\u044b \u044f\u0432\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 API \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/strong>. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e ID, \u0430 \u043d\u0430\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043f\u0440\u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0443 \u0443\u0436\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0451 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0418 \u0432\u043e\u0442 \u0442\u0443\u0442 \u0441\u0442\u043e\u0438\u0442 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u043a\u0430\u043a\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043c\u044b \u0432\u043e\u043e\u0431\u0449\u0435 \u0440\u0435\u0448\u0430\u0435\u043c. <strong>\u0418\u0441\u0442\u043e\u0440\u0438\u044f scheduled tasks \u043d\u0443\u0436\u043d\u0430 \u043d\u0430\u043c \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u043b\u044f \u0434\u0435\u0431\u0430\u0433\u0430<\/strong>: \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u0435\u043b\u0430\u043b\u0430 \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u0433\u0434\u0435 \u0443\u043f\u0430\u043b\u0430, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0451 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0437\u0430\u043d\u043e\u0432\u043e.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0412\u044b \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0435 \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0440\u0430\u0437 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432, \u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u044d\u0442\u0438\u043c\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 identity \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439. <strong>\u0414\u043b\u044f \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e<\/strong>. \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u0432\u044f\u0437\u044c \u0447\u0435\u0440\u0435\u0437 \u043b\u044e\u0431\u043e\u0439 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433 \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043d\u043e \u0440\u0430\u0434\u0438 \u044d\u0442\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 API \u043c\u044b \u043f\u043e\u043a\u0430 \u043d\u0435 \u0441\u0442\u0430\u043b\u0438.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 trade-off: \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u043e\u0431\u043c\u0435\u043d \u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043e\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<p><em>\u041d\u0430\u043c \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u044b \u043e\u0431 \u044d\u0442\u043e\u043c \u0434\u0443\u043c\u0430\u0435\u0442\u0435, \u0438 \u043a\u0430\u043a \u0432\u044b \u0434\u0443\u043c\u0430\u0435\u0442\u0435, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u043e\u2011\u0434\u0440\u0443\u0433\u043e\u043c\u0443.<\/em><\/p>\n<h3>\u0417\u0430\u0447\u0435\u043c \u0441\u0442\u0430\u0440\u0442\u0435\u0440\u0443 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0435 \u043e\u043a\u043d\u043e<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0443\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043f\u043e\u043d\u044f\u0442\u0435\u043d: \u0441\u0442\u0430\u0440\u0442\u0435\u0440 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u0433\u043e \u043c\u0430\u0441\u0442\u0435\u0440\u0443, \u0430 \u043c\u0430\u0441\u0442\u0435\u0440 \u0443\u0437\u043d\u0430\u0451\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0435. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u044d\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u044b.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u043e\u0431\u0449\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430? \u041c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043e\u0431\u043c\u0435\u043d\u0430\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u0415\u0451 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0443\u0436\u043d\u043e \u0433\u0434\u0435-\u0442\u043e \u043f\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c, \u043f\u0440\u0438\u0447\u0451\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0443\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043c\u0435\u0448\u0430\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043d\u043e\u0432\u044b\u0445.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0432 \u0440\u0430\u0441\u0442\u0443\u0449\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e. \u041d\u043e \u0435\u0441\u043b\u0438 \u043c\u0430\u0441\u0442\u0435\u0440 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u0442\u0430\u043a\u0430\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u0440\u0430\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0447\u0438\u0441\u043b\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432. \u041d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0432 \u0438\u0442\u043e\u0433\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e, \u0447\u0442\u043e \u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u044a\u0435\u043b\u043e \u043f\u0430\u043c\u044f\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u0442\u0430\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0433\u043e \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <strong>\u0441\u0432\u043e\u0451 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 10 \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u044b\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439<\/strong>. \u0427\u0430\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0435 \u0432\u044b\u0442\u0435\u0441\u043d\u0438\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0439, \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0434\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438: \u043e\u043a\u043d\u0430 \u0443 \u043d\u0438\u0445 \u0440\u0430\u0437\u043d\u044b\u0435. \u0410 \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u043e\u043b\u044c\u0448\u0435, \u0443\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0411\u0414 \u043c\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>\u0412\u0430\u0436\u043d\u043e\u0435 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435: \u043e\u043a\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u041e\u043d\u043e \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u00ab\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 10 \u043c\u0438\u043d\u0443\u0442\u00bb. \u0414\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0439 \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u0438 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0439 \u0440\u0430\u0437 \u0432 \u0441\u0443\u0442\u043a\u0438, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u0445\u0432\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u043c.<\/p>\n<h4>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0435\u0441\u043b\u0438 \u043c\u0430\u0441\u0442\u0435\u0440 \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u0435\u0442<\/h4>\n<p>\u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430, \u043d\u043e \u0451\u043c\u043a\u043e\u0441\u0442\u044c \u0431\u0443\u0444\u0435\u0440\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0438 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0443 \u043e\u0431\u043c\u0435\u043d\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0441\u043d\u0438\u043c\u043a\u0430\u043c\u0438 \u043e\u043a\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430\u0441\u044c 15 \u0440\u0430\u0437, \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0447\u0442\u0435\u043d\u0438\u044e \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 10 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u041f\u0435\u0440\u0432\u044b\u0435 \u043f\u044f\u0442\u044c \u0443\u0436\u0435 \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u044b.<\/p>\n<p>\u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u0430. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u043e\u0441\u044c \u0434\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438, \u043d\u0435\u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0440\u043e\u043f\u0430\u0434\u0451\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c. \u0410 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0435\u0449\u0451 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430.<\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0430\u043a\u043e\u0433\u043e \u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0435\u0441\u0442\u044c \u0433\u0438\u043f\u043e\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c, \u0442.\u0435. \u043f\u043e\u0442\u0440\u044f\u0442\u044c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0433\u043e \u043e\u043a\u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 Scheduled Task. \u041d\u043e \u0442\u0443\u0442 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0440\u0435\u0439\u0434 \u043e\u0444\u0444\u0430 \u0441\u043d\u043e\u0432\u0430:<\/p>\n<p>\u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0435 \u043e\u043a\u043d\u043e, \u0442\u0435\u043c \u0432\u044b\u0448\u0435 memory footprint, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0448 \u043a\u043b\u0438\u0435\u043d\u0442 \u0432\u043d\u043e\u0441\u0438\u0442 \u0432\u0430\u043c. \u041c\u044b \u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u043d\u0435 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0433\u043e \u043e\u0432\u0435\u0440\u0445\u0435\u0434\u0430, \u043d\u0438 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0444\u0430, \u043d\u0438 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f heap-\u0430. \u041d\u043e \u0447\u0435\u043c \u043a\u043e\u0440\u043e\u0447\u0435 \u043e\u043a\u043d\u043e,<\/p>\n<p><strong>\u0422\u0430\u043a \u0432\u043e\u0442 \u043d\u0430\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e, \u0435\u0441\u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0437 2 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0433\u0438\u043f\u043e\u0442\u0438\u0437:<\/strong><\/p>\n<ul>\n<li>\n<p>Axelix Master \u0435\u0441\u043b\u0438 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u0442\u043e \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f (\u044d\u0442\u043e \u043d\u0435 \u0434\u0430\u0443\u043d\u0442\u0430\u0439\u043c \u043d\u0430 5-6-10 \u0447\u0430\u0441\u043e\u0432)<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0447\u0430\u0441\u0442\u044c <code>@Scheduled<\/code> \u0442\u0430\u0441\u043e\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 interval \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0430\u0440\u0442\u0435\u0440\u043e\u043c \u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u0435\u0441\u043b\u0438 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c, \u0442\u043e \u043e\u043a\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c, \u043d\u0430\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 10 \u0445\u0432\u0430\u0442\u0438\u0442. \u0412\u043e\u043f\u0440\u043e\u0441 \u0432\u0430\u043c: <em>\u0421\u0442\u043e\u0438\u0442 \u043b\u0438 \u0434\u0430\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c?<\/em><\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u043b\u043e\u0433\u0438\u043a\u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u0438 \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0443 \u043d\u0430\u0441.<\/p>\n<h3>\u0421\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0435 \u043e\u043a\u043d\u043e. \u0417\u0430\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442<\/h3>\n<p>\u0421 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a \u0431\u0443\u0444\u0435\u0440\u0443 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c: \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440, \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u043e\u0432\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043b\u0435\u0436\u0438\u0442 \u043a\u043e\u043b\u044c\u0446\u0435\u0432\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440, \u0430 \u0441\u043b\u043e\u0442 \u0434\u043b\u044f \u043d\u0435\u0451 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<pre><code class=\"java\">long sequence = nextSequence.getAndIncrement();int slot = (int) (sequence % capacity);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u043d\u043e\u0432\u0430 \u0441 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0442\u0430. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u0434\u0432\u0438\u0433\u043e\u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0439 \u0438\u0437 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043f\u0438\u0441\u043a\u0430.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/c1\/8f\/35\/c18f352efca966e73882f999e493ba3b.png\" alt=\"\u0417\u0430\u043f\u0438\u0441\u044c \u0432 ring buffer \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0447\u0442\u0435\u043d\u0438\u044f\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/c1\/8f\/35\/c18f352efca966e73882f999e493ba3b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/c1\/8f\/35\/c18f352efca966e73882f999e493ba3b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0417\u0430\u043f\u0438\u0441\u044c \u0432 ring buffer \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0447\u0442\u0435\u043d\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0451\u043c\u043a\u043e\u0441\u0442\u044c \u0440\u0430\u0432\u043d\u0430 5. \u0417\u0430\u043f\u0438\u0441\u044c \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c 5 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0441\u043b\u043e\u0442 0, \u0433\u0434\u0435 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043b\u0435\u0436\u0430\u043b\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c 0. \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0443\u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043b\u043e\u0442\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043f\u0430\u0440\u0430 <code>(sequence, value)<\/code>, \u0430 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0438\u0434\u0451\u0442 \u043f\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u0430\u043c \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0432 \u0441\u043b\u043e\u0442\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440.<\/p>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0433\u043e\u0442\u043e\u0432\u043e. \u041d\u043e \u0443 \u043d\u0430\u0441 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<h4>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u0430\u043f\u043e\u0437\u0434\u0430\u0432\u0448\u0435\u0433\u043e \u043f\u0438\u0441\u0430\u0442\u0435\u043b\u044f<\/h4>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043e\u043a\u043d\u043e \u0451\u043c\u043a\u043e\u0441\u0442\u044c\u044e 10 \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u0442\u043e\u043a A \u043f\u043e\u043b\u0443\u0447\u0438\u043b <code>sequence = 0<\/code> \u0438 \u0431\u044b\u043b \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c \u0434\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043b\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0434\u043e\u0448\u043b\u0438 \u0434\u043e <code>sequence = 10<\/code>. \u042d\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0437\u0430\u043d\u044f\u043b\u0430 \u0441\u043b\u043e\u0442 0.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0442\u043e\u043a A \u043f\u0440\u043e\u0441\u043d\u0443\u043b\u0441\u044f \u0438 \u0440\u0435\u0448\u0438\u043b \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0442\u043e\u0442 \u0436\u0435 \u0441\u043b\u043e\u0442.<\/p>\n<\/li>\n<\/ol>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c <code>set()<\/code>, \u0441\u0442\u0430\u0440\u044b\u0439 \u043f\u0438\u0441\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0442\u0440\u0451\u0442 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c. \u0418 \u0442\u0443\u0442 \u0432\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442: \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442. \u041f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430\u043c \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0412 <code>SlidingWindow<\/code> \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0437\u0430\u043f\u0438\u0441\u0438. <code>BEST_EFFORT<\/code> \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435. \u0410 <code>STRICT<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0438 scheduled tasks, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u0443\u0436\u0435 \u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u0432 \u0441\u043b\u043e\u0442\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0441\u043b\u043e\u0442 \u0447\u0435\u0440\u0435\u0437 CAS:<\/p>\n<pre><code class=\"java\">while (true) {    Entry&lt;E&gt; current = buffer.get(slot);    if (current != null &amp;&amp; current.sequence &gt; sequence) {        return;    }    if (buffer.compareAndSet(slot, current, update)) {        return;    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u0441\u043b\u043e\u0442\u0435 \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c, \u0437\u0430\u043f\u043e\u0437\u0434\u0430\u0432\u0448\u0438\u0439 \u043f\u043e\u0442\u043e\u043a \u0435\u0451 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442. \u0415\u0441\u043b\u0438 \u0441\u043b\u043e\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0447\u0442\u0435\u043d\u0438\u0435\u043c \u0438 CAS, \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043d\u043e\u0432\u0430.<\/p>\n<p>\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e <code>synchronized<\/code> \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442. \u0412 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0439 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441, \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 <code>Entry<\/code> \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u043e\u0434\u0438\u043d \u0441\u043b\u043e\u0442. \u041f\u0440\u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438 CAS \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043e\u0432, \u0430 \u043e\u0431\u0449\u0438\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u043e\u0439 contention. \u0422\u043e \u0435\u0441\u0442\u044c \u00ab\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 atomics\u00bb \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u00ab\u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f\u00bb.<\/p>\n<h4>\u0427\u0442\u043e \u0432\u0438\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c<\/h4>\n<p>\u0427\u0442\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0451\u043c\u043a\u043e\u0441\u0442\u0438 \u043e\u043a\u043d\u0430. \u041f\u0440\u043e\u0445\u043e\u0434 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c\u0438 <code>capacity<\/code> \u043d\u043e\u043c\u0435\u0440\u0430\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043b\u0438\u043d\u0435\u0439\u043d\u0430 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043e\u043a\u043d\u0430.<\/p>\n<p>\u041d\u043e \u044d\u0442\u043e <strong>weakly consistent \u0447\u0442\u0435\u043d\u0438\u0435<\/strong>. \u041f\u043e\u043a\u0430 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a, \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b. \u0427\u0430\u0441\u0442\u044c \u0441\u043b\u043e\u0442\u043e\u0432 \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f, \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0435\u0449\u0451 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0441\u043d\u0438\u043c\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0447\u0435\u043c \u0451\u043c\u043a\u043e\u0441\u0442\u044c \u043e\u043a\u043d\u0430. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u044d\u0442\u043e \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u044b\u0439 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441: \u043c\u044b \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u0435\u043b\u0435\u0439 \u0440\u0430\u0434\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u0441\u043d\u0438\u043c\u043a\u0430, \u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043e\u0431\u043c\u0435\u043d \u0441\u043d\u043e\u0432\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043a\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043e\u043a\u043d\u0435: \u0432\u044b\u0442\u0435\u0441\u043d\u0451\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0437 \u043d\u0435\u0433\u043e \u0443\u0436\u0435 \u043d\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c.<\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, <a href=\"https:\/\/github.com\/axelixlabs\/axelix\/blob\/5b5a7b83bb863ac82fba97b0d4c867aed2e409ff\/sbs\/starter-domain\/src\/main\/java\/com\/axelixlabs\/axelix\/sbs\/spring\/core\/SlidingWindow.java\">\u0432\u043e\u0442 \u0435\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/a>. \u0415\u0441\u043b\u0438 \u0412\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b concurrent \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c.<\/p>\n<h3>\u0410 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e?<\/h3>\n<p>\u0414\u0440\u0443\u0437\u044c\u044f, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 <code>synchronized<\/code>, \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043e\u043a\u043d\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c <a href=\"https:\/\/github.com\/axelixlabs\/axelix\/blob\/5b5a7b83bb863ac82fba97b0d4c867aed2e409ff\/sbs\/starter-domain\/src\/jmh\/java\/com\/axelixlabs\/axelix\/sbs\/spring\/core\/SlidingWindowBenchmark.java\">JMH-\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438<\/a>.<\/p>\n<p>\u0412 \u043d\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0434\u043d\u0438\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0438 \u0432\u043e\u0441\u0435\u043c\u044c\u044e \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 \u0432 \u043e\u0431\u0449\u0435\u0435 \u043e\u043a\u043d\u043e. \u0415\u0441\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0451\u043c\u043a\u043e\u0441\u0442\u0438 <code>10<\/code>, <code>200<\/code>, <code>1000<\/code> \u0438 \u043e\u0431\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0437\u0430\u043f\u0438\u0441\u0438. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438 \u0437\u0430 <code>AtomicLong<\/code> \u0438 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043f\u043e\u0445\u043e\u0436\u0435\u0433\u043e \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 <code>Entry<\/code>.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0433\u043d\u0430\u043b\u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043e\u043a\u043d\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438: <code>capacity=10<\/code>, <code>writeMode=STRICT<\/code>, \u0440\u0435\u0436\u0438\u043c <code>AverageTime<\/code>. \u0423\u0441\u043b\u043e\u0432\u0438\u044f: AMD Ryzen 7 8845HS, Amazon Corretto 21.0.8, JMH 1.37, heap 512 \u041c\u0411, \u0434\u0432\u0430 fork-\u0430, \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u0440\u0438 \u043f\u0440\u043e\u0433\u0440\u0435\u0432\u043e\u0447\u043d\u044b\u0435 \u0438 \u043f\u044f\u0442\u044c \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u043a\u0443\u043d\u0434\u0435.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f, \u043d\u0441\/\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0410\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0438, \u0431\u0430\u0439\u0442\/\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a, <code>put<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">6,29 \u00b1 0,11<\/p>\n<\/td>\n<td>\n<p align=\"left\">24<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u043e\u0441\u0435\u043c\u044c \u043f\u043e\u0442\u043e\u043a\u043e\u0432, <code>concurrentPut<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">292,31 \u00b1 23,28<\/p>\n<\/td>\n<td>\n<p align=\"left\">24<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0442\u0430\u043a, \u043a\u0430\u043a \u0435\u0451 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 JMH \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u043e\u043d\u0430: \u0434\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b 99,9%. \u041a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u043f\u043e\u0442\u043e\u043a\u0430\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430; \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0449\u0435\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0441\u0435\u043c\u044c \u043f\u043e\u0442\u043e\u043a\u043e\u0432.<\/p>\n<p>\u0427\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u0438\u0434\u043d\u043e? \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u0442\u0435\u043d\u0434\u0435 \u0441\u0430\u043c\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043e\u043a\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0435\u0448\u0451\u0432\u0430\u044f. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044f \u0437\u0430 \u043e\u0431\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0437\u0430\u043c\u0435\u0442\u043d\u0430. \u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c allocation-free: \u043d\u043e\u0432\u044b\u0439 <code>Entry<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u041f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440 GC \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044d\u0442\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c.<\/p>\n<p>\u041d\u043e \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, <strong>\u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u044b \u0438\u0437\u043c\u0435\u0440\u0438\u043b\u0438<\/strong>. \u042d\u0442\u043e <code>SlidingWindow.put()<\/code>. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 JSON, HTTP \u0438 \u0411\u0414 \u043c\u0430\u0441\u0442\u0435\u0440\u0430. \u041d\u0435 \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442 \u044d\u0442\u043e\u0442 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u044f \u043e\u043a\u043d\u0430. \u0427\u0438\u0441\u043b\u043e \u00ab6 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u00bb \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0430 \u0432\u0441\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0446\u0435\u043b\u0438\u043a\u043e\u043c.<\/p>\n<p>\u0418\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0445\u043e\u0442\u044c contention \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u043c \u043e\u043a\u043d\u043e \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d, <strong>\u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043e\u043d \u043f\u043e\u0447\u0442\u0438 \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435<\/strong>. \u0412 \u0440\u0435\u0434\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 contention \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438, \u043d\u043e \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 <code>put<\/code> \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0439.<\/p>\n<p>\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u043e\u043d \u043c\u043e\u0436\u043d\u043e \u0438\u0437 \u043a\u043e\u0440\u043d\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f:<\/p>\n<pre><code class=\"bash\">.\/gradlew :sbs:starter-domain:jmh \\  '-PjmhArgs=SlidingWindowBenchmark.(put|concurrentPut) -p capacity=10 -p writeMode=STRICT -bm avgt'<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c, \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043f\u043e\u043d\u044f\u0442\u043d\u044b \u0438\u0437 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430: \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0442\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043e\u0431\u043c\u0435\u043d\u0435 \u0441 \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u043c. \u041d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.<\/p>\n<h4>\u0411\u044b\u0441\u0442\u0440\u043e\u0435 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u043c \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442<\/h4>\n<p>Performance-\u0442\u0435\u0441\u0442 \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441, \u043c\u043e\u0436\u0435\u0442 \u043b\u0438 \u0437\u0430\u043f\u043e\u0437\u0434\u0430\u0432\u0448\u0438\u0439 \u043f\u0438\u0441\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0442\u0435\u0440\u0435\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0438 <a href=\"https:\/\/github.com\/axelixlabs\/axelix\/blob\/5b5a7b83bb863ac82fba97b0d4c867aed2e409ff\/sbs\/starter-domain\/src\/concurrencyTest\/kotlin\/com\/axelixlabs\/axelix\/sbs\/spring\/core\/SlidingWindowTest.kt\">Lincheck-\u0442\u0435\u0441\u0442\u044b \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/a> (\u0434\u0430, \u0434\u0440\u0443\u0437\u044c\u044f, \u043c\u044b \u0435\u0449\u0451 \u0438 \u043f\u0438\u0448\u0435\u043c concurrency \u0442\u0435\u0441\u0442\u044b).<\/p>\n<p>\u0412 Lincheck \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f model checking \u0438 stress testing. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0441 \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e, \u043e\u0431\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0437\u0430\u043f\u0438\u0441\u0438, \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u043e\u0432 \u0438 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432; \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0438\u0441\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u043b\u044f \u0441\u0442\u0440\u043e\u0433\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0435\u0441\u0442\u044b \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442 weakly consistent \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0447\u0442\u0435\u043d\u0438\u044f. \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0439 \u0441\u043d\u0438\u043c\u043e\u043a \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0431\u044b\u043b\u043e \u0431\u044b \u0443\u0436\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e<\/h3>\n<p>\u0414\u043b\u044f \u043d\u0430\u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432 \u044d\u0442\u043e\u0439 \u0444\u0438\u0447\u0435 \u0431\u044b\u043b \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0438 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c. \u041e\u0442 \u043e\u0442\u0432\u0435\u0442\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0438 \u043e\u0431\u0449\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u043c, \u0438 \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0435.<\/p>\n<p>\u041c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0439 <code>taskId<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u0434, \u0438 \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u0440\u0430\u0437\u0440\u044b\u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0438. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 ID \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a, \u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u0434\u0430\u0432\u043d\u044e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u043c\u0438 \u0440\u0430\u0441\u0445\u043e\u0434\u0430\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<p>\u042f \u0434\u0443\u043c\u0430\u044e, \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0432 \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0433\u0434\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u044e\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e\u0431\u044b\u0442\u0438\u0439. \u0427\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0412\u0430\u0448 \u043a\u043b\u044e\u0447? \u041c\u0435\u0436\u0434\u0443 \u043a\u0430\u043a\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u043e\u043d \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c? <strong>\u0418 \u043a\u0430\u043a\u0443\u044e \u0446\u0435\u043d\u0443 \u0412\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u0437\u0430\u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0437\u0430 \u044d\u0442\u0443 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c?<\/strong><\/p>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 <a href=\"https:\/\/github.com\/axelixlabs\/axelix\">Axelix \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0430 GitHub<\/a>. \u0415\u0441\u043b\u0438 \u0412\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u0434\u0435\u0442\u0430\u043b\u0438 \u0438\u043b\u0438 \u0435\u0441\u0442\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u043c, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0435 \u0441 issue \u0438\u043b\u0438 PR. \u0422\u0430\u043a\u0438\u0435 \u043a\u0435\u0439\u0441\u044b \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0443\u0434\u0430 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>\u0412\u0441\u0435\u043c \u0443\u0441\u043f\u0435\u0445\u043e\u0432!<\/p>\n<\/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\/articles\/1107562\/\">https:\/\/habr.com\/ru\/articles\/1107562\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041c\u0438\u0445\u0430\u0438\u043b \u041f\u043e\u043b\u0438\u0432\u0430\u0445\u0430, \u044f \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043b\u0438\u0434\u0435\u0440\u043e\u043c Open Source \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Axelix.\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u0423 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c Spring Boot \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0445\u043e\u0434\u0438\u0442 \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0441 @Scheduled, \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0433\u043e. \u0418 \u0432\u043e\u0442 \u043a \u0412\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043b\u043b\u0435\u0433\u0430 \u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442:\u0427\u0442\u043e-\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c. \u0423 \u043d\u0430\u0441 \u0442\u043e\u0447\u043d\u043e \u0441\u0438\u043d\u043a \u043f\u0440\u043e\u0448\u0451\u043b?\u0412\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0435 \u043b\u043e\u0433\u0438. \u041f\u043e\u0442\u043e\u043c \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432\u043e\u043e\u0431\u0449\u0435-\u0442\u043e \u0442\u0440\u0438. \u041f\u043e\u0442\u043e\u043c \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0430\u0434\u0430\u0435\u0442, \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0434\u043e\u043b\u044c\u0448\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e. \u0418 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0438 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e.\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u044f \u0431\u044b \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0438\u0441\u0430\u043b\u0438 \u043a\u043e\u0434 \u0432 Enterprise, \u0442\u043e \u044f \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u044d\u0442\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f. \u0418 \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0447\u0430\u0441\u0442\u043e \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0441\u0430\u043c\u044b\u0445 Scheduled \u0442\u0430\u0441\u043e\u043a \u043d\u0430 \u043f\u0440\u043e\u0434\u0435 \u0438\u043b\u0438 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u043f\u043e\u043a\u0440\u044b\u0442\u043e \u0442\u0443\u043c\u0430\u043d\u043e\u043c \u0432\u043e\u0439\u043d\u044b, \u0442\u0430\u043c \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442.\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b \u0441\u0440\u0435\u043b\u0438\u0437\u0438\u043b\u0438 Axelix 1.3 \u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0444\u0438\u0447, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438, \u044d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f scheduled tasks:\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f scheduled tasks \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 Axelix 1.3\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0430\u043a\u0442 \u041e\u043a\u043e\u043b\u043e 10 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0435\u0440\u043e\u0432 \u043f\u0440\u0438\u043d\u044f\u043b\u043e \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u0440\u0435\u043b\u0438\u0437\u0435. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0432\u0430\u043c \u0432\u0441\u0435\u043c! \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0438\u0442\u044c \u0432 Open Source &#8212; welcome! \u041c\u044b \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e [\u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0443\u0442](https:\/\/github.com\/axelixlabs\/axelix?tab=contributing-ov-file#how-to-contribute). \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0434\u0432\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0430\u043a\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438: \u043a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 scheduled task, \u0438 \u043a\u0430\u043a \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043e\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0441\u0442\u0430\u0440\u043e\u0433\u043e. \u041f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043c\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0438 \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u044b \u0437\u0430 \u043d\u0438\u043c\u0438 \u0441\u0442\u043e\u044f\u0442.\u041d\u0443 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043f\u0435\u0440\u0444\u043e\u0440\u043c\u0430\u043d\u0441\u0435 \u0432\u0441\u0435\u0439 \u044d\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u0430\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u043a \u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c.\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440, \u0442\u043e \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u0430\u043c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f &#8212; \u0442\u0443\u0442 \u043c\u043d\u043e\u0433\u043e \u0442\u0440\u0435\u0439\u0434 \u043e\u0444\u0444\u043e\u0432 \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043f\u043e\u0440\u0438\u0442\u044c. \u041d\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0443\u0441\u043b\u044b\u0448\u0430\u0442\u044c \u0432\u0430\u0448\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u0438 \u0441\u043e\u0432\u0435\u0442\u044b \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u0438\u043c \u0431\u044b \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0444\u0438\u0447\u0438. \u041c\u044b \u043f\u0440\u0430\u0432\u0434\u0430 \u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e.\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e \u0441\u0430\u043c\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443\u0412\u043e\u0437\u044c\u043c\u0451\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:@Componentpublic class CatalogSync {    private final CatalogClient client;    public CatalogSync(CatalogClient client) {        this.client = client;    }    @Scheduled(fixedDelayString = &#171;${catalog.sync.delay:60000}&#187;)    public void sync() {        client.synchronize();    }}\u041f\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0434\u0435\u043b\u0430\u0442\u044c. \u0418\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u0441 \u043a\u0430\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043e\u043c \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0441 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442, \u043f\u043e\u0447\u0435\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0441\u044f, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0435\u0449\u0438:\u041a\u043e\u0433\u0434\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0430\u0441\u044c?\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430\u0441\u044c \u043b\u0438 \u043e\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0438 \u0435\u0441\u043b\u0438 \u0443\u043f\u0430\u043b\u0430 \u0441 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c, \u0442\u043e \u0441 \u043a\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u043d\u043e?\u041d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e?\u042d\u0442\u043e \u0431\u044b\u043b \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043d\u0430\u0436\u0430\u043b \u043a\u043d\u043e\u043f\u043a\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e? (\u0412 Axelix \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e)\u0418 \u0432\u043e\u0442 \u0442\u0443\u0442 \u0432\u0430\u0436\u043d\u043e: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441, \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439.\u041c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u0433\u0438. \u041c\u043e\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0433\u0434\u0435-\u043b\u0438\u0431\u043e. \u041d\u043e \u044d\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0430\u044f\u0441\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.\u041d\u0430\u043c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f Axelix \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0441\u0430\u043c\u0430. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u043e\u0439 \u043f\u0443\u0442\u044c \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0434\u043e \u043e\u0431\u0449\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\u041a\u0430\u043a \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0412\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0438\u043c \u0442\u0440\u0451\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u043c. \u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u043e\u043d\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e. \u0427\u0430\u0441\u0442\u043e \u043b\u044e\u0434\u0438 \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a-\u0442\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 ShedLock \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u0411\u0414, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 SELECT &#8230; FOR UPDATE SKIP LOCKED \u0438 \u0442.\u043f. \u0432\u0435\u0449\u0438.\u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u043e \u0432\u0441\u0435\u0445 \u0440\u0435\u043f\u043b\u0438\u043a \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.\u0412 Axelix \u044d\u0442\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c \u0441\u043b\u0443\u0436\u0438\u0442 Master, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 UI \u0438 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e Spring Boot \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0430\u0440\u0442\u0435\u0440\u0430. \u041e\u043d\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0438\u0445 \u043c\u0430\u0441\u0442\u0435\u0440\u0443: \u043b\u0438\u0431\u043e \u0441\u0430\u043c\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 heartbeat-\u0430\u0445, \u043b\u0438\u0431\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0445 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u043f\u0440\u043e\u0441 \u043c\u0430\u0441\u0442\u0435\u0440\u0430.\u0412 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0437\u0430\u0434\u0430\u0447 Spring \u043c\u044b \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0438 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e, \u0438 \u0434\u043b\u044f \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043e\u043a\u0440\u0443\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438, \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c observations Spring Framework 6.1+, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b. \u0414\u0435\u0442\u0430\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u043a\u043e\u0434\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 observations. \u0417\u0434\u0435\u0441\u044c \u0440\u0435\u0447\u044c \u043f\u0440\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0435 @Scheduled \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 cron, fixedDelay \u0438 fixedRate.\u0412 \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0442\u0438\u043f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0431\u044b\u043b\u0430. \u0423\u0441\u043f\u0435\u0445 \u0437\u0434\u0435\u0441\u044c \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0432\u0438\u0434\u0438\u043c\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0447\u0438\u043a\u0443: \u0435\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0430\u043c\u0430 \u043f\u043e\u0439\u043c\u0430\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0443 \u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0430\u0441\u044c, \u043f\u0440\u043e \u0431\u0438\u0437\u043d\u0435\u0441-\u0441\u0431\u043e\u0439 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043c\u044b \u043d\u0435 \u0443\u0437\u043d\u0430\u0435\u043c.\u0421\u0442\u0430\u0440\u0442\u0435\u0440 \u0445\u0440\u0430\u043d\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 10 \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u044b\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438. \u042d\u0442\u043e \u0440\u043e\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439\u0441\u044f \u0431\u0443\u0444\u0435\u0440 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430: \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0430\u043c\u0430\u044f \u0441\u0442\u0430\u0440\u0430\u044f \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u0435\u0442\u0441\u044f. \u0420\u0430\u0437 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u0430\u0441\u0442\u0435\u0440\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 heartbeat \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 15 \u0441\u0435\u043a\u0443\u043d\u0434. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435\u0442.\u0414\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0438\u0437 \u0441\u0442\u0430\u0440\u0442\u0435\u0440\u0430 \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u041c\u0430\u0441\u0442\u0435\u0440 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0441\u0432\u043e\u0435\u0439 \u0411\u0414. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0435\u0451 \u0438\u0437 \u043e\u0431\u0449\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u0435\u0441\u043b\u0438 \u043c\u0430\u0441\u0442\u0435\u0440 \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u043b \u0435\u0451 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c. \u0414\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430; \u0441\u0440\u043e\u043a \u0435\u0451 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u0430.\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0430\u044f, \u0430 \u043d\u0435 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u0430\u044f. \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u0430 \u0432 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0434\u043e \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043c\u0430\u0441\u0442\u0435\u0440 \u0435\u0451 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442. \u041a \u044d\u0442\u043e\u043c\u0443 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044e \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0430\u043c \u0431\u0443\u0444\u0435\u0440.\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u041f\u0440\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043e\u0431\u043c\u0435\u043d\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0432\u0441\u0451 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043e\u043a\u043d\u043e, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0430\u0441\u0442\u0435\u0440 \u0443\u0436\u0435 \u043c\u043e\u0433 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c. \u041f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u043a\u043d\u043e \u043d\u0435 \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f, \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432.\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043e\u0434\u0438\u043d heartbeat \u043d\u0435 \u0434\u043e\u0448\u0451\u043b. \u041f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043e\u0431\u043c\u0435\u043d\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u043f\u0430\u043a\u0435\u0442, \u0435\u0441\u043b\u0438 \u0435\u0449\u0451 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043e\u043a\u043d\u0435. \u0410 \u0435\u0441\u043b\u0438 \u043c\u0430\u0441\u0442\u0435\u0440 \u0443\u0441\u043f\u0435\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442, \u043d\u043e \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0441\u044f, \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b.\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043e\u043a\u043e\u043d \u0438 \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u043c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u043f\u043b\u0438\u043a, \u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044b. \u0418 \u0442\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0434\u0432\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u0430:\u041a\u0430\u043a \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0430,\u0418 \u043a\u0430\u043a \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u0435\u0451 \u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043e\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0441\u0442\u0430\u0440\u043e\u0433\u043e?\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.\u0420\u0430\u0437\u0434\u0435\u043b\u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u0442 \u0435\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u0423 \u043d\u0430\u0448\u0435\u0433\u043e CatalogSync.sync() \u0435\u0441\u0442\u044c \u043e\u0431\u0449\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u043e \u0442\u0440\u0451\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b \u0440\u0430\u0437 \u043c\u044b \u043d\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.\u0422\u043e \u0435\u0441\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0434\u0432\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 identity:Identity \u0437\u0430\u0434\u0430\u0447\u0438: \u043a\u0430\u043a\u0430\u044f \u0438\u043c\u0435\u043d\u043d\u043e scheduled task \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f. \u041e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.Identity \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f: \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u044b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c. \u0423 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 ID, \u0430 \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0435\u0433\u043e ID \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0438\u043c.\u0415\u0441\u043b\u0438 \u0441\u043c\u0435\u0448\u0430\u0442\u044c \u044d\u0442\u0438 \u0434\u0432\u0435 \u0432\u0435\u0449\u0438, \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u0442\u0441\u044f. \u041f\u0440\u0438\u0432\u044f\u0436\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 JVM, \u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0411\u0443\u0434\u0435\u043c \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u043d\u043e\u0432\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 UUID \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438, \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0443\u0441\u043a.\u042d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432 \u043b\u044e\u0431\u043e\u043c \u043f\u043e\u0445\u043e\u0436\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u043c\u044b \u0435\u0451 \u0440\u0435\u0448\u0430\u0435\u043c.\u041a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c identity \u0441\u0430\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443: \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u0438\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u043f\u0440\u044f\u043c\u043e \u0441\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c, \u0442\u043e \u0441\u044e\u0434\u0430 \u0435\u0449\u0451 \u0438 ClassLoader \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d, \u0442.\u043a. \u043a\u043b\u0430\u0441\u0441 \u0432 Java \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0430\u0440\u043e\u0439 ClassLoader + FQCN, \u043d\u043e \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e \u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u0443 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 Spring Boot Java \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043a\u0440\u0430\u0439\u043d\u0435 \u0440\u0435\u0434\u043a\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043a\u043b\u0430\u0441\u0441\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0433\u0440\u0443\u0437\u0438\u043b\u0438\u0441\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u043b\u043e\u0430\u0434\u0435\u0440\u0430\u043c\u0438 (\u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c \u0441 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 \u0438\u0437 \u0431\u0443\u0442 \u043a\u043b\u0430\u0441\u0441\u043f\u0430\u0441\u0430 \u0438 \u0442.\u0434.).\u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f com.example.CatalogSync.sync. \u0422\u0430\u043a\u043e\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 Pod-\u0430 \u0438\u043b\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0432 \u043a\u0430\u043a\u043e\u0439 JVM \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0412\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u043e\u043a\u0435\u0439.\u041d\u043e \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u0430\u043b\u043e \u043a\u0442\u043e \u0437\u043d\u0430\u0435\u0442: \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e @Scheduled, \u0442.\u043a. @Scheduled \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f repeatable. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:@Scheduled(cron = &#171;0 0 2 * * *&#187;)@Scheduled(cron = &#171;0 0 14 * * *&#187;)@Scheduled(fixedDelay = 60000)public void sync() {    client.synchronize();}\u041c\u0435\u0442\u043e\u0434 \u043e\u0434\u0438\u043d, \u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0439 \u0442\u0440\u0438. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430, \u043c\u044b \u0441\u043c\u0435\u0448\u0430\u0435\u043c \u0438\u0445 \u0438\u0441\u0442\u043e\u0440\u0438\u044e. \u041f\u043e \u0441\u0443\u0442\u0438, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e @Scheduled \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0434\u0430\u0451\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 taskId \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:&lt;\u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430&gt;.&lt;\u0438\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430&gt;#&lt;\u0432\u0438\u0434 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f&gt;&lt;\u043d\u043e\u043c\u0435\u0440&gt;\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435:com.example.CatalogSync.sync#cron0com.example.CatalogSync.sync#cron1com.example.CatalogSync.sync#fixedDelay0\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043d\u043e\u043c\u0435\u0440 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0443\u043b\u044f \u0441\u0440\u0435\u0434\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439 \u0442\u043e\u0433\u043e \u0436\u0435 \u0432\u0438\u0434\u0430, \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Spring. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443 fixedDelay \u0437\u0434\u0435\u0441\u044c \u043d\u043e\u043c\u0435\u0440 0, \u0445\u043e\u0442\u044f \u043d\u0430 \u043c\u0435\u0442\u043e\u0434\u0435 \u043e\u043d \u0441\u0442\u043e\u0438\u0442 \u0442\u0440\u0435\u0442\u044c\u0438\u043c. \u0414\u043b\u044f fixedRate \u0431\u0443\u0434\u0435\u0442 \u0441\u0432\u043e\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a.\u0412 \u043a\u043e\u0434\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0442\u0430\u043a:runnable + &#171;#&#187; + annotation.suffix()\u0417\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 runnable, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 Spring \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u044f \u0430\u043d\u043d\u043e\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430, \u0430 suffix() \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0438\u0434 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438 \u0435\u0433\u043e \u043d\u043e\u043c\u0435\u0440. \u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 Object.toString() \u0441 identity hash code. \u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 AxelixScheduledAnnotationBeanPostProcessor, \u0430 \u0441\u0431\u043e\u0440\u043a\u0443 ID \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0435.\u0421\u0430\u043c\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 cron-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u0432 ID \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442. \u0422\u043e \u0435\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0432\u0438\u0434\u0430 \u0438 \u043d\u043e\u043c\u0435\u0440\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u043e\u0432\u0443\u044e identity \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442.\u041a\u0430\u043a \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u043f\u043b\u0438\u043a\u0421 taskId \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c, \u043d\u043e \u043e\u043d \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0433\u0443\u0442&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-503115","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/503115","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=503115"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/503115\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=503115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=503115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=503115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}