Avevo letto che netty gestisce le chiamate asincrone, ma non conosco a fondo. Ciao,jo
Sent from Yahoo Mail on Android On Thu, Mar 29, 2018 at 10:27 PM, '[email protected]' [email protected] [it-torino-java-jug]<[email protected]> wrote: Questa cosa interessa anche me in prima persona.... Anche io sono del filone Spring (Boot in particolare) ed effettivamente giusto qualche giorno fa cercavo un modo per gestire in maniera asincrona le chiamate ai servizi che stanno dietro le mie API (controller nel mio caso). Leggendo Cloud Native Java (http://shop.oreilly.com/product/0636920038252.do) ho trovato una cosa molto simile a quanto suggerito dal tuo collega in effetti. Nonostante sia un grande fan di Spring Boot, nutro un po' di sospetti sull'effettiva efficacia di questa "semplice" annotazione, per cui seguo con molto interesse il thread... Ciao! Marco | | Marco Terrinoni / GDG Manager [email protected] / +393772055208 Google Developer Group Torino | 2018-03-29 16:19 GMT+02:00 Federico Fissore [email protected] [it-torino-java-jug] <[email protected]>: Ciao a tutti l'altro giorno stavo chattando con un collega su CompletableFuture e AsyncResponse di jax.rs. Lui, fan di spring, mi risponde che per rendere una API REST asincrona ti basta scrivere una cosa come @RequestMapping(value = "/callable", method = RequestMethod.GET) public Callable<String> executeSlowTask() { Callable<String> callable = taskService.execute(); return callable; } Cioè wrappa in un Callable tutto il codice sincrono e sequenziale che hai, punto. L'approccio non mi ha convinto. Tutte le attività potenzialmente asyncrone, come le query verso un db o le chiamate http ad altri servizi, vengono trattate come sincrone e gestite dal thread del thread pool con cui `taskService` lavora. Poi ho pensato che in effetti non ho fatto una scelta migliore quando ho convertito tutte le API (java) a CompletableFuture, che di default si basa sul `ForkJoinPool.commonPool()`, di nuovo un unico thread pool comune a tutti i task. Quindi qual è il modo migliore per far fare alla CPU altro lavoro mentre è in attesa del risultato di una query? Oppure ha ragione il mio collega e potevo risparmiarmi del lavoro? federico #yiv8439434848 #yiv8439434848 -- #yiv8439434848ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv8439434848 #yiv8439434848ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv8439434848 #yiv8439434848ygrp-mkp #yiv8439434848hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv8439434848 #yiv8439434848ygrp-mkp #yiv8439434848ads {margin-bottom:10px;}#yiv8439434848 #yiv8439434848ygrp-mkp .yiv8439434848ad {padding:0 0;}#yiv8439434848 #yiv8439434848ygrp-mkp .yiv8439434848ad p {margin:0;}#yiv8439434848 #yiv8439434848ygrp-mkp .yiv8439434848ad a {color:#0000ff;text-decoration:none;}#yiv8439434848 #yiv8439434848ygrp-sponsor #yiv8439434848ygrp-lc {font-family:Arial;}#yiv8439434848 #yiv8439434848ygrp-sponsor #yiv8439434848ygrp-lc #yiv8439434848hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv8439434848 #yiv8439434848ygrp-sponsor #yiv8439434848ygrp-lc .yiv8439434848ad {margin-bottom:10px;padding:0 0;}#yiv8439434848 #yiv8439434848actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv8439434848 #yiv8439434848activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv8439434848 #yiv8439434848activity span {font-weight:700;}#yiv8439434848 #yiv8439434848activity span:first-child {text-transform:uppercase;}#yiv8439434848 #yiv8439434848activity span a {color:#5085b6;text-decoration:none;}#yiv8439434848 #yiv8439434848activity span span {color:#ff7900;}#yiv8439434848 #yiv8439434848activity span .yiv8439434848underline {text-decoration:underline;}#yiv8439434848 .yiv8439434848attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv8439434848 .yiv8439434848attach div a {text-decoration:none;}#yiv8439434848 .yiv8439434848attach img {border:none;padding-right:5px;}#yiv8439434848 .yiv8439434848attach label {display:block;margin-bottom:5px;}#yiv8439434848 .yiv8439434848attach label a {text-decoration:none;}#yiv8439434848 blockquote {margin:0 0 0 4px;}#yiv8439434848 .yiv8439434848bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv8439434848 .yiv8439434848bold a {text-decoration:none;}#yiv8439434848 dd.yiv8439434848last p a {font-family:Verdana;font-weight:700;}#yiv8439434848 dd.yiv8439434848last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv8439434848 dd.yiv8439434848last p span.yiv8439434848yshortcuts {margin-right:0;}#yiv8439434848 div.yiv8439434848attach-table div div a {text-decoration:none;}#yiv8439434848 div.yiv8439434848attach-table {width:400px;}#yiv8439434848 div.yiv8439434848file-title a, #yiv8439434848 div.yiv8439434848file-title a:active, #yiv8439434848 div.yiv8439434848file-title a:hover, #yiv8439434848 div.yiv8439434848file-title a:visited {text-decoration:none;}#yiv8439434848 div.yiv8439434848photo-title a, #yiv8439434848 div.yiv8439434848photo-title a:active, #yiv8439434848 div.yiv8439434848photo-title a:hover, #yiv8439434848 div.yiv8439434848photo-title a:visited {text-decoration:none;}#yiv8439434848 div#yiv8439434848ygrp-mlmsg #yiv8439434848ygrp-msg p a span.yiv8439434848yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv8439434848 .yiv8439434848green {color:#628c2a;}#yiv8439434848 .yiv8439434848MsoNormal {margin:0 0 0 0;}#yiv8439434848 o {font-size:0;}#yiv8439434848 #yiv8439434848photos div {float:left;width:72px;}#yiv8439434848 #yiv8439434848photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv8439434848 #yiv8439434848photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv8439434848 #yiv8439434848reco-category {font-size:77%;}#yiv8439434848 #yiv8439434848reco-desc {font-size:77%;}#yiv8439434848 .yiv8439434848replbq {margin:4px;}#yiv8439434848 #yiv8439434848ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv8439434848 #yiv8439434848ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv8439434848 #yiv8439434848ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv8439434848 #yiv8439434848ygrp-mlmsg select, #yiv8439434848 input, #yiv8439434848 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv8439434848 #yiv8439434848ygrp-mlmsg pre, #yiv8439434848 code {font:115% monospace;}#yiv8439434848 #yiv8439434848ygrp-mlmsg * {line-height:1.22em;}#yiv8439434848 #yiv8439434848ygrp-mlmsg #yiv8439434848logo {padding-bottom:10px;}#yiv8439434848 #yiv8439434848ygrp-msg p a {font-family:Verdana;}#yiv8439434848 #yiv8439434848ygrp-msg p#yiv8439434848attach-count span {color:#1E66AE;font-weight:700;}#yiv8439434848 #yiv8439434848ygrp-reco #yiv8439434848reco-head {color:#ff7900;font-weight:700;}#yiv8439434848 #yiv8439434848ygrp-reco {margin-bottom:20px;padding:0px;}#yiv8439434848 #yiv8439434848ygrp-sponsor #yiv8439434848ov li a {font-size:130%;text-decoration:none;}#yiv8439434848 #yiv8439434848ygrp-sponsor #yiv8439434848ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv8439434848 #yiv8439434848ygrp-sponsor #yiv8439434848ov ul {margin:0;padding:0 0 0 8px;}#yiv8439434848 #yiv8439434848ygrp-text {font-family:Georgia;}#yiv8439434848 #yiv8439434848ygrp-text p {margin:0 0 1em 0;}#yiv8439434848 #yiv8439434848ygrp-text tt {font-size:120%;}#yiv8439434848 #yiv8439434848ygrp-vital ul li:last-child {border-right:none !important;}#yiv8439434848
