Chiamate in parallelo

di il
3 risposte

Chiamate in parallelo

Ciao,
ho un servizio che restituisce una lista di utenti. Successivamente viene chiamato un altro servizio che da questa lista prende le matricole e per ognuna va a fare una query per ottenere delle informazioni per settare il dto. Il problema è che si va in time out, bisognerebbe quindi parallelizzare il processo, non mettere la lista del primo servizio in un ciclo, ma lanciare tutto in contemporanea... i thread sono la soluzione a questo problema o c'è altro? ne so zero dei thread, nel caso cosa dovrei andare a vedermi nello specifico?
grazie

3 Risposte

  • Re: Chiamate in parallelo

    Test90 ha scritto:


    i thread sono la soluzione a questo problema o c'è altro? ne so zero dei thread, nel caso cosa dovrei andare a vedermi nello specifico?
    Dipende dal contesto ... che non hai spiegato. Si tratta di: applicazione "console"? Applicazione GUI (es. Swing)? Web application JavaEE classica? Web application con Spring? Altro?

    EDIT: una cosa non ho capito: COSA va in timeout? Una query su DB? Allora bisogna indagare! Java e multi-threading non c'entrerebbero praticamente nulla ..
  • Re: Chiamate in parallelo

    Messa cosi' puo' non voler dire nulla.

    Ad esempio, PERCHE' devi chiamare servizi diversi?

    CHI ha realizzato i servizi?

    I servizi accedono a database distinti o allo stesso database?

    Se accedono allo stsso database, FORSE si puo' realizzare una query PIU' intelligente che ritorna quello che serve

    Ma NON BASTA!

    PERCHE' va in timeout?

    Non dovrebbe capitare MAI!!!

    SE capita, c'e' un problema piu' ""rognoso"" da qualche altra parte che l'uso dei thread NON risolve.

    Ad esempio, NON PUOI lanciare 1000 thread, FORSE qualche decina.

    Quindi NON BASTA dire "con i thread e risolvo", MOOOLTO probabilmente non risolverai nulla.

    In pratica, tu vedi SOLO un effetto (il timeout) del REALE problema (che NON SI SA quale sia).

    Per fare un paragone al giorno d'oggi:

    1) il tuo PROBLEMA e' che hai la febbre (va in timeout)
    2) PENSI che l'aspirna risolva (i thread)
    3) in realta' e' che il VERO problema e' che ti sei beccato il COVID! L'aspirina NON RISOLVE, al piu' MITIGA temporaneamente
  • Re: Chiamate in parallelo

    Ciao,
    rispondo un po' a tutto:
    - è una web-app Spring
    - io ho "ereditato" questo container sviluppato da altri, c'è nello specifico un servizio che fa una chiamata al servizio di un altro container sviluppato da un'altra persona. Teoricamente si sarebbe potuto fare tutto con il primo servizio modificando la query, MA le query ci sono state fornite direttamente dal cliente (non conosciamo il DB, eh...) e si è deciso di suddividere il lavoro per funzionalità (quindi container che recupera solo l'anagrafica utente, container che recupera solo -per dire- gli appuntamenti, ecc ecc) anche se accedono tutti allo stesso db ed a volte alle stesse tabelle. In time out mi spiegavano che ci và il servizio perché abbiamo 20 secondi ma superiamo abbondantemente visto che per ogni matricola (ce ne aspettiamo una 40ina) deve fare tutto il giro spiegato prima per poi partire con la successiva, mentre pensano che si possa risolvere facendo tutto in contemporanea, per questo avevo pensato ai thread (ma mi dicevano max 8 alla volta).
Devi accedere o registrarti per scrivere nel forum
3 risposte