Pregunta

Me gustaría saber:

Tengo un escenario. Si un usuario añade un producto al sistema (que estoy desarrollando), hay un oyente que envía una notificación que notifica base de clientes del usuario de un nuevo producto añadido por el usuario.

He leído esta hilo y (siendo así que nunca he JMS usado ni ThreadPool antes) me preguntaba si debería utilizar JMS o ThreadPooling.

Estoy utilizando Tomcat 5.5 y superiores y JBoss 5 o superior (dependiendo de la compañía último recurso) para desplegar mi aplicación web.

Si utilizo JMS, hacer uso Apache ActiveMQ o JBoss Messaging ? ¿Son compatibles tanto para funcionar en ambas plataformas (Tomcat y JBoss)?

Gracias de antemano.

¿Fue útil?

Solución

Para la comunicación entre aplicaciones, JMS es una solución muy buena, especialmente para eventos y notificaciones. JMS permite que tales notificaciones se envían y se reciben utilizando lo que se conoce como la mensajería asincrónica mediante el cual el emisor y el receptor no tienen conocimiento de otros y sin necesidad de estar disponibles al mismo tiempo.

ActiveMQ es un intermediario de mensajes muy ampliamente utilizado que proporciona API de cliente para Java, C / C ++, C #, Perl, PHP, Python, Ruby y más. Esto permite el uso de JMS con aplicaciones escritas en Java y otros lenguajes.

Me han implementado JMS mensajería muchas, muchas veces para una gran variedad de situaciones de negocios a eventos mango y notificaciones. La gran mayoría de estos tiempos, he recomendado y / o usado Spring JMS no importa qué intermediario de mensajes se está utilizando. Primavera JMS es increíblemente fácil de usar, extremadamente robusto y altamente escalable. Primavera JMS elimina la complejidad de la creación de su propia productores y consumidores de mensajes de mensajes, lo que le puede ahorrar una enorme cantidad de tiempo.

Para ver lo fácil que es para enviar mensajes a través de la primavera JMS, echa un vistazo a un post que escribí recientemente titulado Uso de la JmsTemplate primavera para enviar mensajes JMS . También estoy trabajando en una entrada de blog sobre la recepción de mensajes a través de la primavera JMS.

Si usted tiene alguna pregunta, hágamelo saber.

Bruce

Otros consejos

Yo tenía un requisito similar una vez, y que utiliza JMS. Entonces principal problema era cómo hacer frente a los errores, porque de hecho no es SMTP transaccional:

  1. ¿Está bien si algunos de correo electrónico se pierden?
  2. ¿Está bien si algunos de correo electrónico se envían dos veces?

decidió que era mejor para enviar el mensaje dos veces, y aquí es más o menos el diseño que tenía:

  1. Nos basamos en la transacción contenedor administrado y si por alguna razón el mensaje no puede ser enviado, decidimos deshacer la transacción JMS; el mensaje podría ser entregado de nuevo más tarde por JMS y se hizo un nuevo intento de enviar el mensaje.

  2. Si la transacción de entrega de mensaje JMS falló después el correo electrónico fue enviado (por ejemplo debido a un problema con JMS), la transacción se revierte automáticamente y el mensaje fue entregado de nuevo más tarde. En este caso, el correo electrónico fue enviado dos veces porque SMTP no es transaccional.

  3. Incluso si el correo electrónico se puede enviar (desde el punto de vista de código), el servidor SMTP puede todavía tienen problema más adelante. En este caso, las JMS se han entregado y se consume, así que no tenía manera de saber qué correo electrónico había sido procesado y la forma de re-enviar manualmente.

Pero ya estábamos utilizando JMS. No me presento JMS sólo por eso ya que el principal argumento es que JMS es transaccional, pero SMTP no es de todos modos.

Me iría por algo más ligero - posiblemente con un ThreadPool - y almacenar el estado de una base de datos para saber qué necesidad de correo electrónico que se envía o se ha enviado. Si hay algún problema, se puede ver en la base de datos y tomar las decisiones ad-hoc.

Yo sé que esta respuesta es muy tarde para esta dicsussion, pero espero que todavía será valiosa para las personas que buscan información sobre la integración de ActiveMQ y Tomcat.

Yo he tenido muchas personas me piden ayuda con los problemas que han tenido la integración de ActiveMQ y Tomcat, así que decidí escribir algunos artículos al respecto. No sólo es este tema cubierto en ActiveMQ en Acción (véase el capítulo 8), pero también publicó una serie de artículos sobre tituló ActiveMQ y Tomcat: Perfect Partners . Espero que la gente encuentra útil esta información.

Me iría por unos JMS persistentes (he utilizado solamente WLS JMS y WebSphere MQ por lo que no se puede comparar AQ vs JBoss, cualquiera ofertas una mejor garantía para la entrega). Además, me gustaría considerar seriamente la posibilidad de hacer el motor de correo electrónico de una aplicación completamente separado, dependiendo de cuánto se espera que el crecimiento del tráfico.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top