Estaba leyendo acerca de JMS y Apache ActiveMQ. Y me preguntaba ¿en qué uso del mundo real las personas aquí han utilizado JMS o tecnologías de cola de mensajes similares?¿Uso en el mundo real de JMS/colas de mensajes?
Respuesta
JMS (ActiveMQ es una implementación de agente de JMS) se pueden usar como un mecanismo para permitir el procesamiento de petición asincrónico. Es posible que desee hacer esto porque la solicitud tarda mucho tiempo en completarse o porque varias partes pueden estar interesadas en la solicitud real. Otra razón para usarlo es permitir que múltiples clientes (potencialmente escritos en diferentes idiomas) accedan a la información a través de JMS. ActiveMQ es un buen ejemplo aquí porque puede usar el protocolo STOMP para permitir el acceso desde un cliente C#/Java/Ruby.
Un ejemplo del mundo real es el de una aplicación web que se utiliza para realizar un pedido de un cliente en particular. Como parte de la puesta que (y almacenarla en una base de datos) es posible que desee realizar una serie de tareas adicionales:
- tienda el orden en una especie de tercer sistema back-end de las partes (como SAP)
- enviar un correo electrónico al cliente para informarles de su pedido ha sido realizado
para ello el código de aplicación sería publicar un mensaje en una cola JMS que incluye un número de pedido. Una parte de su aplicación que escucha la cola puede responder al evento tomando el ID de pedido, mirando el pedido en la base de datos y luego haciendo el pedido con otro sistema de terceros. Otra parte de su aplicación puede ser responsable de tomar el ID de pedido y enviar un correo electrónico de confirmación al cliente.
los uso todo el tiempo para procesar las operaciones de larga duración de forma asíncrona. Un usuario web no querrá esperar más de 5 segundos para que se procese una solicitud. Si tiene uno que se ejecuta más tiempo que eso, un diseño es enviar la solicitud a una cola e inmediatamente devolver una URL que el usuario puede verificar para ver cuando finaliza el trabajo.
publicación/suscripción es otra buena técnica para desacoplar los remitentes de muchos receptores. Es una arquitectura flexible, porque los suscriptores pueden ir y venir según sea necesario.
Después de leer su respuesta Voy a agregar JMS a mi cola 'Lo que voy a aprender este año' :) – Roman
Computación síncrona distribuida (a).
Un ejemplo del mundo real podría ser un marco de notificación de toda la aplicación, que envía correos a las partes interesadas en diversos momentos durante el uso de la aplicación. Entonces la aplicación actuaría como Producer
creando un objeto Message
, poniéndolo en un particular Queue
, y avanzando.
Habría un conjunto de Consumer
s que se suscriben a la Queue
en cuestión, y se haría cargo el manejo de la Message
enviado a través. Tenga en cuenta que durante el curso de esta transacción, los Producer
s están desacoplados de la lógica de cómo se manejaría un determinado Message
.
marcos mensajería (ActiveMQ y los gustos) actúan como una columna vertebral para facilitar tal Message
transacciones proporcionando MessageBroker
s.
Quiero el procesamiento asincrónico porque RestService Api es sincrónico. Cómo hacerlo con ActiveMq y Jms. Ayuda al respecto. http://stackoverflow.com/questions/19706788/jersey-rest-web-service-with-activemq-middleware-integration. Gracias por su ayuda y tiempo – Kumar
Hemos utilizado la mensajería para generar cotizaciones en línea
que he tenido tantos usos sorprendentes para JMS:
Web chat comunicación para el servicio al cliente.
Inicio de sesión de depuración en el back-end. Todos los servidores de aplicaciones transmitieron mensajes de depuración en varios niveles. Entonces, se podría iniciar un cliente JMS para ver si hay mensajes de depuración. Claro que podría haber usado algo como syslog, pero esto me dio todo tipo de formas de filtrar la salida en función de la información contextual (por ejemplo, nombre del servidor de aplicaciones, llamada de API, nivel de registro, ID de usuario, tipo de mensaje, etc.). También coloreé la salida.
Debug logging to file. Igual que el anterior, solo las piezas específicas se extrajeron usando filtros y se registraron en el archivo para el registro general.
Alerting. De nuevo, una configuración similar al registro anterior, buscando errores específicos y alertando a las personas a través de diversos medios (correo electrónico, mensaje de texto, IM, Growl pop-up ...)
Configuración y control dinámicos de clústeres de software. Cada servidor de aplicaciones transmitiría un mensaje de "configúrame", luego un daemon de configuración que respondería con un mensaje que contiene todo tipo de información de configuración. Más tarde, si todos los servidores de aplicaciones necesitaran que sus configuraciones cambiaran a la vez, se podría hacer desde el daemon de configuración.
Y la costumbre - en cola las transacciones para la actividad retardada, tales como la facturación, procesamiento de pedidos, aprovisionamiento, la generación de correo electrónico ...
Es muy bueno en cualquier lugar que quieren garantizar la entrega de mensajes de forma asíncrona.
Lo usamos para iniciar el procesamiento asincrónico que no queremos interrumpir o entrar en conflicto con una transacción existente.
Por ejemplo, supongamos que tiene una lógica costosa y muy importante, como "comprar cosas", una parte importante de las compras sería "notificar a la tienda de cosas". Hacemos que la llamada de notificación sea asíncrona de modo que cualquier lógica/procesamiento que esté involucrado en la llamada de notificación no bloquee ni controle los recursos con la lógica comercial de compra. Resultado final, compra completa, el usuario está contento, obtenemos nuestro dinero y como la cola garantiza la entrega, la tienda recibe una notificación tan pronto como se abre o tan pronto como hay un nuevo artículo en la cola.
Por favor ayuda en esto. http://stackoverflow.com/questions/19706788/jersey-rest-web-service-with-activemq-middleware-integration. Gracias por su ayuda y tiempo. – Kumar
Pero debido a que la solicitud es asincrónica, debido a un problema de red, es posible que su mensaje no se envíe. ¿Qué hay de esto? Cuando desee comprar cosas, debe enviar su nitificación. ¿no lo hace? – grep
He visto a JMS utilizado en diferentes proyectos comerciales y académicos. JMS puede aparecer fácilmente en su imagen, siempre que quiera tener un sistema distribuido totalmente desacoplado. En términos generales, cuando necesita enviar su solicitud desde un nodo, y alguien en su red se encarga de ello sin/con el remitente ninguna información sobre el receptor.
En mi caso, he utilizado JMS en el desarrollo de un middleware orientado a mensajes (MOM) en mi tesis, donde tipos específicos de objetos orientados a objetos se generan en un lado como su solicitud y compilados y ejecutados en el otro lado como su respuesta.
Lo he usado para enviar intercambios intradía entre diferentes sistemas de administración de fondos. Si desea obtener más información sobre lo que es un excelente mensaje de tecnología, le recomiendo el libro "Enterprise Integration Patterns". Hay algunos ejemplos de JMS para cosas como solicitud/respuesta y publicación/suscripción.
La mensajería es una herramienta excelente para la integración.
Apache Camel se utiliza junto con ActiveMQ es una gran manera de hacer patrones de integración empresarial
Estamos utilizando JMS para la comunicación con sistemas en un gran número de sitios remotos a través de redes no confiables.El acoplamiento flexible en combinación con mensajes confiables produce un paisaje de sistema estable: cada mensaje se enviará tan pronto como sea técnicamente posible, los problemas más grandes en la red no tendrán influencia en el panorama general del sistema ...
Lo he usado para mi proyecto académico, que era un sitio web minorista en línea similar a Amazon. JMS se utilizan para manejar siguientes características:
- actualización de la posición de los pedidos realizados por los clientes, como el envío viaja de un lugar a otro. Esto se hizo mediante el envío continuo de mensajes a JMS Queue.
- Alerta sobre cualquier evento inusual, como retrasos en el envío y luego envío de un correo electrónico al cliente.
- Si la entrega llega a su destino, se envía un evento de entrega.
Tuvimos varios clientes remotos también implementados conectados al servidor principal. Si la conexión está disponible, utilizan para acceder a la base de datos principal o si no utilizan su propia base de datos. Para manejar la coherencia de los datos, implementamos un mecanismo de 2PC. Para esto, usamos JMS para intercambiar los mensajes entre estos sistemas, es decir, uno que actúa como coordinador, que iniciará el proceso enviando mensajes a la cola y otros responderán en consecuencia enviando de nuevo un mensaje en la cola. Como otros ya han mencionado, esto fue similar al modelo pub/sub.
- 1. mundo real El uso de Zookeeper
- 2. Uso en el mundo real de objetos vinculantes en ruby
- 3. Uso en el mundo real de atributos .NET personalizados
- 4. Uso de extensiones reactivas en el "mundo real"
- 5. Java Multi Threading - casos de uso en el mundo real
- 6. ORM en el mundo real
- 7. Glassfish en el mundo real
- 8. Aplicaciones de Jython en el mundo real
- 9. Uso de ML en aplicaciones del "mundo real"
- 10. casos de uso del mundo real para indexadores de C#?
- 11. Uso del mundo real de lenguajes de programación concatenativa
- 12. JavaCard 3 en el mundo real?
- 13. C# 4: Ejemplo en el mundo real de tipos dinámicos
- 14. ejemplos del mundo real de funciones anidadas
- 15. El lenguaje de programación Clean en el mundo real?
- 16. C# Threading en aplicaciones del mundo real
- 17. Uso del mundo real para redes neuronales artificiales
- 18. Enterprise Service Bus uso del mundo real o ejemplos
- 19. Reimplementación de estructuras de datos en el mundo real
- 20. Contratos de falla de WCF en el mundo real
- 21. El uso de unidades del mundo real en lugar de tipos
- 22. ¿Qué tan común es PEAR en el mundo real?
- 23. ¿Errores de tipografía del mundo real?
- 24. Haskell vs. programación de procedimientos en el mundo real
- 25. ¿Qué aplicaciones de WPF en el mundo real existen?
- 26. ¿Cómo "actualizar" la base de datos en el mundo real?
- 27. prueba en el mundo real de los controladores CakePHP?
- 28. ¿Hay alguna aplicación de SharpKit en el mundo real?
- 29. ¿Con qué frecuencia usa pseudocódigo en el mundo real?
- 30. Kerberos - ejemplos del mundo real?
Hola @jon ¿has visto esta etiqueta de documentación? https://stackoverflow.com/documentation/jms/commit solo necesitan un soporte de committer para habilitar el tema, creo que usted podría ser el :) que les permita darnos documentos increíbles en JMS – juanmf
@Jon según tengo entendido jms es en sí mismo una implementación del patrón de integración empresarial? – valik
No, Mule o Camel serían ... – Jon