Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    561

    [Microservizi] Interazione sincrona o asincrona

    Buon pomeriggio,

    sto seguendo un corso di formazione online sui micro-servizi in Java.
    Ho capito che la interazione sincrona tra due microservizi si può realizzare sia con RestTemplate che con l'open feign. L'interazione asincrona, invece, si attua con strumenti come RabbitMQ.
    Quello che non mi è chiaro è quando utilizzare tra due microservizi una interazione asincrona e quando utilizzare una interazione sincrona.

    Grazie
    tulipan


  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da tulipan Visualizza il messaggio
    Ho capito che la interazione sincrona tra due microservizi si può realizzare sia con RestTemplate che con l'open feign. L'interazione asincrona, invece, si attua con strumenti come RabbitMQ.
    No, non è quella la questione tra sincrono vs asincrono.

    Anche perché se leggi ad esempio su https://github.com/OpenFeign/feign, vedi nella Roadmap che prossimamente (nel "medio termine" come dicono) introdurranno la possibilità della esecuzione asincrona con il supporto a Future/CompletableFuture e anche al meccanismo dei Reactive Streams. Questa è roba "asincrona".

    La vera questione è che se si usa un middleware di messaggistica tra applicazioni (RabbitMQ, Apache ActiveMQ ecc...) si ottiene un alto disaccoppiamento tra le varie parti.

    Caso basilare:
    codice:
                            +---- AppB
                           /
    AppA ----> broker ----+
                           \
                            +---- AppC

    La AppA invia al broker dei messaggi che contengono tutte le informazioni per generare una "fattura". Le AppB/AppC fanno questo: tirano fuori ciascun messaggio, creano un PDF della fattura e lo inviano all'utente via mail. Essendo due si "bilanciano" il carico (e se non possono aggiungere altre di istanze per carichi maggiori).

    Supponi che la AppC/macchina-C debba essere spenta per manutenzione o che altro. Tutto continua a funzionare, la AppB si prenderà tutti i messaggi, magari sarà un po' più sovraccaricata e/o ci metterà di più ad evadere le fatture ma funzionerà lo stesso. E in tutto questo la AppA non ne "sa" nulla e non ne risente di nulla di questi aspetti.

    Questo è il disaccoppiamento.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    561
    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.