Preguntas más frecuentes (FAQ) sobre Azure Service Bus

En este artículo se tratan algunas preguntas frecuentes sobre Microsoft Azure Service Bus. También puede consultar las Preguntas más frecuentes de soporte técnico de Microsoft Azure para obtener información general sobre los precios y el soporte técnico de Azure.

Preguntas generales sobre Azure Service Bus

Qué es Azure Service Bus

Azure Service Bus es una plataforma en la nube de mensajería asincrónica que le permite enviar datos entre sistemas desacoplados. Microsoft ofrece esta característica como un servicio, lo que significa que el usuario no tendrá que hospedar su propio hardware para poder utilizarlo.

¿Qué es un espacio de nombres de Service Bus?

Un espacio de nombres proporciona un contenedor con un ámbito para el desvío de recursos de Service Bus en la aplicación. Es necesario crear un espacio de nombres para usar Service Bus y es uno de los primeros pasos para comenzar.

¿Qué es una cola de Azure Service Bus?

Una cola de Service Bus es una entidad en la que se almacenan los mensajes. Las colas son útiles cuando tiene varias aplicaciones o varias partes de una aplicación distribuida que necesitan comunicarse entre sí. La cola es similar a un centro de distribución en el sentido de que se recibe múltiples productos (mensajes) que luego se envían desde esa ubicación.

¿Qué son los temas y las suscripciones de Azure Service Bus?

Un tema se puede visualizar como una cola y cuando utiliza varias suscripciones, se convierte en un modelo de mensajería más enriquecido; básicamente en una herramienta de comunicación de uno a varios. Este modelo de publicación o suscripción (o pub/sub) permite que cuando una aplicación envía un mensaje a un tema con varias suscripciones, el mensaje lo reciban varias aplicaciones.

¿Qué es una entidad con particiones?

Un único agente de mensajes controla una cola o tema convencional, que se almacena en un almacén de mensajería. Las colas o temas con particiones se administran por varios agentes de mensajes y se almacenan en varios almacenes de mensajería. Esta característica significa que el rendimiento general de una cola o tema particionado ya no está limitado por el rendimiento de un solo agente o almacén de mensajería. Además, una interrupción temporal de un almacén de mensajería no hace que una cola o tema con particiones deje de estar disponible.

La ordenación no está garantizada al utilizar entidades con particiones. En caso de que una partición no esté disponible, puede enviar y recibir mensajes de las otras particiones.

¿Dónde se almacenan los datos en Azure Service Bus?

El nivel Estándar de Azure Service Bus emplea Azure SQL Database para su capa de almacenamiento de back-end. En todas las regiones, excepto Sur de Brasil y Sudeste Asiático, la copia de seguridad de una base de datos se hospeda en otra región (normalmente la región emparejada de Azure). En el caso de las regiones Sur de Brasil y Sudeste Asiático, las copias de seguridad de bases de datos se almacenan en la misma región para adaptarse a los requisitos de residencia de datos de dichas regiones.

El nivel Premium de Azure Service Bus almacena los metadatos y los datos en las regiones que se seleccionen. Cuando se configura la recuperación ante desastres geográfica para un espacio de nombres Premium de Azure Service Bus, los metadatos se copian en la región secundaria que se seleccione.

¿Qué puertos es necesario abrir en el firewall?

Puede usar los siguientes protocolos con Azure Service Bus para enviar y recibir mensajes:

  • Advanced Message Queuing Protocol 1.0 (AMQP)
  • Protocolo de transferencia de hipertexto 1.1 con TLS (HTTPS)

Vea la tabla siguiente para obtener los puertos TCP de salida que se deben abrir para usar estos protocolos para comunicarse con Azure Service Bus:

Protocolo Puertos Detalles
AMQP 5671, 5672 AMQP con TLS. Consulte la guía del protocolo AMQP
HTTPS 443 Este puerto se usa para la API HTTP/REST y para AMQP a través de WebSockets

Normalmente, el puerto HTTPS también es necesario para la comunicación saliente cuando se usa AMQP a través del puerto 5671, ya que varias operaciones de administración realizadas por los SDK de cliente y la adquisición de tokens desde Azure Active Directory (cuando se usa) se ejecutan a través de HTTPS.

Los SDK de Azure oficiales suelen usar el protocolo AMQP para enviar y recibir mensajes de Service Bus.

La opción de protocolo AMQP sobre WebSockets se ejecuta a través del puerto TCP 443 como la API HTTP o de REST, pero, de lo contrario, es funcionalmente idéntica a AMQP sin modificar. Esta opción tiene una mayor latencia de conexión inicial debido a los intercambios de protocolo de enlace adicionales y una sobrecarga ligeramente mayor como compensación para compartir el puerto HTTPS. Si se selecciona este modo, el puerto TCP 443 es suficiente para la comunicación. Las opciones siguientes permiten seleccionar el modo WebSockets AMQP.

Lenguaje Opción
.NET (Azure.Messaging.ServiceBus) Cree ServiceBusClient mediante un constructor que adopte ServiceBusClientOptions como parámetro. Establezca ServiceBusClientOptions.TransportType en ServiceBusTransportType.AmqpWebSockets.
.NET (Microsoft.Azure.ServiceBus) Al crear objetos de cliente, use constructores que adoptan TransportType, ServiceBusConnection o ServiceBusConnectionStringBuilder como parámetros.

Para la construcción que adopta transportType como parámetro, establezca el parámetro en TransportType.AmqpWebSockets.

Para el constructor que adopta ServiceBusConnection como parámetro, establezca ServiceBusConnection.TransportType en TransportType.AmqpWebSockets.

Si utiliza ServiceBusConnectionStringBuilder, use constructores que le den una opción para especificar transportType.

Java (com.azure.messaging.servicebus) Al crear clientes, establezca ServiceBusClientBuilder.transportType en AmqpTransportType.AMQP.AMQP_WEB_SOCKETS.
Java (com.microsoft.azure.servicebus) Al crear clientes, establezca transportType de com.microsoft.azure.servicebus.ClientSettings en com.microsoft.azure.servicebus.primitives.TransportType.AMQP_WEB_SOCKETS
JavaScript Al crear objetos de cliente de Service Bus, use la propiedad webSocketOptions en ServiceBusClientOptions.
Python Al crear clientes de Service Bus, establezca ServiceBusClient.transport_type en TransportType.AmqpOverWebSocket.

¿Qué direcciones IP debo agregar a la lista de permitidas?

Para buscar las direcciones IP correctas para agregar a la lista de permitidas para las conexiones, siga estos pasos:

  1. Ejecute el siguiente comando desde el símbolo del sistema:

    nslookup <YourNamespaceName>.servicebus.windows.net
    
  2. Anote la dirección IP devuelta en Non-authoritative answer.

Si usa la redundancia de zona para el espacio de nombres, deberá realizar algunos pasos adicionales:

  1. En primer lugar, ejecute nslookup en el espacio de nombres.

    nslookup <yournamespace>.servicebus.windows.net
    
  2. Anote el nombre de la sección respuesta no autoritativa, que se encuentra en uno de los siguientes formatos:

    <name>-s1.cloudapp.net
    <name>-s2.cloudapp.net
    <name>-s3.cloudapp.net
    
  3. Ejecute nslookup para cada uno con los sufijos s1, s2 y s3 para obtener las direcciones IP de las tres instancias que se ejecutan en tres zonas de disponibilidad.

    Nota

    La dirección IP devuelta por el comando nslookup no es una dirección IP estática. Sin embargo, permanece constante hasta que la implementación subyacente se elimine o se mueva a otro clúster.

¿Dónde puedo encontrar la dirección IP del cliente que envía o recibe mensajes hacia o desde un espacio de nombres?

No registramos las direcciones IP de clientes que envían o reciben mensajes hacia o desde su espacio de nombres. Vuelva a generar las claves para que todos los clientes existentes no puedan autenticarse y revise la configuración de Control de acceso basado en roles de Azure (RBAC de Azure) para asegurarse de que solo los usuarios o las aplicaciones permitidos tienen acceso al espacio de nombres.

Si usa un espacio de nombres Premium, use el filtrado de IP, puntos de conexión de servicio de red virtual y puntos de conexión privados para limitar el acceso al espacio de nombres.

Procedimientos recomendados

¿Cuáles son algunos de los procedimientos recomendados de Azure Service Bus?

Consulte los procedimientos recomendados para mejorar el rendimiento mediante Service Bus: en este artículo se describe cómo optimizar el rendimiento al intercambiar mensajes.

¿Qué debo saber antes de crear entidades?

Las siguientes propiedades de una cola y un tema son inmutables. Tenga en cuenta esta limitación al aprovisionar las entidades, ya que estas no se pueden modificar sin crear una entidad de sustitución.

  • Creación de particiones
  • Sesiones
  • Detección de duplicados
  • Entidad exprés

Precios

En esta sección se responde a algunas preguntas frecuentes sobre la estructura de precios de Service Bus.

En el artículo Precios y facturación de Service Bus se explican los medidores de facturación de Service Bus. Para obtener información específica sobre las opciones de precios de Service Bus, vea Precios de Service Bus.

También puede consultar las Preguntas más frecuentes de soporte técnico de Microsoft Azure para obtener información general sobre los precios de Azure.

¿Cómo se cobra Service Bus?

Para obtener más información sobre los precios de Service Bus, consulte Precios de Service Bus. Además de los precios indicados, se le cobrará por las transferencias de datos asociadas para salidas del centro de datos en el que se aprovisiona la aplicación.

¿Qué uso de Service Bus está sujeto a la transferencia de datos? ¿Cuál no lo está?

Cualquier transferencia de datos dentro de una determinada región de Azure se proporciona sin cargo alguno, así como las transferencias de datos entrantes. La transferencia de datos fuera de una región está sujeta a cargos por concepto de salida; consulte esta página.

¿Service Bus cobra por almacenamiento?

No. Service Bus no cobra por almacenamiento. Sin embargo, hay una cuota que limita la cantidad máxima de datos que pueden persistir por cola o tema. Consulte la siguiente pregunta.

Tengo un espacio de nombres estándar de Service Bus. ¿Por qué veo cargos en el grupo de recursos "$system"?

Azure Service Bus ha actualizado recientemente los componentes de facturación. Debido a este cambio, si tiene un espacio de nombres estándar de Service Bus, puede ver los elementos de línea del recurso "/subscriptions/<azure_subscription_id>/resourceGroups/$system/providers/Microsoft.ServiceBus/namespaces/$system" del grupo de recursos "$system".

Estos cargos representan el cargo base por suscripción de Azure que ha aprovisionado un espacio de nombres de Service Bus estándar.

Es importante tener en cuenta que no se trata de cargos nuevos, es decir, que ya existían en el modelo de facturación anterior. El único cambio es que ahora aparecen en "$system". Esto se hace debido a las restricciones en el nuevo sistema de facturación que agrupa los cargos de nivel de suscripción, no asociados a un recurso específico, en el identificador de recurso "$system".

Cuotas

Para obtener una lista de las cuotas y los límites de Service Bus, consulte la información general sobre cuotas de Service Bus.

Cómo administrar los mensajes con un tamaño superior a 1 MB

Los servicios de mensajería de Service Bus (colas y temas o suscripciones) permiten que la aplicación envíe mensajes de un tamaño de hasta 256 KB (nivel Estándar) o 100 MB (nivel Premium). Si trabaja con mensajes de tamaño superior al tamaño permitido, use el patrón de comprobación de notificaciones que se describe en esta entrada de blog.

Solución de problemas

¿Por qué no puedo crear un espacio de nombres después de eliminarlo de otra suscripción?

Cuando elimine un espacio de nombres de una suscripción, espere 4 horas antes de volver a crearlo con el mismo nombre en otra suscripción. En caso contrario, es posible que reciba el mensaje de error siguiente: Namespace already exists.

¿Cuáles son algunas de las excepciones generadas por las API de Azure Service Bus y sus acciones sugeridas?

Para obtener una lista de posibles excepciones de Service Bus, consulte Información general sobre excepciones.

¿Qué es una firma de acceso compartido y qué lenguajes admiten la generación de una firma?

Firmas de acceso compartido son un mecanismo de autenticación basado en URI y valores hash seguros SHA-256. Para obtener más información acerca de cómo generar sus propias firmas en Node.js, PHP, Java, Python y C#, consulte el artículo sobre las firmas de acceso compartido.

Administración de suscripción y espacio de nombres

¿Cómo se migra un espacio de nombres a otra suscripción de Azure?

Puede mover un espacio de nombres de una suscripción de Azure a otra, a través de Azure Portal o con comandos de PowerShell. Para ejecutar la operación, el espacio de nombres tiene que estar ya activo. El usuario que ejecuta los comandos debe ser administrador en las suscripciones de origen y de destino.

Portal

Para usar Azure Portal para migrar espacios de nombres de Service Bus a otra suscripción, siga las instrucciones indicadas aquí.

PowerShell

La siguiente secuencia de comandos de PowerShell mueve un espacio de nombres de una suscripción de Azure a otra. Para ejecutar esta operación, el espacio de nombres ya debe estar activo y el usuario que ejecuta los comandos de PowerShell debe ser administrador en las suscripciones de origen y destino.

# Create a new resource group in target subscription
Select-AzSubscription -SubscriptionId 'ffffffff-ffff-ffff-ffff-ffffffffffff'
New-AzResourceGroup -Name 'targetRG' -Location 'East US'

# Move namespace from source subscription to target subscription
Select-AzSubscription -SubscriptionId 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
$res = Find-AzResource -ResourceNameContains mynamespace -ResourceType 'Microsoft.ServiceBus/namespaces'
Move-AzResource -DestinationResourceGroupName 'targetRG' -DestinationSubscriptionId 'ffffffff-ffff-ffff-ffff-ffffffffffff' -ResourceId $res.ResourceId

¿Es posible deshabilitar TLS 1.0 o 1.1 en los espacios de nombres de Service Bus?

Sí, puede deshabilitar TLS 1.0 o 1.1 en los espacios de nombres de Service Bus estableciendo la versión mínima de TLS. Para más información, consulte Aplicación de una versión mínima necesaria de Seguridad de la capa de transporte (TLS) para las solicitudes a un espacio de nombres de Service Bus.

Pasos siguientes

Para más información sobre Service Bus, vea los artículos siguientes: