Ho un caso d'uso in cui mi viene chiesto di leggere un documento XML che è un elenco di dati, suddividerlo in sotto-elementi di dati e trasformare tali sottoelementi (in ordine) in un altro formato di documento (come un file flat o un array JSON).
Potrei risolvere il problema utilizzando un tipico flusso sincrono, elaborando dapprima l'intero documento XML in oggetti (Java) pertinenti e quindi elaborando tutti gli oggetti. Ciò garantirebbe che l'ordine dell'output sia uguale all'ordine dell'input.
Tuttavia, mi è stato detto che esiste un modello di progettazione che si adatta a questo caso d'uso. La mia ipotesi è che sia uno dei pattern di concorrenza, e quindi la mia impressione è che possa essere implementata con una coda invece che con una raccolta. Il parser XML prende ogni set di dati, lo analizza e lo invia alla coda, mentre un altro thread (o un pool di thread) popoli gli elementi fuori dalla coda e li elabora nel file di output.
Non l'ho implementato prima quindi ho una serie di domande, ma prima vorrei sapere se sono sulla strada giusta?
Un altro caso d'uso è che il design dovrebbe essere in grado di gestire più XML (più brevi) come input da un servizio web. Ogni XML conterrà un set di dati e non vi è alcun obbligo riguardo all'ordine in cui i documenti devono essere presenti nell'output, a condizione che i sotto-elementi di ciascun set di dati siano nell'ordine corretto.
(Modifica) Non sto chiedendo come scegliere un modello di progettazione in generale . Mi sto chiedendo quale modello di design si applica a questo caso d'uso molto specifico .