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   

Reply via email to