{"id":94393,"date":"2020-09-16T07:43:43","date_gmt":"2020-09-16T05:43:43","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/mikroservisy-s-kommunikacziej-cherez-axon"},"modified":"2020-09-16T07:43:43","modified_gmt":"2020-09-16T05:43:43","slug":"mikroservisy-s-kommunikacziej-cherez-axon","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/mikroservisy-s-kommunikacziej-cherez-axon","title":{"rendered":"Mikrosh\u00ebrbimet me komunikim p\u00ebrmes Axon","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>N\u00eb k\u00ebt\u00eb tutorial t\u00eb thjesht\u00eb, ne do t\u00eb krijojm\u00eb disa mikrosherbime n\u00eb Spring Boot dhe do t\u00eb organizojm\u00eb nd\u00ebrveprimin midis tyre p\u00ebrmes kuadrit Axon.<\/p>\n<p><img decoding=\"async\" alt=\"Mikrosh\u00ebrbimet me komunikim p\u00ebrmes Axon\" src=\"\/wp-content\/uploads\/2020\/09\/d570cdb88653309c2f5b382509e5c2a9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<i>Supozoni se kemi nj\u00eb detyr\u00eb t\u00eb till\u00eb.<\/i><\/p>\n<p>Ka nj\u00eb burim t\u00eb tregtis\u00eb n\u00eb tregun e aksioneve. Ky burim na p\u00ebrcjell tregtit\u00eb p\u00ebrmes nj\u00eb interfacesh Rest. <\/p>\n<p>Na nevojitet t\u00eb marrim k\u00ebto tregti, t\u2019i ruajm\u00eb n\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash dhe t\u00eb krijojm\u00eb nj\u00eb ruajtje t\u00eb p\u00ebrshtatshme n\u00eb memorien e serverit. <\/p>\n<p>Kjo ruajtje duhet t\u00eb kryej\u00eb funksionet e m\u00ebposhtme:<\/p>\n<ul>\n<li> t\u00eb kthej\u00eb nj\u00eb list\u00eb tregtish;<\/li>\n<li> t\u00eb kthej\u00eb pozitat e plota, dmth. nj\u00eb tabel\u00eb \"instrument\" \u2014 \"numri aktual i aksioneve\";<\/li>\n<li> t\u00eb kthej\u00eb pozitat sipas nj\u00eb instrumenti t\u00eb caktuar.<\/li>\n<\/ul>\n<p>\n<i>Si do t'i qasemi zgjidhjes s\u00eb k\u00ebsaj detyre? <\/i><\/p>\n<p>Sipas parimeve t\u00eb mikrosherbimeve, na nevojitet t\u00eb ndajm\u00eb detyr\u00ebn n\u00eb mikrosherbime p\u00ebrb\u00ebr\u00ebse:<\/p>\n<ul>\n<li> marrja e tregtis\u00eb p\u00ebrmes Rest;<\/li>\n<li> ruajtja e tregtis\u00eb n\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash;<\/li>\n<li> ruajtje n\u00eb memorien e serverit p\u00ebr paraqitjen e t\u00eb dh\u00ebnave t\u00eb pozitat.<\/li>\n<\/ul>\n<p>\nLe t\u00eb krijojm\u00eb n\u00eb kuad\u00ebr t\u00eb k\u00ebtij tutoriali sh\u00ebrbimin e par\u00eb dhe t\u00eb tret\u00eb, nd\u00ebrsa t\u00eb dytin ta l\u00ebm\u00eb p\u00ebr pjes\u00ebn e dyt\u00eb (na shkruani n\u00eb komente n\u00ebse kjo ju intereson).<\/p>\n<p>Pra, ne kemi dy mikrosherbime. <\/p>\n<p>I pari merr t\u00eb dh\u00ebnat nga jasht\u00eb. <\/p>\n<p>I dyti i p\u00ebrpunon k\u00ebto t\u00eb dh\u00ebna dhe p\u00ebrgjigjet k\u00ebrkesave hyr\u00ebse. <\/p>\n<p>Sigurisht d\u00ebshirojm\u00eb t\u00eb arrijm\u00eb shkall\u00ebzimin horizontal, rinovimin pa nd\u00ebrprerje dhe p\u00ebrfitime t\u00eb tjera t\u00eb mikro_sh\u00ebrbimeve.<\/p>\n<p><i>Cila \u00ebsht\u00eb, n\u00eb t\u00eb v\u00ebrtet\u00eb, nj\u00eb detyr\u00eb mjaft e v\u00ebshtir\u00eb q\u00eb kemi p\u00ebrpara?<\/i><\/p>\n<p>N\u00eb fakt, ka shum\u00eb, por tani le t\u00eb flasim se si do t\u00eb shkojn\u00eb t\u00eb dh\u00ebnat midis k\u00ebtyre mikro_sh\u00ebrbimeve. Nd\u00ebrmjet tyre mund t\u00eb p\u00ebrdorim Rest, mund t\u00eb vendosim ndonj\u00eb radh\u00eb, mund t\u00eb imagjinojm\u00eb shum\u00eb gj\u00ebra me p\u00ebrfitimet dhe disavantazhet e tyre.<\/p>\n<p>Le t\u00eb shqyrtojm\u00eb nj\u00eb nga qasjet e mundshme \u2013 nd\u00ebrveprimin asinkron p\u00ebrmes <b>Axon-framework<\/b>.<\/p>\n<p><i>Cilat jan\u00eb p\u00ebrfitimet e k\u00ebsaj zgjidhjeje?<\/i><\/p>\n<p>S\u00eb pari, nd\u00ebrveprimi asinkron rrit fleksibilitetin (po, ka k\u00ebtu edhe nj\u00eb disavantazh, por tani jemi duke folur vet\u00ebm p\u00ebr p\u00ebrfitimet). <\/p>\n<p>S\u00eb dyti, direkt nga kutia ne marrim <b>Event Sourcing<\/b> dhe <b>CQRS<\/b>. <br \/>\nS\u00eb treti, Axon ofron nj\u00eb infrastruktur\u00eb t\u00eb gatshme, dhe ne duhet t\u00eb p\u00ebrqendrohemi vet\u00ebm n\u00eb zhvillimin e logjik\u00ebs s\u00eb biznesit.<\/p>\n<p>Le t\u00eb fillojm\u00eb.<\/p>\n<p>Projekti yn\u00eb do t\u00eb jet\u00eb n\u00eb gradle. N\u00eb t\u00eb do t\u00eb ket\u00eb tre module: <\/p>\n<ul>\n<li> common. moduli me strukturat e zakonshme t\u00eb t\u00eb dh\u00ebnave (ne nuk i p\u00eblqejm\u00eb kopjimet);<\/li>\n<li> tradeCreator. moduli me mikro_sh\u00ebrbimin p\u00ebr pranimin e transaksioneve p\u00ebrmes Rest;<\/li>\n<li> tradeQueries. moduli me mikro_sh\u00ebrbimin p\u00ebr shfaqjen e pozicionit.<\/li>\n<\/ul>\n<p>\nDo t\u00eb marrim Spring Boot si baz\u00eb dhe do t\u00eb lidhim starter-in e Axon-it.<\/p>\n<p>Axon punon shk\u00eblqyer edhe pa Spring, por ne do t'i p\u00ebrdorim ato s\u00eb bashku.<\/p>\n<p>K\u00ebtu duhet t\u00eb ndalojm\u00eb dhe t\u00eb flasim pak p\u00ebr Axon. <\/p>\n<p>Kjo \u00ebsht\u00eb nj\u00eb sistem klient-server. Ka nj\u00eb server \u2013 \u00ebsht\u00eb nj\u00eb aplikacion i ndar\u00eb, ne do ta \u00e7ojm\u00eb n\u00eb docker. <\/p>\n<p>Dhe ka klient\u00eb q\u00eb integrohen n\u00eb mikrosh\u00ebrbime. <br \/>\nK\u00ebshtu kemi nj\u00eb imazh. S\u00eb pari, aktivizohet serveri Axon (n\u00eb docker), pastaj mikrosh\u00ebrbimet tona. <\/p>\n<p>Kur startojn\u00eb, mikrosh\u00ebrbimet k\u00ebrkojn\u00eb serverin dhe fillojn\u00eb t\u00eb bashk\u00ebveprojn\u00eb me t\u00eb. Bashk\u00ebveprimi mund t\u00eb ndahet n\u00eb dy lloje: teknik dhe biznesor. <\/p>\n<p>Tekniku \u2013 \u00ebsht\u00eb shk\u00ebmbim mesazheve \"jam gjall\u00eb\" (k\u00ebto mesazhe mund t\u00eb shihen n\u00eb modalitetin e regjistrimit debug). <\/p>\n<p>Biznesori \u2013 \u00ebsht\u00eb shk\u00ebmbim mesazhesh si \"transaksion i ri\".<\/p>\n<p>Nj\u00eb ve\u00e7ori e r\u00ebnd\u00ebsishme, pas aktivizimit mikrosh\u00ebrbimi mund t\u00eb pyes\u00eb Axon-serverin \"\u00e7far\u00eb ndodhi\" dhe serveri i d\u00ebrgon mikrosh\u00ebrbimit ngjarjet e grumbulluara. N\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, mikrosh\u00ebrbimi mund t\u00eb rstartohet relativisht n\u00eb siguri pa humbur t\u00eb dh\u00ebna. <br \/>\nMe k\u00ebt\u00eb skem\u00eb shk\u00ebmbimi ne mund t\u00eb aktivizojm\u00eb shum\u00eb instanca t\u00eb mikrosh\u00ebrbimeve shum\u00eb leht\u00eb, <br \/>\nmadje n\u00eb hoste t\u00eb ndrysh\u00ebm.<\/p>\n<p>Po, nj\u00eb instanc\u00eb e vetme e Axon-serverit nuk \u00ebsht\u00eb e besueshme, por p\u00ebr momentin k\u00ebshtu \u00ebsht\u00eb.<\/p>\n<p>Ne punojm\u00eb n\u00eb paradigmat e Event Sourcing dhe CQRS. Kjo do t\u00eb thot\u00eb se ne duhet t\u00eb kemi \"komanda\", \"ngjarje\" dhe \"selektime\". <\/p>\n<p>Kemi nj\u00eb komand\u00eb: \"krijo biznesin\", nj\u00eb ngjarje \"biznesi i krijuar\" dhe tri selektime: \"trego t\u00eb gjitha bizneset\", \"trego pozitat\", \"trego pozitat sipas mjetit\".<\/p>\n<p>Skema e pun\u00ebs del si kjo: <\/p>\n<ol>\n<li> Mikrosit\u00eb tradeCreator pranon nj\u00eb biznes p\u00ebrmes Rest.<\/li>\n<li> Mikrosit\u00eb tradeCreator krijon nj\u00eb komand\u00eb \"krijo biznesin\" dhe e d\u00ebrgon at\u00eb n\u00eb serverin Axon.<\/li>\n<li> Serveri Axon pranon komand\u00ebn dhe e d\u00ebrgon at\u00eb tek marr\u00ebsi i interesuar, n\u00eb rastin ton\u00eb, mikrosit\u00eb tradeCreator.<\/li>\n<li> Mikrosit\u00eb tradeCreator merr komand\u00ebn, formon ngjarjen \"biznes i krijuar\" dhe e d\u00ebrgon at\u00eb n\u00eb serverin Axon.<\/li>\n<li> Serveri Axon pranon ngjarjen dhe e d\u00ebrgon at\u00eb tek abonent\u00ebt e interesuar.<\/li>\n<li> Tani kemi vet\u00ebm nj\u00eb marr\u00ebs t\u00eb interesuar \u2013 \u00ebsht\u00eb mikrosit\u00eb tradeQueries.<\/li>\n<li> Mikrosit\u00eb tradeQueries merr ngjarjen dhe p\u00ebrdit\u00ebson t\u00eb dh\u00ebnat e brendshme.<\/li>\n<\/ol>\n<p>\n(\u00cbsht\u00eb e r\u00ebnd\u00ebsishme q\u00eb n\u00eb momentin e formimit t\u00eb ngjarjes mikrosit\u00eb tradeQueries mund t\u00eb mos jet\u00eb e qasshme, por sapo t\u00eb nis\u00eb, ajo do t\u00eb marr\u00eb menj\u00ebher\u00eb ngjarjen).<\/p>\n<p>Po, serveri axon q\u00ebndron n\u00eb qend\u00ebr t\u00eb komunikimeve, t\u00eb gjitha mesazhet kalojn\u00eb p\u00ebrmes tij.<\/p>\n<p><i>Le t\u00eb kalojm\u00eb n\u00eb kodim.<\/i><\/p>\n<p>P\u00ebr t\u00eb mos e mbushur postimin me kode, m\u00eb posht\u00eb do t\u00eb jap vet\u00ebm fragmente, linku p\u00ebr shembullin e plot\u00eb do t\u00eb jet\u00eb m\u00eb posht\u00eb.<\/p>\n<p>T\u00eb fillojm\u00eb me modulin e p\u00ebrbashk\u00ebt common.<\/p>\n<p>N\u00eb t\u00eb, pjes\u00ebt e p\u00ebrbashk\u00ebta jan\u00eb ngjarja (class CreatedTradeEvent). Vini re em\u00ebrtimin, n\u00eb thelb, kjo \u00ebsht\u00eb emri i komand\u00ebs q\u00eb kishte krijuar k\u00ebt\u00eb ngjarje, por n\u00eb koh\u00ebn e kaluar. N\u00eb t\u00eb kaluar\u00ebn, pasi fillimisht shfaqet komanda q\u00eb \u00e7on n\u00eb krijimin e ngjarjes.<\/p>\n<p>Strukturat e tjera t\u00eb p\u00ebrbashk\u00ebta p\u00ebrfshijn\u00eb klasat p\u00ebr t\u00eb p\u00ebrshkruar pozitat (class Position), transaksionet (class Trade) dhe an\u00ebn e transaksionit (enum Side), pra blerje ose shitje.<\/p>\n<p>Kalojm\u00eb n\u00eb modulin tradeCreator. <\/p>\n<p>Ky modul ka nj\u00eb nd\u00ebrfaqe Rest (class TradeController) p\u00ebr t\u00eb pranuar transaksione. <br \/>\nNga transaksioni i pranuar formohet komanda \"krijo transaksion\" dhe d\u00ebrgohet n\u00eb serverin axon.<\/p>\n<pre><code class=\"java\">    @PostMapping(\"\/trade\")\n    public ResponseEntity create(@RequestBody Trade trade) {\n        var createTradeCommand = CreateTradeCommand.builder()\n                .tradeId(trade.getTradeId())\n\t...\n                .build();\n        var result = commandGateway.sendAndWait(createTradeCommand, 3, TimeUnit.SECONDS);\n        return ResponseEntity.ok(result.get().toString());\n    }\n<\/code><\/pre>\n<p>\nP\u00ebr t\u00eb p\u00ebrpunuar komand\u00ebn p\u00ebrdoret klasa class TradeAggregate. <br \/>\nP\u00ebr ta gjetur Axon-in, vendosim anotimin @Aggregate.<br \/>\nMetoda p\u00ebr trajtimin e komand\u00ebs duket k\u00ebshtu (me shkurtime):<\/p>\n<pre><code class=\"java\">    @CommandHandler\n    public TradeAggregate(CreateTradeCommand command) {\n        log.info(\"command: {}\", command);\n        var event = CreatedTradeEvent.builder()\n                .tradeId(command.tradeId())\n\t\t....\n                .build();\n        AggregateLifecycle.apply(event);\n    }\n<\/code><\/pre>\n<p>\nNga komanda formohet nj\u00eb ngjarje dhe d\u00ebrgohet n\u00eb server.<br \/>\nKomanda ndodhet n\u00eb klas\u00ebn CreateTradeCommand.<\/p>\n<p>Tani le t\u00eb shikojm\u00eb modulin e fundit tradeQueries.<\/p>\n<p>K\u00ebrkesat p\u00ebrshkruhen n\u00eb paket\u00ebn queries.<br \/>\nN\u00eb k\u00ebt\u00eb modul ka gjithashtu nj\u00eb nd\u00ebrfaqe Rest<br \/>\npublic class TradeController.<\/p>\n<p>P\u00ebr shembull, le t'i shohim trajtimi i k\u00ebrkes\u00ebs: \"trego t\u00eb gjitha tregjet\".<\/p>\n<pre><code class=\"java\">    @GetMapping(\"\/trade\/all\")\n    public List findAllTrades() {\n        return queryGateway.query(new FindAllTradesQuery(),\n                ResponseTypes.multipleInstancesOf(Trade.class)).join();\n    }\n<\/code><\/pre>\n<p>\nSkizohet nj\u00eb k\u00ebrkes\u00eb p\u00ebr seleksionim dhe d\u00ebrgohet n\u00eb server.<\/p>\n<p>P\u00ebr trajtimin e k\u00ebrkes\u00ebs p\u00ebr seleksionim p\u00ebrdoret klasa TradesEventHandler.<br \/>\nN\u00eb t\u00eb ka nj\u00eb metod\u00eb t\u00eb sh\u00ebnuar me annotim<\/p>\n<pre><code class=\"java\">   @QueryHandler\n    public List handleFindCurrentPositionQuery(FindCurrentPositionQuery query)\n<\/code><\/pre>\n<p>\nAjo \u00ebsht\u00eb p\u00ebrgjegj\u00ebse p\u00ebr seleksionimin e t\u00eb dh\u00ebnave nga ruajtja in-memory.<\/p>\n<p>Ngrihet pyetja, si p\u00ebrdit\u00ebsohet informacioni n\u00eb k\u00ebt\u00eb ruajtje. <\/p>\n<p>T\u00eb fillojm\u00eb me faktin se kjo \u00ebsht\u00eb thjesht nj\u00eb grup i ConcurrentHashMap, i orientuar p\u00ebr seleksionime t\u00eb caktuara. <br \/>\nP\u00ebr p\u00ebrdit\u00ebsimin e tyre p\u00ebrdoret metoda:<\/p>\n<pre><code class=\"java\">    @EventHandler\n    public void on(CreatedTradeEvent event) {\n        log.info(\"event:{}\", event);\n\n        var trade = Trade.builder()\n\t...\n                .build();\n        trades.put(event.tradeId(), trade);\n        position.merge(event.shortName(), event.size(),\n                (oldValue, value) -&gt; event.side() == Side.BUY ? oldValue + value : oldValue - value);\n    }<\/code><\/pre>\n<p>\nAi merr nj\u00eb ngjarje \"tregtia e krijuar\" dhe p\u00ebrdit\u00ebson harta.<\/p>\n<p>K\u00ebto jan\u00eb pikat kryesore t\u00eb zhvillimit t\u00eb mikroservisave.<\/p>\n<p><i>\u00c7far\u00eb mund t\u00eb thuhet p\u00ebr disavantazhet e Axon?<\/i><\/p>\n<p>S\u00eb pari, kjo e komplikon infrastruktur\u00ebn, duke krijuar nj\u00eb pik\u00eb t\u00eb d\u00ebshtimit \u2013 serverin Axon, t\u00eb gjitha komunikimet kalojn\u00eb p\u00ebrmes tij. <\/p>\n<p>S\u00eb dyti, mang\u00ebsia e till\u00eb e sistemeve t\u00eb shp\u00ebrndara shfaqet duksh\u00ebm \u2013 moskoordinimi temporal i t\u00eb dh\u00ebnave. N\u00eb rastin ton\u00eb, midis pranimit t\u00eb nj\u00eb tregtie t\u00eb re dhe p\u00ebrdit\u00ebsimit t\u00eb t\u00eb dh\u00ebnave p\u00ebr seleksionet mund t\u00eb kaloj\u00eb nj\u00eb koh\u00eb shum\u00eb e gjat\u00eb.<\/p>\n<p><i>\u00c7far\u00eb mbeti jasht\u00eb sken\u00ebs?<\/i><\/p>\n<p>Nuk \u00ebsht\u00eb th\u00ebn\u00eb asgj\u00eb p\u00ebr Event Sourcing dhe CQRS, \u00e7far\u00eb jan\u00eb dhe p\u00ebr \u00e7far\u00eb jan\u00eb t\u00eb nevojshme.<br \/>\nPa shpjegimin e k\u00ebtyre koncepteve, disa pika mund t\u00eb mos kuptohen.<\/p>\n<p>Mund t\u00eb jet\u00eb se disa fragmente t\u00eb kodit gjithashtu k\u00ebrkojn\u00eb shpjegim.<\/p>\n<p>P\u00ebr k\u00ebt\u00eb do t\u00eb flasim n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/WrwW\/\">webinarin e hapur<\/a><\/noindex> m\u00eb 21 Shtator.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/petrelevich\/jvm-digging\/tree\/master\/eventSourcing\/axonTrader\">Shembulli i plot\u00eb<\/a><\/noindex>.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/519144\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0430\u0440\u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 Spring Boot \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Axon. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0443 \u043d\u0430\u0441 \u0442\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0415\u0441\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0434\u0435\u043b\u043e\u043a \u043d\u0430 \u0444\u043e\u043d\u0434\u043e\u0432\u043e\u043c \u0440\u044b\u043d\u043a\u0435. \u042d\u0442\u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0441\u0434\u0435\u043b\u043a\u0438 \u043f\u043e Rest-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443. \u041d\u0430\u043c \u043d\u0430\u0434\u043e \u044d\u0442\u0438 \u0441\u0434\u0435\u043b\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u043e\u0435 in-memory \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u042d\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":94394,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-94393","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0430\u0440\u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 Spring Boot \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Axon. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0443 \u043d\u0430\u0441 \u0442\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0415\u0441\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0434\u0435\u043b\u043e\u043a \u043d\u0430 \u0444\u043e\u043d\u0434\u043e\u0432\u043e\u043c \u0440\u044b\u043d\u043a\u0435. \u042d\u0442\u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0441\u0434\u0435\u043b\u043a\u0438 \u043f\u043e Rest-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443. \u041d\u0430\u043c \u043d\u0430\u0434\u043e \u044d\u0442\u0438 \u0441\u0434\u0435\u043b\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u043e\u0435 in-memory \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u042d\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/mikroservisy-s-kommunikacziej-cherez-axon\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0441 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 Axon | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0430\u0440\u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 Spring Boot \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Axon. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0443 \u043d\u0430\u0441 \u0442\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0415\u0441\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0434\u0435\u043b\u043e\u043a \u043d\u0430 \u0444\u043e\u043d\u0434\u043e\u0432\u043e\u043c \u0440\u044b\u043d\u043a\u0435. \u042d\u0442\u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0441\u0434\u0435\u043b\u043a\u0438 \u043f\u043e Rest-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443. \u041d\u0430\u043c \u043d\u0430\u0434\u043e \u044d\u0442\u0438 \u0441\u0434\u0435\u043b\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u043e\u0435 in-memory \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u042d\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/mikroservisy-s-kommunikacziej-cherez-axon\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-16T05:43:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-16T05:43:43+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Mikroservicat me komunikim p\u00ebrmes Axon | ProHoster","description":"N\u00eb k\u00ebt\u00eb udh\u00ebzues t\u00eb thjesht\u00eb, do t\u00eb krijojm\u00eb disa mikros servi\u00e7os n\u00eb Spring Boot dhe do t\u00eb organizojm\u00eb bashk\u00ebpunimin nd\u00ebrmjet tyre p\u00ebrmes planit Axon. Le t\u00eb supozojm\u00eb se kemi nj\u00eb t\u00eb till\u00eb detyr\u00eb. Ka nj\u00eb burim transaksionesh n\u00eb tregun e aksioneve. Ky burim na d\u00ebrgon transaksionet p\u00ebrmes nj\u00eb nd\u00ebrfaqeje Rest. Na nevojitet t\u00eb marrim k\u00ebto transaksione, t'i ruajm\u00eb n\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash dhe t\u00eb krijojm\u00eb nj\u00eb depozit\u00eb n\u00eb memoriesh t\u00eb p\u00ebrshtatshme. Kjo depo duhet t\u00eb kryej\u00eb","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/mikroservisy-s-kommunikacziej-cherez-axon","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0441 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 Axon | ProHoster","og:description":"\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0430\u0440\u0443 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 Spring Boot \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a Axon. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0443 \u043d\u0430\u0441 \u0442\u0430\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0415\u0441\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0434\u0435\u043b\u043e\u043a \u043d\u0430 \u0444\u043e\u043d\u0434\u043e\u0432\u043e\u043c \u0440\u044b\u043d\u043a\u0435. \u042d\u0442\u043e\u0442 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0441\u0434\u0435\u043b\u043a\u0438 \u043f\u043e Rest-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443. \u041d\u0430\u043c \u043d\u0430\u0434\u043e \u044d\u0442\u0438 \u0441\u0434\u0435\u043b\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u043e\u0435 in-memory \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u042d\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/mikroservisy-s-kommunikacziej-cherez-axon","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-16T05:43:43+00:00","article:modified_time":"2020-09-16T05:43:43+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"94393","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:27:34","updated":"2022-10-02 06:08:26"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/94393","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=94393"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/94393\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/94394"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=94393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=94393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=94393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}