come scrivere una fabbrica di attività in java 8

0

Ho vari tipi di compiti, ogni attività implica quanto segue -

  1. Utilizza un XyzAPIProvider per interrogare e ottenere un payload
  2. converti il carico utile in un elenco di XyzDTOs (ModelMapper)
  3. converti l'elenco di DTO nell'elenco delle entità (XyzDto2EntityConverter)
  4. memorizza le entità nel database utilizzando il repository JPA (XyzRepository)

Ho intenzione di utilizzare Java ExecutorService per eseguire l'attività in una sua discussione.

Ogni attività implementerà Runnable e sostituirà il metodo run.

Voglio che un'istanza particolare venga istanziata e accodata a executorService a seconda del tipo di attività che la mia applicazione ottiene da una coda di lavoro.

Voglio capire qual è il modello di progettazione corretto applicabile qui? Con le mie conoscenze limitate, vedo una sorta di TaskFactory che accetta un tipo di lavoro e restituisce l'istanza di una determinata attività. Ma all'interno di TaskFactory, vedo che il metodo factory ha molto se poi altro. Esiste un modo migliore? Java 8 fornisce dei costrutti per questo caso d'uso?

    
posta comiventor 25.12.2017 - 19:52
fonte

1 risposta

0

Il tuo design delinea già Pattern di livellamento del carico in base alla coda . Hai

  • attività nel database
  • un esecutore di servizi
  • una coda che disaccoppia i lavori in arrivo dall'esecutore.

Ciò che deve essere fatto è prendere le attività dal database e convertirle in messaggi che possono essere memorizzati nella coda. L'esecutore elabora quindi gli elementi della coda al proprio ritmo.

Nel passaggio 2 si creano alcuni DTO. Forse questi potrebbero anche essere i messaggi che vengono messi in coda? I DTO devono avere una classe genitore comune in modo che possano essere archiviati in coda. Con questo design è necessario implementare il programma di mappatura entità-to-dto nel caso in cui non lo possiedi già.

    
risposta data 27.12.2017 - 10:20
fonte

Leggi altre domande sui tag