Compartir a través de


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. Use Service Bus para desacoplar aplicaciones y servicios entre sí. Proporciona las siguientes ventajas:

  • Los equilibrios de carga funcionan entre los trabajadores competidores
  • Enruta y transfiere datos de forma segura y controla los límites del servicio y de la aplicación
  • Coordina el trabajo transaccional que requiere un alto grado de confiabilidad.

Información general

Las aplicaciones y los servicios transfieren datos entre sí mediante mensajes. Un mensaje es un contenedor que contiene datos y está decorado con metadatos. Los datos pueden ser cualquier tipo de información, incluidos los datos estructurados codificados con formatos comunes, como JSON, XML, Apache Avro o texto sin formato.

Algunos escenarios comunes de mensajería incluyen:

  • 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. Realice varias operaciones, todo en el ámbito de una transacción atómica. Por ejemplo, las siguientes operaciones se pueden realizar en el ámbito de una transacción:

    1. Obtener un mensaje de una cola.
    2. Publicar resultados de procesamiento en una o varias colas diferentes.
    3. 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 parcheados los sistemas operativos o los 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

Envía y recibe mensajes a través de colas. Las colas almacenan mensajes hasta que la aplicación receptora está disponible para recibirlos y procesarlos.

Diagrama que muestra una cola de Service Bus con un remitente y un receptor que envía y recibe mensajes.

Los mensajes de las colas se ordenan y se les asigna una marca de tiempo a su llegada. Una vez que 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. Service Bus mantiene los mensajes en memoria o almacenamiento volátil hasta que el cliente los notifica como aceptados.

Los mensajes se entregan en modo de extracción , por lo que el sistema solo entrega mensajes cuando se solicita. 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.

Diagrama que muestra un tema de Service Bus con un remitente y varios receptores.

Los temas pueden tener varias suscripciones independientes. Estas suscripciones se asocian al tema y, por lo demás, funcionan exactamente igual que las colas desde el lado del receptor. Un suscriptor a un tema puede recibir una copia de cada mensaje enviado a ese tema. Las suscripciones son entidades con nombre. Las suscripciones son duraderas de forma predeterminada, pero puede configurarlas para que expiren y, a continuación, se eliminen automáticamente. A través de la API de Java Message Service (JMS), Service Bus Premium también le permite crear suscripciones volátiles que existen durante la duración de 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 desea que una suscripción reciba todos los mensajes asociados a un tópico.
  • 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, como colas y temas. Un espacio de nombres puede tener una o varias colas y temas, y a menudo sirve como contenedor de aplicaciones.

Puede comparar un espacio de nombres 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. Obtiene las ventajas de disponibilidad y robustez de ejecutar el broker 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. También puede usar sesiones para implementar 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 le permite encadenar una cola o suscripción a otra cola o tema que forme parte del mismo espacio de nombres. Al habilitar el reenvío automático, Service Bus quita automáticamente los mensajes que se colocan en la primera cola o suscripción (origen) y los coloca en la segunda cola o tema (destino). Para más información, consulte Encadenamiento de Service Bus entidades con el reenvío.

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 muertos almacena mensajes que no se pueden entregar a ningún destinatario o 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 cola o suscripción recibe un mensaje que está dispuesto a procesar, pero el procesamiento no es posible actualmente debido a circunstancias especiales dentro de la aplicación, la entidad puede aplazar la recuperación del mensaje a un punto 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

Mediante la eliminación automática en modo inactivo, puede especificar un intervalo de inactividad después del cual se elimina automáticamente la cola. El intervalo se restablece cuando hay tráfico en la cola. La duración mínima es de cinco minutos.

Detección de duplicados

Si se produce un error que hace que el cliente duda el resultado de una operación de envío, la detección de duplicados elimina la duda en estas situaciones. El remitente puede reenviar el mismo mensaje y la cola o el tema descarta las copias duplicadas. 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. Esta característica es útil cuando se necesita una limpieza debido a que los mensajes dentro de colas o suscripciones han caducado o resultan irrelevantes. Para obtener más información, consulte Eliminación por lotes.

Seguridad

Service Bus admite protocolos de seguridad como firmas de acceso compartido (SAS),control de acceso basado en roles (RBAC) e identidades administradas para recursos de Azure.

Service Bus admite los protocolos Advanced Message Queuing Protocol (AMQP) 1.0 y HTTP/REST.

Geo-Replication

Cuando las regiones o centros de datos de Azure experimentan tiempo de inactividad, la replicación geográfica permite que el procesamiento de datos continúe funcionando en otra región.

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. Permite a los usuarios desarrollar aplicaciones que operan con Service Bus y brokers 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 las bibliotecas cliente de Service Bus, completamente compatibles, están disponibles a través de Azure SDK.

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 Apache Qpid Proton Python
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 completamente con muchos servicios de Microsoft y Azure, como:

Pasos siguientes

Para comenzar a trabajar con la mensajería de Service Bus, consulte los siguientes artículos: