Exportar (0) Imprimir
Expandir todo

Migrar aplicaciones que usan tecnologías de mensajería

Actualizado: enero de 2014

Autor: Kun Cheng
Colaboradores: Sreedhar Pelluru, Valery Mizonov, Christian Martinez, Rama Ramani
Revisores: Steve Howard, Seth Manheim

Las colas de mensajes suelen usarse para que las aplicaciones se comuniquen entre sí o para que se comuniquen dentro de componentes de una aplicación. En el diseño de aplicaciones modernas, los arquitectos y desarrolladores pueden usar colas de mensajes para establecer un canal de comunicación asincrónica. Una cola de mensajes permite a los remitentes enviar mensajes y continuar con otras tareas sin esperar una respuesta de los receptores. Los receptores reciben y procesan los mensajes independientemente sin remitentes de bloqueo. El mecanismo ayuda a desacoplar componentes de una aplicación que de otra forma estarían estrechamente integrados y hace posible una solución más flexible y escalable.

A la hora de migrar una aplicación local a Windows Azure, se recomienda que los arquitectos y desarrolladores examinen la arquitectura actual e identifiquen las posibilidades de usar colas de Windows Azure o Microsoft Azure Service Bus para aprovechar una arquitectura con acoplamiento flexible y la posibilidad de escalado, especialmente en la plataforma Windows Azure.

Las colas de Windows Azure se almacenan en Windows Azure y proporcionan un mecanismo básico de puesta en cola para admitir la comunicación punto a punto. Las colas de Windows Azure admiten el acceso mediante HTTP o HTTPS basado en REST. Cada cola de mensajes admite una capacidad de hasta 100 TB (límite de la cuenta de almacenamiento actual). Cada mensaje puede tener un tamaño máximo de 64 KB. Vea este artículo para obtener más detalles.


El uso más frecuente de las colas de Windows Azure es que el rol web como remitente ponga en cola elementos de trabajo. También puede usarlas en un rol de trabajo como receptor para quitar de la cola y procesar los elementos de trabajo asincrónicamente.


La plataforma Windows Azure también ofrece mensajería basada en colas mediante Service Bus. Además de la puesta en cola, Service Bus también proporciona mensajería segura y capacidades de retransmisión que admiten aplicaciones distribuidas en Windows Azure o implementaciones híbridas de aplicaciones entre la plataforma local y Windows Azure. Como mecanismos de mensajería, Service Bus admite tanto la comunicación punto a punto mediante colas de Service Bus como el modelo de publicación y suscripción mediante temas y suscripciones de Service Bus. Los temas y las suscripciones de Service Bus permiten que varios suscriptores escuchen en un único publicador al mismo tiempo. Las capacidades de retransmisión habilitan escenarios de soluciones híbridas en los que los activos empresariales locales o de nubes privadas pueden ampliarse y comunicarse con recursos en la nube. Service Bus admite el acceso mediante HTTP o HTTPS basado en REST o mediante el protocolo TCP. Cada cola de Service Bus puede tener una capacidad máxima de 5 GB. Cada mensaje puede tener un tamaño máximo de 256 KB.

Existen muchas diferencias entre las colas de Windows Azure y las colas de Service Bus. Entre estas diferencias se incluyen la autenticación, la compatibilidad con transacciones y la integración con WCF. Vea el artículo Colas de Windows Azure y Colas de Service Bus de Windows Azure: comparación y diferencias para obtener una comparación detallada entre las dos tecnologías de puesta en cola.

Las aplicaciones de Windows suelen usar Microsoft Message Queuing (MSMQ) como mecanismo de puesta en cola. MSMQ permite que aplicaciones que se ejecutan en servidores diferentes en procesos distintos se comuniquen entre sí de forma duradera y con acoplamiento flexible. También permite que aplicaciones que residen en entornos de red heterogéneos intercambien información incluso aunque no estén en línea al mismo tiempo. Proporciona entrega de mensajes garantizada, compatibilidad con transacciones distribuidas, enrutamiento eficiente, seguridad y mensajería basada en prioridades.

A la hora de migrar a la plataforma Windows Azure aplicaciones que usan la tecnología MSMQ, tenga en cuenta que Windows Azure no admite actualmente MSMQ. Para poder realizar la migración es necesario modificar el código para que use colas de Windows Azure. En las próximas secciones se describen distintas opciones para migrar a la plataforma Windows Azure aplicaciones que usan la tecnología MSMQ.

En muchos sentidos, Service Bus es la característica de Windows Azure más parecida a MSMQ. Comparten funciones similares como operaciones básicas de puesta en cola, compatibilidad con transacciones y colas de mensajes fallidos. Sin embargo, para usar Service Bus se necesitan distintas API que MSMQ y las semánticas difieren de varias formas. A continuación se enumeran algunas diferencias importantes en cuanto a tamaño y rendimiento:

  • El tamaño de los mensajes de Service Bus está limitado a 256 kB (tanto el encabezado como el cuerpo), mientras que los mensajes de MSMQ pueden tener un tamaño de hasta 4 MB.

  • Las colas de Service Bus están limitadas a un tamaño máximo de 5 GB. El tamaño de las colas de MSMQ está limitado por el hardware o por las cuotas configurables del equipo.

  • La capacidad de proceso de las colas de Service Bus puede llegar hasta 2.000 mensajes por segundo. Sin embargo, la de MSMQ puede llegar a ser superior a los 6000 mensajes por segundo (según un banco de pruebas de 1k). Vea Optimizar el rendimiento en un entorno de Microsoft Message Queue Server para obtener más detalles. .

Para facilitar la migración, es posible establecer un vínculo entre MSMQ local y Service Bus de Windows Azure mediante un puente. Vea el código de ejemplo aquí.

Las colas de Windows Azure proporcionan un canal básico de comunicación punto a punto. A diferencia de MSMQ, las colas de Windows Azure no admiten entornos heterogéneos. Además, no admiten de forma nativa características admitidas por un entorno MSMQ típico como colas de mensajes fallidos automáticas, transacciones y garantías de orden. Sin embargo, los desarrolladores de aplicaciones pueden implementar las características necesarias sobre las colas de Windows Azure para conseguir funciones similares a las de MSMQ. No obstante, para ello es necesario personalizar la aplicación.

Con la compatibilidad integrada de MSMQ en Windows Server, la ejecución de MSMQ en el mismo nodo que el rol de trabajo ofrece toda la funcionalidad de MSMQ local. Sin embargo, el rol de trabajo está sujeto a conmutación por error y a tareas de mantenimiento. Cuando esto ocurre, toda la información de estado como los mensajes almacenados en el almacenamiento MSMQ local se pierde y es irrecuperable. A menos que MSMQ se use sin estados y la aplicación esté diseñada para poder administrar la conmutación por error del rol, no se recomienda ejecutar MSMQ en una instancia de rol de trabajador.

Mostrar:
© 2014 Microsoft