Qué es Azure Service BusWhat is Azure Service Bus?

Microsoft 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.Microsoft Azure Service Bus is a fully managed enterprise message broker with message queues and publish-subscribe topics. Service Bus se usa para desacoplar aplicaciones de servicios, lo que proporciona las siguientes ventajas:Service Bus is used to decouple applications and services from each other, providing the following benefits:

  • Equilibrio de carga del trabajo entre trabajadores paralelosLoad-balancing work across competing workers
  • Enrutamiento y transferencia de datos de forma segura y control entre los límites de aplicaciones y serviciosSafely routing and transferring data and control across service and application boundaries
  • Coordinación del trabajo transaccional que requiere un alto grado de confiabilidadCoordinating transactional work that requires a high-degree of reliability

Información generalOverview

Los datos se transfieren entre distintas aplicaciones y servicios mediante mensajes.Data is transferred between different applications and services using messages. Un mensaje es un contenedor decorado con metadatos que contiene datos.A message is a container decorated with metadata, and contains data. 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.The data can be any kind of information, including structured data encoded with the common formats such as the following ones: JSON, XML, Apache Avro, Plain Text.

Algunos escenarios de mensajería comunes son:Some common messaging scenarios are:

  • Mensajería.Messaging. Transferir datos empresariales, como pedidos de ventas o compras, diarios o movimientos de inventario.Transfer business data, such as sales or purchase orders, journals, or inventory movements.

  • Desacoplar aplicaciones.Decouple applications. Mejore la confiabilidad y la escalabilidad de las aplicaciones y los servicios.Improve reliability and scalability of applications and services. No es necesario que el productor y el consumidor estén en línea o disponibles al mismo tiempo.Producer and consumer don't have to be online or readily available at the same time. La carga se redistribuye, de tal forma que los picos de tráfico no sobrecarguen un servicio.The load is leveled such that traffic spikes don't overtax a service.

  • Equilibrio de carga.Load Balancing. 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.Allow for multiple competing consumers to read from a queue at the same time, each safely obtaining exclusive ownership to specific messages.

  • Temas y suscripciones.Topics and subscriptions. Permite relaciones 1:n entre publicadores y suscriptores, lo que hace que los suscriptores puedan seleccionar mensajes concretos de una secuencia de mensajes publicados.Enable 1:n relationships between publishers and subscribers, allowing subscribers to select particular messages from a published message stream.

  • Transacciones.Transactions. Permite realizar varias operaciones, todas ellas en el ámbito de una transacción atómica.Allows you to do several operations, all in the scope of an atomic transaction. Por ejemplo, se pueden realizar las siguientes operaciones en el ámbito de una transacción.For example, the following operations can be done in the scope of a transaction.

    1. Obtener un mensaje de una cola.Obtain a message from one queue.
    2. Publicar resultados de procesamiento en una o varias colas diferentes.Post results of processing to one or more different queues.
    3. Mover el mensaje de entrada desde la cola original.Move the input message from the original queue.

    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.The results become visible to downstream consumers only upon success, including the successful settlement of input message, allowing for once-only processing semantics. 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.This transaction model is a robust foundation for the compensating transactions pattern in the greater solution context.

  • Sesiones de mensajes.Message sessions. Implemente la coordinación a gran escala de flujos de trabajo y transferencias multiplexadas que requieran un ordenamiento o un aplazamiento de mensajes estricto.Implement high-scale coordination of workflows and multiplexed transfers that require strict message ordering or message deferral.

Si está familiarizado con otros agentes de mensajes, como Apache ActiveMQ, los conceptos de Service Bus son parecidos a los que ya conoce.If you're familiar with other message brokers like Apache ActiveMQ, Service Bus concepts are similar to what you know. Como Service Bus es una oferta de plataforma como servicio (PaaS), una diferencia clave es que no es necesario preocuparse por las siguientes acciones.As Service Bus is a platform-as-a-service (PaaS) offering, a key difference is that you don't need to worry about the following actions. Azure se encarga de esas tareas.Azure takes care of those chores for you.

  • Colocar los registros y administrar el espacio en disco.Placing logs and managing disk space
  • Administrar las copias de seguridad.Handling backups
  • Mantener revisados los sistemas operativos o productos.Keeping the operating systems or the products patched
  • Preocuparse por los errores de hardware.Worrying about hardware failures
  • Conmutar por error a una máquina de reserva.Failing over to a reserve machine

Cumplimiento de estándares y protocolosCompliance with standards and protocols

El protocolo de conexión principal de Service Bus es Advanced Message Queuing Protocol (AMQP) 1.0, un estándar abierto ISO/IEC.The primary wire protocol for Service Bus is Advanced Messaging Queueing Protocol (AMQP) 1.0, an open ISO/IEC standard. Este protocolo permite a los clientes escribir aplicaciones que funcionan en agentes de Service Bus y locales, como ActiveMQ o RabbitMQ.It allows customers to write applications that work against Service Bus and on-premises brokers such as ActiveMQ or 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.The AMQP protocol guide provides detailed information in case you want to build such an abstraction.

Service Bus Premium es totalmente compatible con la API Java Message Service (JMS) 2.0 de Java/Jakarta EE.Service Bus Premium is fully compliant with the Java/Jakarta EE Java Message Service (JMS) 2.0 API. Además, Service Bus Standard admite el subconjunto JMS 1.1 centrado en las colas.And, Service Bus Standard supports the JMS 1.1 subset focused on queues. 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.JMS is a common abstraction for message brokers and integrates with many applications and frameworks, including the popular Spring framework. 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.To switch from other brokers to Azure Service Bus, you just need to recreate the topology of queues and topics, and change the client provider dependencies and configuration. Puede encontrar un ejemplo en la guía de migración de ActiveMQ.For an example, see the ActiveMQ migration guide.

Conceptos y terminologíaConcepts and terminology

En esta sección se describen los conceptos y la terminología de Service Bus.This section discusses concepts and terminology of Service Bus.

Espacios de nombresNamespaces

Un espacio de nombres es un contenedor para todos los componentes de mensajería.A namespace is a container for all messaging components. Varias colas y temas pueden estar en un solo espacio de nombres, y los espacios de nombres suelen servir como contenedores de aplicación.Multiple queues and topics can be in a single namespace, and namespaces often serve as application containers.

Un espacio de nombres puede compararse con un "servidor" en la terminología de otros agentes, pero los conceptos no son directamente equivalentes.A namespace can be compared to a "server" in the terminology of other brokers, but the concepts aren't directly equivalent. 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.A Service Bus namespace is your own capacity slice of a large cluster made up of dozens of all-active virtual machines. Opcionalmente, puede abarcar tres zonas de disponibilidad de Azure.It may optionally span three Azure availability zones. Por lo tanto, obtiene todas las ventajas de disponibilidad y solidez de la ejecución del agente de mensajes a gran escala.So, you get all the availability and robustness benefits of running the message broker at enormous scale. Además, no es necesario preocuparse por las complejidades subyacentes.And, you don't need to worry about underlying complexities. Service Bus es la mensajería "sin servidor".Service Bus is "serverless" messaging.

ColasQueues

Los mensajes se envían y se reciben desde colas.Messages are sent to and received from queues. Las colas almacenan mensajes hasta que la aplicación receptora está disponible para recibirlos y procesarlos.Queues store messages until the receiving application is available to receive and process them.

Cola

Los mensajes de las colas se ordenan y se les asigna una marca de tiempo a su llegada.Messages in queues are ordered and timestamped on arrival. Una vez aceptados por el agente, 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.Once accepted by the broker, the message is always held durably in triple-redundant storage, spread across availability zones if the namespace is zone-enabled. Service Bus nunca deja mensajes en memoria o almacenamiento volátil una vez que se han notificado al cliente como aceptados.Service Bus never leaves messages in memory or volatile storage after they've been reported to the client as accepted.

Los mensajes se entregan en modo de extracción y solo entregan mensajes cuando se solicitan.Messages are delivered in pull mode, only delivering messages when requested. 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.Unlike the busy-polling model of some other cloud queues, the pull operation can be long-lived and only complete once a message is available.

TemasTopics

También puede usar temas para enviar y recibir mensajes.You can also use topics to send and receive messages. 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.While a queue is often used for point-to-point communication, topics are useful in publish/subscribe scenarios.

Tema

Los temas pueden tener varias suscripciones independientes asociadas; por lo demás, funcionan exactamente igual que las colas del lado receptor.Topics can have multiple, independent subscriptions, which attach to the topic and otherwise work exactly like queues from the receiver side. Un suscriptor a un tema puede recibir una copia de cada mensaje enviado a ese tema.A subscriber to a topic can receive a copy of each message sent to that topic. Las suscripciones son entidades con nombre.Subscriptions are named entities. De forma predeterminada, las suscripciones son duraderas, pero se pueden configurar para que expiren y se eliminen luego automáticamente.Subscriptions are durable by default, but can be configured to expire and then be automatically deleted. Mediante la API de JMS, Service Bus Premium también permite crear suscripciones volátiles que existen mientras dura la conexión.Via the JMS API, Service Bus Premium also allows you to create volatile subscriptions that exist for the duration of the connection.

Puede definir reglas en una suscripción.You can define rules on a subscription. 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.A subscription rule has a filter to define a condition for the message to be copied into the subscription and an optional action that can modify message metadata. Para más información, consulte Filtros y acciones de temas.For more information, see Topic filters and actions. Esta característica es útil en los escenarios siguientes:This feature is useful in the following scenarios:

  • No quiere que una suscripción reciba todos los mensajes enviados a un tema.You don't want a subscription to receive all messages sent to a topic.
  • Quiere marcar los mensajes con metadatos adicionales cuando pasan a través de una suscripción.You want to mark up messages with extra metadata when they pass through a subscription.

Características avanzadasAdvanced features

Service Bus incluye características avanzadas que le permiten resolver problemas de mensajería más complejos.Service Bus includes advanced features that enable you to solve more complex messaging problems. En las secciones siguientes se describen algunas de estas características.The following sections describe several of these features.

Sesiones de mensajesMessage sessions

Para crear una garantía primero en entrar/primero en salir (FIFO) en Service Bus, use sesiones.To create a first-in, first-out (FIFO) guarantee in Service Bus, use sessions. Las sesiones de mensajes permiten la administración ordenada y exclusiva de secuencias de mensajes relacionados no enlazadas.Message sessions enable exclusive, ordered handling of unbounded sequences of related messages. Para permitir la administración de sesiones en sistemas de alta disponibilidad y a gran escala, la característica de sesión también permite almacenar el estado de la sesión, lo que hace que las sesiones se muevan de forma segura entre controladores.To allow for handling sessions in high-scale, high-availability systems, the session feature also allows for storing session state, which allows sessions to safely move between handlers. Para más información, consulte Sesiones de mensajes: primera en entrar, primero en salir (FIFO).For more information, see Message sessions: first in, first out (FIFO).

Artículo reenvío automáticoAutoforwarding

La característica de reenvío automático encadena una cola o suscripción a otra cola o tema dentro del mismo espacio de nombres.The autoforwarding feature chains a queue or subscription to another queue or topic inside the same namespace. Al usar esta característica, Service Bus mueve automáticamente los mensajes de una cola o suscripción a una cola o tema de destino.When you use this feature, Service Bus automatically moves messages from a queue or subscription to a target queue or topic. Todos estos movimientos se realizan de manera transaccional.All such moves are done transactionally. Para más información, consulte Encadenamiento de Service Bus entidades con el reenvío.For more information, see Chaining Service Bus entities with autoforwarding.

Cola de mensajes fallidosDead-letter queue

Todas las colas y suscripciones a temas de Service Bus llevan asociada una cola de mensajes con problemas de entrega (DLQ).All Service Bus queues and topic subscriptions have an associated dead-letter queue (DLQ). Esta cola contiene mensajes que cumplen los criterios siguientes:A DLQ holds messages that meet the following criteria:

  • No se pueden entregar correctamente a ningún receptor.They can't be delivered successfully to any receiver.
  • Se les ha agotado el tiempo de espera.They timed out.
  • La aplicación receptora los deja a un lado explícitamente.They're explicitly sidelined by the receiving application.

Los mensajes de la cola de mensajes con problemas de entrega se anotan con el motivo de que se colocaran allí.Messages in the dead-letter queue are annotated with the reason why they've been placed there. La cola de mensajes con problemas de entregas tiene un punto de conexión especial, pero, por lo demás, funciona como cualquier cola normal.The dead-letter queue has a special endpoint, but otherwise acts like any regular queue. Una aplicación o herramienta puede examinar una cola de mensajes con problemas de entrega o quitarlos de esta.An application or tool can browse a DLQ or dequeue from it. También puede reenviar automáticamente una cola de mensajes con problemas de entrega.You can also autoforward out of a dead-letter queue. Para más información, consulte Introducción a las colas de mensajes fallidos de Service Bus.For more information, see Overview of Service Bus dead-letter queues.

Entrega programadaScheduled delivery

Puede enviar mensajes a una cola o tema para procesarlos más tarde y establecer una hora a la que el mensaje estará disponible para su consumo.You can submit messages to a queue or topic for delayed processing, setting a time when the message will become available for consumption. Los mensajes programados también se pueden cancelar.Scheduled messages can also be canceled. Para más información, consulte Mensajes programados.For more information, see Scheduled messages.

Aplazamiento de mensajesMessage deferral

El cliente de una cola o suscripción puede aplazar la recuperación de un mensaje recibido para otro momento.A queue or subscription client can defer retrieval of a received message until a later time. Es posible que el mensaje se haya publicado fuera del orden esperado y que el cliente desee esperar hasta recibir otro mensaje.The message may have been posted out of an expected order and the client wants to wait until it receives another message. Los mensajes aplazados permanecen en la cola o suscripción y se deben reactivar explícitamente mediante el número de secuencia asignado por el servicio.Deferred messages remain in the queue or subscription and must be reactivated explicitly using their service-assigned sequence number. Para más información, consulte Aplazamiento de mensajes.For more information, see Message deferral.

LotesBatching

El procesamiento por lotes del lado cliente permite que el cliente de una cola o tema acumule un conjunto de mensajes y los transfiera juntos.Client-side batching enables a queue or topic client to accumulate a set of messages and transfer them together. Este sistema se suele emplear para ahorrar ancho de banda o para aumentar el rendimiento.It's often done to either save bandwidth or to increase throughput. Para más información, consulte Procesamiento por lotes del lado cliente.For more information, see Client-side batching.

TransaccionesTransactions

Una transacción agrupa dos o más operaciones en un ámbito de ejecución.A transaction groups two or more operations together into an execution scope. Service Bus permite agrupar las operaciones en varias entidades de mensajería dentro del ámbito de una única transacción.Service Bus allows you to group operations against multiple messaging entities within the scope of a single transaction. Una entidad de mensaje puede ser una cola, un tema o una suscripción.A message entity can be a queue, topic, or subscription. Para más información, consulte Información general sobre el procesamiento de transacciones de Service Bus.For more information, see Overview of Service Bus transaction processing.

Eliminación automática en estado inactivoAutodelete on idle

La eliminación automática en modo inactivo le permite especificar un intervalo de inactividad después del cual se elimina automáticamente la suscripción a una cola o tema.Autodelete on idle enables you to specify an idle interval after which a queue or topic subscription is automatically deleted. La duración mínima es de 5 minutos.The minimum duration is 5 minutes.

Detección de duplicadosDuplicate detection

La característica de detección de duplicados permite al remitente volver a enviar el mismo mensaje y al agente quitar un posible duplicado.The duplicate detection feature enables the sender to resend the same message again and for the broker to drop a potential duplicate. Para más información, consulte Detección de duplicados.For more information, see Duplicate detection.

Recuperación ante desastres geográficaGeo-disaster recovery

Cuando una región de Azure experimenta tiempo de inactividad, la característica de recuperación ante desastres permite que el procesamiento de datos siga funcionando en otra región o centro de datos.When an Azure region experiences downtime, the disaster recovery feature enables data processing to continue operating in a different region or data center. La característica mantiene un reflejo estructural de un espacio de nombres disponible en la región secundaria y permite que la identidad del espacio de nombres cambie al espacio de nombres secundario.The feature keeps a structural mirror of a namespace available in the secondary region and allows the namespace identity to switch to the secondary namespace. Los mensajes que ya se han publicado permanecen en el espacio de nombres principal anterior a la espera de recuperarse una vez que mejora el incidente de disponibilidad.Already posted messages remain in the former primary namespace for recovery once the availability episode subsides. Para obtener más información, consulte Recuperación ante desastres con localización geográfica de Azure Service Bus.For more information, see Azure Service Bus Geo-disaster recovery.

SeguridadSecurity

Service Bus admite los protocolos estándar AMQP 1,0 y HTTP o REST y sus respectivas utilidades de seguridad, incluida la seguridad de nivel de transporte (TLS).Service Bus supports standard AMQP 1.0 and HTTP or REST protocols and their respective security facilities, including transport-level security (TLS). Los clientes pueden tener acceso autorizado mediante Firma de acceso compartido o la seguridad basada en roles de Azure Active Directory.Clients can be authorized for access using Shared Access Signature or Azure Active Directory role-based security.

Para proteger contra el tráfico no deseado, Service Bus proporciona características de seguridad, como el firewall de IP y la integración con redes virtuales.For protection against unwanted traffic, Service Bus provides security features such as IP firewall and integration with virtual networks.

Bibliotecas de clientesClient libraries

Todas bibliotecas cliente de Service Bus están disponibles a través de Azure SDK.Fully supported Service Bus client libraries are available via the Azure SDK.

El protocolo principal de Azure Service Bus es AMQP 1.0 y se puede usar desde cualquier cliente compatible con este protocolo.Azure Service Bus' primary protocol is AMQP 1.0 and it can be used from any AMQP 1.0 compliant protocol client. Varios clientes de AMQP de código abierto tienen ejemplos que demuestran explícitamente la interoperabilidad de Service Bus.Several open-source AMQP clients have samples that explicitly demonstrate Service Bus interoperability. 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.Review the AMQP 1.0 protocol guide to understand how to use Service Bus' features with AMQP 1.0 clients directly.

IdiomaLanguage BibliotecaLibrary
JavaJava Apache Qpid Proton-JApache Qpid Proton-J
C/C++C/C++ Azure uAMQP C, Apache Qpid Proton-CAzure uAMQP C, Apache Qpid Proton-C
PythonPython Azure uAMQP for Python, Apache Qpid Proton PythonAzure uAMQP for Python, Apache Qpid Proton Python
PHPPHP Azure uAMQP for PHPAzure uAMQP for PHP
RubyRuby Apache Qpid Proton RubyApache Qpid Proton Ruby
GoGo Azure Go AMQP, Apache Qpid Proton GoAzure Go AMQP, Apache Qpid Proton Go
C#/F#/VBC#/F#/VB AMQP .NET Lite, Apache NMS AMQPAMQP .NET Lite, Apache NMS AMQP
JavaScript/NodeJavaScript/Node RheaRhea

IntegraciónIntegration

Service Bus se integra totalmente con muchos servicios de Microsoft y Azure, por ejemplo:Service Bus fully integrates with many Microsoft and Azure services, for instance:

Pasos siguientesNext steps

Para comenzar a trabajar con la mensajería de Service Bus, consulte los siguientes artículos:To get started using Service Bus messaging, see the following articles: