Supponiamo che il mio utente richieda al mio sistema ES / CQRS di aprire un ticket di supporto:
-
Il controllore invia un comando ask-support , questo comando controlla se l'utente ha abbastanza credito per farlo, quindi emette un evento ask-support .
-
Da qualche parte, un ascoltatore responsabile degli effetti collaterali ottiene questo evento. Chiama un'API di supporto esterna per aprire un ticket e recupera un token da questa chiamata.
-
Invia un comando open-ticket contenente questo token e questo genera un evento ticket aperto .
-
Ora il mio controller dovrebbe restituire il prezioso token al client, ma come?
Con questa logica di pubblicazione / sottoscrizione, il mio ascoltatore non conosce il controller e non può dirgli "hey, il tuo ticket è stato creato, ecco il tuo token".
Potrei avere una proiezione di lettura che si traduce in un elenco di token ticket di supporto e il controller potrebbe chiamarlo fino a quando non viene visualizzato il token (ma ciò non è eccezionale). O in qualche modo abbonarsi temporaneamente ai cambiamenti di proiezione (ma è complesso).
Quale strategia consiglieresti per questo caso? Il mio progetto originale è difettoso?
Grazie