Qué es Azure Service Bus
Azure Service Bus es un agente de mensajes empresarial totalmente administrado que incluye colas de mensajes y temas que se pueden publicar y a los que es posible suscribirse. Service Bus se usa para desacoplar aplicaciones de servicios, lo que proporciona las siguientes ventajas:
- Equilibrio de carga del trabajo entre trabajadores paralelos
- Enrutamiento y transferencia de datos de forma segura y control entre los límites de aplicaciones y servicios
- Coordinación del trabajo transaccional que requiere un alto grado de confiabilidad
Información general
Los datos se transfieren entre distintas aplicaciones y servicios mediante mensajes. Un mensaje es un contenedor decorado con metadatos que contiene datos. Los datos pueden ser cualquier tipo de información, como datos estructurados codificados con los formatos comunes, como los siguientes: JSON, XML, Apache Avro, texto sin formato.
Algunos escenarios de mensajería comunes son:
Mensajería. Transferir datos empresariales, como pedidos de ventas o compras, diarios o movimientos de inventario.
Desacoplar aplicaciones. Mejore la confiabilidad y la escalabilidad de las aplicaciones y los servicios. No es necesario que el productor y el consumidor estén en línea o disponibles al mismo tiempo. La carga se redistribuye, de tal forma que los picos de tráfico no sobrecarguen un servicio.
Equilibrio de carga. Permite que varios consumidores paralelos lean una cola al mismo tiempo y que cada uno obtenga de forma segura la propiedad exclusiva de mensajes específicos.
Temas y suscripciones. Permite relaciones 1:n entre publicadores y suscriptores, lo que hace que los suscriptores puedan seleccionar mensajes concretos de una secuencia de mensajes publicados.
Transacciones. Permite realizar varias operaciones, todas ellas en el ámbito de una transacción atómica. Por ejemplo, se pueden realizar las siguientes operaciones en el ámbito de una transacción.
- Obtener un mensaje de una cola.
- Publicar resultados de procesamiento en una o varias colas diferentes.
- Mover el mensaje de entrada desde la cola original.
Los resultados se hacen visibles para los consumidores de nivel inferior solo si son correctos, incluida la liquidación correcta del mensaje de entrada, lo que permite una semántica de procesamiento de una sola vez. Este modelo de transacción es una base sólida para el patrón de transacciones de compensación en el contexto de una solución mayor.
Sesiones de mensajes. Implemente la coordinación a gran escala de flujos de trabajo y transferencias multiplexadas que requieran un ordenamiento o un aplazamiento de mensajes estricto.
Si está familiarizado con otros agentes de mensajes, como Apache ActiveMQ, los conceptos de Service Bus son parecidos a los que ya conoce. Como Service Bus es una oferta de plataforma como servicio (PaaS), una diferencia clave es que no es necesario preocuparse por las siguientes acciones. Azure se encarga de esas tareas.
- Preocuparse por los errores de hardware.
- Mantener revisados los sistemas operativos o productos.
- Colocar los registros y administrar el espacio en disco.
- Administrar las copias de seguridad.
- Conmutar por error a una máquina de reserva.
Conceptos
En esta sección se de abordan los conceptos básicos de Service Bus.
Colas
Los mensajes se envían y se reciben desde colas. Las colas almacenan mensajes hasta que la aplicación receptora está disponible para recibirlos y procesarlos.
Los mensajes de las colas se ordenan y se les asigna una marca de tiempo a su llegada. Una vez el agente acepta el mensaje, el mensaje siempre se mantiene de forma duradera en un almacenamiento con redundancia triple, distribuido entre las zonas de disponibilidad si el espacio de nombres está habilitado para zonas. El Bus de Servicios mantiene los mensajes en memoria o en almacenamiento volátil hasta que el cliente informa de que han sido aceptados.
Los mensajes se entregan en modo de extracción y solo entregan mensajes cuando se solicitan. A diferencia del modelo de sondeo de estado ocupado de otras colas de nube, la operación de extracción puede ser de larga duración y completarse solamente una vez que un mensaje esté disponible.
Nota
Para obtener una comparación de las colas de Service Bus con las de Storage, consulte Colas de Storage y de Service Bus: comparación y diferencias.
Temas
También puede usar temas para enviar y recibir mensajes. Mientras que una cola se utiliza a menudo para la comunicación punto a punto, los temas son útiles en escenarios de publicación y suscripción.
Los temas pueden tener varias suscripciones independientes asociadas; por lo demás, funcionan exactamente igual que las colas del lado receptor. Un suscriptor a un tema puede recibir una copia de cada mensaje enviado a ese tema. Las suscripciones son entidades con nombre. De forma predeterminada, las suscripciones son duraderas, pero se pueden configurar para que expiren y se eliminen luego automáticamente. Mediante la API Java Message Service (JMS), Service Bus Premium también permite crear suscripciones volátiles que existen mientras dura la conexión.
Puede definir reglas en una suscripción. Una regla de suscripción tiene un filtro para definir una condición del mensaje que se va a copiar en la suscripción, y una acción opcional que puede modificar los metadatos del mensaje. Para más información, consulte Filtros y acciones de temas. Esta característica es útil en los escenarios siguientes:
- No quiere que una suscripción reciba todos los mensajes enviados a un tema.
- Quiere marcar los mensajes con metadatos adicionales cuando pasan a través de una suscripción.
Nota
Para obtener más información sobre las colas y los temas, consulte colas de Service Bus, temas y suscripciones.
Espacios de nombres
Un espacio de nombres es un contenedor de todos los componentes de mensajería (colas y temas). Un espacio de nombres puede tener una o varias colas y temas y a menudo sirve como contenedor de aplicaciones.
Un espacio de nombres puede compararse con un servidor en la terminología de otros agentes, pero los conceptos no son directamente equivalentes. Un espacio de nombres de Service Bus es su propio segmento de capacidad de un clúster grande compuesto por docenas de máquinas virtuales activas. Opcionalmente abarca tres zonas de disponibilidad de Azure. Por lo tanto, obtiene todas las ventajas de disponibilidad y solidez de la ejecución del agente de mensajes a gran escala. Además, no es necesario preocuparse por las complejidades subyacentes. Service Bus es mensajería sin servidor.
Características avanzadas
Service Bus también tiene características avanzadas que permiten solucionar problemas de mensajería más complejos. Las siguientes secciones describen estas características principales:
Sesiones de mensajes
Para realizar una garantía FIFO (first-in, first-out)(primero que entra, primero que sale) en el procesamiento de mensajes en colas o suscripciones de Service Bus, use sesiones. Las sesiones también se pueden usar en la implementación de patrones de solicitud-respuesta. El patrón de solicitud-respuesta permite a la aplicación remitente enviar una solicitud y proporciona una manera de que el receptor envíe correctamente una respuesta a la aplicación remitente. Para más información, consulte Sesiones de mensajes.
Reenvío automático
La característica de reenvío automático permite encadenar una cola o suscripción a otra cola o tema que forme parte del mismo espacio de nombres. Cuando el reenvío automático está habilitado, Service Bus elimina automáticamente los mensajes que se colocan en la primera cola o suscripción (origen) y los coloca en la segunda cola o en el segundo tema (destino). Para obtener más información, consulte Encadenamiento de entidades de Service Bus con reenvío automático
Colas de mensajes fallidos
Las colas de Service Bus y las suscripciones a temas proporcionan una subcola secundaria que se denomina cola de mensajes fallidos (DLQ). La cola de mensajes fallidos mantiene los mensajes que no se pueden entregar a ningún destinatario o los mensajes que no se pueden procesar. A continuación, puede eliminar mensajes de la cola DLQ y examinarlos. Una aplicación podría, con ayuda de un operador, corregir los problemas y volver a enviar el mensaje, registrar el hecho de que se produjo un error y llevar a cabo medidas correctivas. Para más información, consulte Introducción a las colas de mensajes fallidos de Service Bus.
Entrega programada
Puede enviar mensajes a una cola o un tema para el procesamiento retrasado. Por ejemplo, puede programar un trabajo para que esté disponible para que lo procese un sistema en un momento determinado. Para más información, consulte Mensajes programados.
Aplazamiento de mensajes
Cuando un cliente de una cola o suscripción recibe un mensaje que se quiere procesar, pero cuyo procesamiento no es posible en ese momento debido a circunstancias especiales dentro de la aplicación, la entidad tiene la opción de aplazar la recuperación del mensaje para un momento posterior. El mensaje permanece en la cola o la suscripción, pero se reserva. Para más información, consulte Aplazamiento de mensajes.
Transacciones
Una transacción agrupa dos o más operaciones en un ámbito de ejecución. Service Bus admite operaciones de agrupación en una sola entidad de mensajería (cola, tema, suscripción) dentro del ámbito de una transacción. Para más información, consulte Información general sobre el procesamiento de transacciones de Service Bus.
Filtros y acciones
Los suscriptores pueden definir los mensajes que quieren recibir de un tema. Estos mensajes se especifican en forma de una o varias reglas de suscripción con nombre. Cada regla está formada por una condición filter que selecciona mensajes concretos y, opcionalmente, una acción que anota el mensaje seleccionado. Para cada condición de regla de coincidencia, la suscripción genera una copia del mensaje, que se puede anotar de manera diferente para cada regla de coincidencia. Para más información, consulte Filtros y acciones de temas.
Eliminación automática en estado inactivo
La eliminación automática en estado inactivo le permite especificar un intervalo de inactividad después del cual se eliminará automáticamente la cola. El intervalo se restablece cuando hay tráfico en la cola. La duración mínima es de 5 minutos.
Detección de duplicados
Si se produce un error que hace que el cliente tenga dudas sobre el resultado de una operación de envío, la detección de duplicados saca de dudas en estas situaciones al permitir que el remitente reenvíe el mismo mensaje y la cola o el tema descartan cualquier copia duplicada. Para más información, consulte Detección de duplicados.
Eliminación por lotes de mensajes
Azure Service Bus admite la eliminación de mensajes en lotes. Esto resulta útil en escenarios en los que los mensajes de colas o suscripciones hayan expirado o ya no sean pertinentes, haciendo necesaria una limpieza. Para obtener más información, consulte Eliminación por lotes.
Seguridad
Service Bus admite protocolos de seguridad como las firmas de acceso compartido (SAS), el Control de acceso basado en rol (RBAC) (RBAC) y Entidades administradas para recursos de Azure.
Service Bus admite los protocolos Advanced Message Queuing Protocol (AMQP) 1.0 y HTTP/REST.
Recuperación ante desastres geográfica
Cuando las regiones o los centros de datos de Azure experimentan un tiempo de inactividad, la recuperación ante desastres geográfica permite que el procesamiento de datos siga funcionando en una región o un centro de datos diferentes.
Nota
Para obtener más información sobre estas características, consulte Características avanzadas de Azure Service Bus.
Cumplimiento de estándares y protocolos
El protocolo de conexión principal de Service Bus es Advanced Message Queuing Protocol (AMQP) 1.0, un estándar abierto ISO/IEC. Este protocolo permite a los clientes escribir aplicaciones que funcionan en agentes de Service Bus y locales, como ActiveMQ o RabbitMQ. En la guía del protocolo AMQP se proporciona información detallada en caso de que quiera crear una abstracción de este tipo.
Service Bus Premium es totalmente compatible con la API Java Message Service (JMS) 2.0 de Java/Jakarta EE. Además, Service Bus Standard admite el subconjunto JMS 1.1 centrado en las colas. JMS es una abstracción común de los agentes de mensajes y se integra con muchas aplicaciones y marcos, incluido el conocido marco Spring. Para pasar de otros agentes a Azure Service Bus, solo tiene que volver a crear la topología de colas y temas y cambiar la configuración y las dependencias del proveedor del cliente. Puede encontrar un ejemplo en la guía de migración de ActiveMQ.
Bibliotecas de clientes
Todas bibliotecas cliente de Service Bus están disponibles a través de Azure SDK.
- Azure Service Bus para .NET
- Los marcos de terceros que proporcionan abstracciones de nivel superior basadas en el SDK incluyen NServiceBus y MassTransit.
- Bibliotecas de Azure Service Bus para Java
- Proveedor de Azure Service Bus para Java JMS 2.0
- Módulos de Azure Service Bus para JavaScript y TypeScript
- Bibliotecas de Azure Service Bus para Python
El protocolo principal de Azure Service Bus es AMQP 1.0 y se puede usar desde cualquier cliente compatible con este protocolo. Varios clientes de AMQP de código abierto tienen ejemplos que demuestran explícitamente la interoperabilidad de Service Bus. Revise la guía del protocolo AMQP 1.0 para aprender a usar las características de Service Bus directamente con los clientes de AMQP 1.0.
Idioma | Biblioteca |
---|---|
Java | Apache Qpid Proton-J |
C/C++ | Azure uAMQP C, Apache Qpid Proton-C |
Python | Azure uAMQP for Python, Apache Qpid Proton Python) |
PHP | Azure uAMQP for PHP |
Ruby | Apache Qpid Proton Ruby |
Go | Azure Go AMQP, Apache Qpid Proton Go |
C#/F#/VB | AMQP .NET Lite, Apache NMS AMQP |
JavaScript/Node | Rhea |
Integración
Service Bus se integra totalmente con muchos servicios de Microsoft y Azure, por ejemplo:
Pasos siguientes
Para comenzar a trabajar con la mensajería de Service Bus, consulte los siguientes artículos:
- Colas, temas y suscripciones de Service Bus
- Guías de inicio rápido: .NET, Java, JMS o NServiceBus
- Precios de Service Bus.
- Mensajería premium.