Domanda

Mi piacerebbe sapere:

Ho un piano d'azione. Se un utente aggiunge un prodotto al sistema (sto sviluppando), c'è un ascoltatore che invia una notifica al base di clienti di notifica da parte dell'utente di un nuovo prodotto aggiunto da parte dell'utente.

Ho letto questo filo e (non ho mai visto JMS usato né ThreadPool prima) mi chiedevo se devo usare JMS o ThreadPooling.

Sto usando Tomcat 5.5 e superiori e JBoss 5 e superiori (seconda azienda ultima risorsa) per distribuire la mia applicazione web.

Se io uso JMS, fare uso Apache ActiveMQ o JBoss Messaging ? Sono entrambi compatibili per funzionare su entrambe le piattaforme (Tomcat e JBoss)?

Grazie in anticipo.

È stato utile?

Soluzione

Per la comunicazione tra le applicazioni, JMS è una buona soluzione, soprattutto per eventi e notifiche. JMS permette che tali notifiche essere inviati e ricevuti utilizzando ciò che è noto come la messaggistica asincrona cui il mittente e il destinatario non conoscono l'un l'altro e nessun requisito di essere disponibile allo stesso tempo.

ActiveMQ è un broker messaggio molto diffuso che fornisce API client per Java, C / C ++, C #, Perl, PHP, Python, Ruby e altro ancora. Questo consente l'utilizzo di JMS con le applicazioni scritte in Java e altri linguaggi.

Ho implementato JMS di messaggistica molte, molte volte per una grande varietà di situazioni aziendali a eventi maniglia e notifiche. La stragrande maggioranza di questi tempi, ho raccomandato e / o utilizzati Primavera JMS non importa quale broker di messaggi viene utilizzato. Primavera JMS è incredibilmente facile da usare, estremamente robusta e altamente scalabile. Primavera JMS elimina la complessità di creare il proprio messaggio di produttori e consumatori di messaggi, che possono risparmiare una quantità enorme di tempo.

Per vedere quanto sia facile per inviare messaggi utilizzando Primavera JMS, controlla un post sul blog che ho scritto di recente intitolato Uso della primavera JmsTemplate per inviare messaggi JMS . Sto anche lavorando su un post del blog di ricevere messaggi utilizzando Primavera JMS.

Se avete ulteriori domande, fatemelo sapere.

Bruce

Altri suggerimenti

Ho avuto un requisito simile una volta, e abbiamo usato JMS. Poi problema principale era come gestire gli errori perché SMTP non è infatti transazionale:

  1. è ok se un po 'di e-mail vengono persi?
  2. è ok se un po 'di e-mail vengono inviate due volte?

abbiamo deciso che era meglio mandare il messaggio due volte, e qui è più o meno il progetto che abbiamo avuto:

  1. Ci siamo affidati a container gestito transazioni e se per qualche motivo l'e-mail non può essere inviata, abbiamo deciso di rollback della transazione JMS; il messaggio sarebbe stato riconsegnato dopo da JMS e un nuovo tentativo di inviare il messaggio è stato fatto.

  2. Se l'operazione di consegna di messaggi JMS venuto a mancare dopo l'email è stata inviata (per esempio a causa di un problema con JMS), la transazione sarebbe rollback automaticamente e il messaggio è stato riconsegnato in seguito. In questo caso, l'email è stata inviata due volte perché SMTP non è transazionale.

  3. Anche se l'e-mail può essere inviata (dal punto di vista del codice), il server SMTP può ancora avere problemi in seguito. In questo caso, i JMS sono stati consegnati e consumati, così abbiamo avuto modo di sapere che e-mail sono stati trasformati e come ri-inviare manualmente.

Ma eravamo già usando JMS. Non mi presento JMS solo per questo, dato che l'argomento principale è che JMS è transazionale, ma SMTP non è in ogni caso.

Vorrei andare per qualcosa di più leggero - possibilmente con un ThreadPool - e memorizzare lo stato in una banca dati per sapere quale necessità e-mail per essere inviato o è stato inviato. Se ci sono alcuni problemi, si può guardare alla banca dati e prendere le decisioni ad hoc.

So che questa risposta è molto tardi per questo dicsussion, ma spero che sarà ancora preziosa per le persone che cercano informazioni sull'integrazione ActiveMQ e Tomcat.

ho avuto molte persone mi chiedono aiuto per problemi che hanno avuto l'integrazione di ActiveMQ e Tomcat così ho deciso di scrivere alcuni articoli su di esso. Non solo questo argomento coperto in ActiveMQ in azione (vedi capitolo 8), ma ho anche pubblicato una serie di articoli su è intitolato ActiveMQ e Tomcat: Perfect Partner . Speriamo che la gente troverà questa utile.

Vorrei andare per un JMS persistenti (ho usato solo WLS JMS e WebSphere MQ in modo da non si può paragonare AQ vs JBoss, a seconda di quale offre una garanzia migliore per la consegna). Inoltre, vorrei prendere in seria considerazione rendendo il motore e-mail un'applicazione completamente separata, a seconda di quanto si aspetta il traffico di crescere.

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