Domanda

Sto lavorando a un sistema di messaggistica/notifica per i nostri prodotti.I requisiti fondamentali sono:

  • Spara e dimentica
  • Insieme persistente di messaggi, possibilmente in aggiornamento, che rimangono lì finché il mittente non dice di rimuoverli

Le librerie saranno scritte in C#.Spring.NET ha appena rilasciato una build fondamentale con molte belle astrazione di messaggistica, il che è fantastico: ho intenzione di utilizzarlo ampiamente.La mia domanda di base si riduce alla questione dei broker di messaggi.La mia architettura assomiglierà a app -> coda del broker di messaggi -> app server che ascolta, invia tutti i messaggi dove devono andare e gestisce il ciclo di vita di quei messaggi di lunga durata -> coda o argomento del broker di messaggi -> ascolto app.

Infine la domanda:Quale broker di messaggi dovrei utilizzare?Sono di parte verso ActiveMQ - L'abbiamo usato nel nostro ultimo progetto e l'abbiamo adorato.Non riesco davvero a pensare a un singolo attacco contro di esso, tranne che è Java e richiederà che Java sia installato su un server da qualche parte, e potrebbe essere difficile da vendere ad alcune delle persone che utilizzeranno questo servizio.L'altra opzione che ho considerato è MSMQ.Sono prevenuto contro di esso per qualche motivo sconosciuto e inoltre non sembra avere un ottimo supporto multicast.

Qualcuno ha usato MSMQ per qualcosa di simile?Ci sono pro o contro, cose che potrebbero influenzare il voto in un modo o nell'altro?

Un'ultima cosa, stiamo utilizzando .NET 2.0.

È stato utile?

Soluzione

Sono un po' di parte mentre lavoro ActiveMQ ma praticamente tutti i vantaggi elencati sopra per MSMQ si applicano anche ad ActiveMQ.

Alcuni ulteriori vantaggi di ActiveMQ includono

Lo svantaggio principale che menzioni è che il broker ActiveMQ è scritto in Java;ma puoi eseguirlo su IKVM come assembly .net se lo desideri davvero, oppure eseguirlo come servizio Windows o compilarlo in una DLL/EXE tramite GCJ.MSMQ può o meno essere scritto in .NET, ma non importa molto come viene implementato, giusto?

Indipendentemente dal fatto che tu scelga MSMQ o ActiveMQ, consiglierei almeno di considerare l'utilizzo di API NMS che, come dici tu, è perfettamente integrato in Spring.NET.Esiste un'implementazione MSMQ di questa API nonché implementazioni per TibCo, ActiveMQ e STOMP che supporteranno qualsiasi altro provider JMS tramite StompConnect.

Pertanto, scegliendo NMS come API eviterai di vincolarti a qualsiasi tecnologia proprietaria e potrai quindi cambiare facilmente fornitore di messaggistica in qualsiasi momento;invece di bloccare tutto il codice in un'API proprietaria

Altri suggerimenti

Pro per MSMQ.

  • È integrato in Windows
  • Supporta le transazioni, supporta anche le code senza transazioni
  • È davvero facile da configurare
  • Integrazione AD
  • È veloce, ma dovresti confrontare ActiveMQ e MSMQ affinché il tuo traffico sappia quale è più veloce.
  • .NET lo supporta natività
  • Supporta il fuoco e dimentica
  • Puoi sbirciare la coda, se hai lettori che si limitano a guardare.non sono sicuro di poter modificare un messaggio in coda.

Contro:

  • Limite dimensione messaggio 4MB
  • Limite dimensione coda 2 GB
  • Gli elementi della coda vengono conservati su disco
  • Non è un prodotto MS tradizionale, i documenti sono un po' incerti, o sono passati alcuni anni da quando lo ho usato.

Ecco un buon blog per MSMQ

Dare un'occhiata a zero mq.È una delle code di messaggi più veloci in circolazione.

Ti suggerisco di dare un'occhiata a TIBCO Enterprise Messaging Service - EMS, che è un prodotto di messaggistica ad alte prestazioni che supporta multicasting, routing, supporta le specifiche JMS e fornisce funzionalità a livello aziendale inclusi i tuoi requisiti come fire-forget e persistenza dei messaggi utilizzando file/database utilizzando stato condiviso.

Come riferimento, FedEx funziona su TIBCO EMS come infrastruttura di messaggistica.

http://www.tibco.com/software/messaging/enterprise_messaging_service/default.jsp

Ci sono molti altri riferimenti se li fornissi, rimarrai davvero sorpreso.

Ci sono così tante opzioni in quell'arena...

Gratuito:MantaRay un sistema peer to peer completamente compatibile con JMS.La parte interessante di Mantaray è che devi solo definire dove va il messaggio e MantaRay lo instrada comunque in modo da portare il tuo messaggio alla sua destinazione, quindi è più resistente ai guasti dei singoli nodi nel tuo tessuto di messaggistica.

Pagato:Nel mio lavoro quotidiano amministro un sistema di messaggistica IBM WebSphere MQ con diverse centinaia di nodi e l'ho trovato molto buono.Recentemente abbiamo acquistato anche Tibco EMS e sembra che sarà anche molto carino da usare.

Paolo/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top