Distribuzione di ascoltatori di eventi in un'architettura orientata ai servizi distribuita

2

Ho un'architettura di servizio composta da servizi che servono aree comuni dell'applicazione. Esempi di servizi sarebbero:

  • AccountService (gestisce gli account client nel sistema)
  • BillingService (fattura i client per i prodotti configurati)
  • UserService (gestisce utente e gruppi sotto un determinato client)
  • NotificationService (invia notifiche via email / SMS / push / qualsiasi metodo quando si verificano determinati eventi)

Ho un cluster ActiveMQ in cui spingo gli eventi su cui agire ... il che porta alla domanda ...

Dov'è il posto giusto dove mettere un ascoltatore di messaggi che reagisce a un evento ai fini dell'invio di una notifica? Un semplice esempio potrebbe essere: "Voglio avvisare il proprietario dell'account via e-mail quando un nuovo utente viene aggiunto al proprio account."

Questo ascoltatore dovrebbe trovarsi in NotificationService (che deve essere altamente generico) o in UserService (dove viene eseguita l'azione) o in un servizio separato che funge da router?

    
posta Colin M 05.01.2014 - 15:28
fonte

2 risposte

1

Un servizio router ha due problemi.

Si finirebbe con un numero infinito di operazioni su un rapporto di 1: 1 con i messaggi all'interno del sistema e diventare poco maneggevole.

Il servizio router deve conoscere ogni altro servizio.

Aggiungendo un ascoltatore all'interno di ciascun servizio si limitano gli ascoltatori solo alla loro responsabilità verso il servizio. Seguendo la tua logica, avrebbe più senso aggiungere l'operazione al UserService (che potrebbe chiamare NotificationService per eseguire il lavoro effettivo).

    
risposta data 05.01.2014 - 16:52
fonte
1

E la mia opinione è che appartiene al NotificationService perché "Voglio notificare il proprietario dell'account via e-mail quando un nuovo utente viene aggiunto al proprio account". È una notifica che sembra essere correlata a un utente.

    
risposta data 04.02.2014 - 23:07
fonte

Leggi altre domande sui tag