Quali schemi di progettazione utilizzare per lo scambio dei sistemi di messaggistica RabbitMq e Kafka

-5

Questa è una domanda abbastanza generale.

Voglio progettare un insieme di classi e interfacce in modo da poter passare da un sistema di messaggistica all'altro senza modificare il codice, probabilmente tra RabbitMq e Kafka.

La mia preoccupazione principale è come astrarre gli eventi che gestiscono, poiché entrambi i sistemi richiedono gestori di eventi ma, ovviamente, i gestori di eventi su entrambi i sistemi sono diversi.

    
posta user197619 10.05.2017 - 09:19
fonte

1 risposta

0

Suggerirei di separare il modulo della business logic dal modulo di comunicazione.

Il modulo della business logic coprirebbe l'elaborazione dei dati e avrebbe qualche interfaccia con il modulo di logica di comunicazione.

Il modulo di comunicazione si occuperebbe esclusivamente di ricevere e inviare i messaggi, senza alcuna elaborazione dei dati, oltre alla convalida dei dati di base. Il modulo di comunicazione implementerebbe Pattern di strategia , in cui il modulo della logica di business invocherà un'interfaccia esposta del modulo di comunicazione, che, in turn avrebbe due implementazioni: una con RabbitMq e l'altra con Kafka.

Supponendo che la tua applicazione abbia la stessa logica aziendale, indipendentemente dal fatto che tu usi RabbitMq o Kafka (altrimenti non faresti questa domanda), dovresti astrarre quella logica aziendale, non i gestori di eventi di per sé.

Diciamo che Rabbit Mq ha un gestore di eventi ShutDown, e Kafka ha qualcosa chiamato Stop event handler (probabilmente non lo fa, ma per il gusto dell'argomento). Questa funzionalità verrebbe estratta tramite l'interfaccia ICommunication (ad esempio), utilizzando il metodo StopWorking . Quindi, RabbitMq lo implementerebbe usando ShutDown, e Kafka lo implementerebbe usando Stop. Il modulo logico aziendale vedrebbe ICommunication.StopWorking . Qualunque cosa accada al di là di questo non gli interessa e viene separata da quella parte.

    
risposta data 10.05.2017 - 09:33
fonte

Leggi altre domande sui tag