Modifier

Azure Service Bus - Forum Aux Questions (FAQ)

Cet article évoque certaines questions fréquemment posées sur Microsoft Azure Service Bus. Vous pouvez également consulter les Questions fréquentes (FAQ) du support Azure pour obtenir des informations générales de support et de tarification Azure.

Questions générales sur Azure Service Bus

Qu’est-ce qu’Azure Service Bus ?

Azure Service Bus est une plateforme cloud de messagerie asynchrone qui vous permet d’envoyer des données entre systèmes découplés. Microsoft propose cette fonctionnalité en tant que service, ce qui signifie que vous n’avez pas besoin d’héberger votre propre matériel pour l’utiliser.

Présentation des espaces de noms Service Bus

Un espace de nom fournit un conteneur d’étendue pour l’adressage des ressources Service Bus au sein de votre application. Il est nécessaire de créer un espace de noms pour utiliser Service Bus. C’est l’une des premières étapes à effectuer au démarrage.

Présentation des files d’attente Azure Service Bus

Une file d’attente Service Bus est une entité dans laquelle les messages sont stockés. Les files d’attente sont utiles lorsque vous disposez de plusieurs applications ou de plusieurs parties d’une application distribuée qui doivent communiquer entre elles. La file d’attente est comparable à un centre de distribution, dans la mesure où plusieurs produits (messages) sont reçus, puis envoyés à partir de cet emplacement.

Présentation des rubriques et des abonnements Azure Service Bus

Une rubrique peut être visualisée comme une file d’attente. En cas d’utilisation de plusieurs abonnements, elle devient un modèle de messagerie plus riche ; plus simplement, il s’agit d’un outil de communication de type un-à-plusieurs. Ce modèle de publication/abonnement (ou pub/sub) permet à une application d’envoyer un message à une rubrique avec plusieurs abonnements pour que ce message soit reçu par plusieurs applications.

Présentation des entités partitionnées

Une file d’attente ou une rubrique classique est gérée par un seul courtier de messages et stockée dans une seule banque de messagerie. Les files d’attente et rubriques partitionnées sont gérées par plusieurs courtiers de messages et stockées dans plusieurs banques de messagerie. Cette caractéristique signifie que le débit global d’une file d’attente ou d’une rubrique partitionnée n’est plus limité par les performances d’un seul répartiteur de messages ou d’une seule banque de messagerie. En outre, la panne temporaire d’une banque de messagerie ne rend pas une rubrique ou une file d’attente partitionnée indisponible.

Le classement n’est pas garanti lors de l’utilisation d’entités partitionnées. Si une partition n’est pas disponible, vous pouvez toujours envoyer et recevoir des messages des autres partitions.

Où Azure Service Bus stocke-t-il les données ?

Le niveau standard d’Azure Service Bus utilise Azure SQL Database pour sa couche de stockage principale. Pour toutes les régions, à l’exception de Brésil Sud et Asie Sud-Est, la sauvegarde de la base de données est hébergée dans une autre région (généralement la région associée à Azure). Pour les régions Brésil Sud et Asie Sud-Est, les sauvegardes de bases de données sont stockées dans la même région afin de répondre aux exigences de résidence des données pour ces régions.

Le niveau Premium d’Azure Service Bus stocke les métadonnées et les données dans les régions que vous sélectionnez. Quand une géo-reprise d’activité après sinistre est configurée pour un espace de noms premium Azure Service Bus, les métadonnées sont copiées dans la région secondaire que vous sélectionnez.

Quels ports du pare-feu dois-je ouvrir ?

Vous pouvez utiliser les protocoles suivants avec Azure Service Bus pour envoyer et recevoir des messages :

  • Advanced Message Queuing Protocol 1.0 (AMQP)
  • Hypertext Transfer Protocol 1.1 avec TLS (HTTPS)

Consultez le tableau suivant pour savoir quels ports TCP sortants vous devez ouvrir afin d’utiliser ces protocoles dans le but de communiquer avec Azure Service Bus :

Protocol Ports Détails
AMQP 5671, 5672 AMQP avec TLS. Consultez le Guide du protocole AMQP
HTTPS 443 Ce port est utilisé pour l’API HTTP/REST et pour AMQP sur WebSockets

Le port HTTPS est généralement requis pour une communication sortante quand AMQP est utilisé sur le port 5671, car plusieurs opérations de gestion effectuées par les kits de développement logiciel (SDK) clients et l’acquisition de jetons à partir de Microsoft Entra ID (le cas échéant) s’exécutent sur HTTPS.

Les kits de développement logiciel (SDK) officiels Azure utilisent généralement le protocole AMQP pour envoyer et recevoir des messages à partir de Service Bus.

L’option de protocole AMQP sur WebSockets s’exécute sur le port TCP 443, tout comme l’API HTTP/REST, mais son fonctionnement est identique au mode AMQP classique. Cette option présente une latence de connexion initiale plus élevée en raison des allers-retours de liaison supplémentaire et d’une surcharge légèrement plus importante en cas de compromis pour le partage du port HTTPS. Si ce mode est sélectionné, le port TCP 443 s’avère suffisant à des fins de communication. Les options suivantes permettent de sélectionner le mode AMQP WebSockets.

Language Option
.NET (Azure.Messaging.ServiceBus) Créez ServiceBusClient en utilisant un constructeur qui prend ServiceBusClientOptions comme paramètre. Définissez ServiceBusClientOptions.TransportType sur ServiceBusTransportType.AmqpWebSockets.
.NET (Microsoft.Azure.ServiceBus) Lors de la création d’objets clients, utilisez des constructeurs qui acceptent TransportType, ServiceBusConnection ou ServiceBusConnectionStringBuilder comme paramètres.

Pour la construction qui prend transportType comme paramètre, définissez le paramètre sur TransportType.AmqpWebSockets.

Pour le constructeur qui prend ServiceBusConnection comme paramètre, définissez ServiceBusConnection.TransportType sur TransportType.AmqpWebSockets.

Si vous utilisez ServiceBusConnectionStringBuilder, utilisez des constructeurs qui vous donnent la possibilité de spécifier le transportType.

Java (com.azure.messaging.servicebus) Lorsque vous créez des clients, définissez ServiceBusClientBuilder.transportType sur AmqpTransportType.AMQP.AMQP_WEB_SOCKETS.
Java (com.microsoft.azure.servicebus) Lorsque vous créez des clients, définissez transportType dans com.microsoft.azure.servicebus.ClientSettings sur com.microsoft.azure.servicebus.primitives.TransportType.AMQP_WEB_SOCKETS
JavaScript Lorsque vous créez des objets clients Service Bus, utilisez la propriété webSocketOptions dans ServiceBusClientOptions.
Python Lorsque vous créez des clients Service Bus, définissez ServiceBusClient.transport_type sur TransportType.AmqpOverWebSocket.

Le 30 septembre 2026, nous retirerons les bibliothèques WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus et com.microsoft.azure.servicebus du kit de développement logiciel (SDK) Azure Service Bus, qui ne sont pas conformes aux directives du kit de développement logiciel (SDK) Azure. Nous mettrons également fin à la prise en charge du protocole SBMP. Vous ne pourrez donc plus utiliser ce protocole après le 30 septembre 2026. Migrez vers les dernières bibliothèques du kit de développement logiciel (SDK) Azure, qui offre des correctifs de sécurité critiques et des fonctionnalités améliorées, avant cette date.

Bien que les anciennes bibliothèques puissent toujours être utilisées au-delà du 30 septembre 2026, elles ne seront plus prises en charge officiellement et mises à jour par Microsoft. Pour plus d’informations, consultez l’annonce concernant l’arrêt de la prise en charge.

Azure Service Bus prend-il en charge Java Message Service (JMS) ?

Quelles adresses IP dois-je ajouter à la liste d’autorisation ?

Pour trouver les adresses IP à ajouter à la liste d’autorisation pour vos connexions, effectuez les étapes suivantes :

  1. Exécutez la commande suivante depuis une invite de commandes :

    nslookup <YourNamespaceName>.servicebus.windows.net
    
  2. Notez l’adresse IP renvoyée dans Non-authoritative answer.

Si vous utilisez la redondance de zone pour votre espace de noms, vous devez effectuer quelques étapes supplémentaires :

  1. Tout d’abord, exécutez nslookup sur l’espace de noms.

    nslookup <yournamespace>.servicebus.windows.net
    
  2. Notez le nom dans la section Réponse ne faisant pas autorité, qui se présente dans l’un des formats suivants :

    <name>-s1.cloudapp.net
    <name>-s2.cloudapp.net
    <name>-s3.cloudapp.net
    
  3. Exécutez nslookup pour chacun d’eux avec des suffixes s1, s2 et s3 pour obtenir les adresses IP des 3 instances en cours d’exécution dans 3 zones de disponibilité.

    Notes

    L’adresse IP retournée par la commande nslookup n’est pas une adresse IP statique. Il reste constant jusqu’à ce que le déploiement sous-jacent soit supprimé ou déplacé vers un autre cluster. L’utilisation d’adresses IN n’est toutefois pas recommandée ni prise en charge, et vous devrez suivre les modifications apportées aux adresses IP.

Où puis-je trouver l’adresse IP du client qui envoie des messages à un espace de noms ou en reçoit de ce dernier ?

Nous ne journalisons pas les adresses IP des clients qui envoient des messages à votre espace de noms ou en reçoivent de ce dernier. Régénérez les clés afin que tous les clients existants ne puissent pas s’authentifier et passez en revue les paramètres de contrôle d’accès en fonction du rôle Azure (Azure RBAC) pour vous assurer que seuls les utilisateurs ou les applications autorisés ont accès à l’espace de noms.

Si vous utilisez un espace de noms Premium, utilisez le filtrage IP, des points de terminaison de service de réseau virtuel et des points de terminaison privés pour limiter l’accès à l’espace de noms.

Meilleures pratiques

Présentation des meilleures pratiques Azure Service Bus

Consultez Meilleures pratiques relatives aux améliorations du niveau de performance avec Service Bus : cet article explique comment optimiser le niveau de performance lors de l’échange de messages.

Quelles sont les informations à connaître pour pouvoir créer des entités ?

Les propriétés suivantes de file d’attente et de rubrique sont immuables. Tenez compte de cette restriction quand vous créez vos entités, dans la mesure où ces propriétés ne peuvent pas être modifiées sans créer une entité de remplacement.

  • Partitionnement
  • Sessions
  • Détection des doublons
  • Entité rapide

Tarifs

Cette section répond à certaines questions fréquemment posées sur la tarification de Service Bus.

L’article Tarification et facturation de Service Bus explique les paramètres de facturation dans Service Bus. Pour obtenir des informations spécifiques sur les options de tarification de Service Bus, consultez les détails sur la tarification de Service Bus.

Vous pouvez également consulter les Questions fréquentes (FAQ) du support Azure pour obtenir des informations générales sur la tarification Azure.

Quel est le coût de Service Bus ?

Pour obtenir toutes les informations sur la tarification Service Bus, voir la section détails de tarification Service Bus. Outre les prix indiqués, vous êtes facturé pour les transferts de données associés aux sorties à l’extérieur du centre de données dans lequel votre application est déployée.

Quelle est l’utilisation de Service Bus soumise au transfert de données ? Quelle est celle qui ne l’est pas ?

Les transferts de données au sein d’une région Azure donnée sont effectués gratuitement, de même que les transferts de données entrants. Le transfert de données en dehors d’une région est soumis à des frais de sortie consultables ici.

Service Bus facture-t-il le stockage ?

Non. Service Bus ne facture pas le stockage. Toutefois, il existe un quota limitant la quantité maximale de données qui peuvent être conservées par la file d’attente/rubrique. Voir le Forum aux questions suivants.

Je dispose d’un espace de noms Service Bus Standard. Pourquoi des frais sont-ils facturés dans le groupe de ressources « $system » ?

Azure Service Bus a récemment mis à niveau les composants de facturation. En raison de cette modification, si vous avez un espace de noms Service Bus Standard, vous pouvez voir des éléments de ligne pour la ressource /subscriptions/<azure_subscription_id>/resourceGroups/$system/providers/Microsoft.ServiceBus/namespaces/$system sous le groupe de ressources $system.

Ces frais représentent les frais de base par abonnement Azure pour lequel un espace de noms Service Bus Standard est approvisionné.

Il est important de noter que ces frais ne sont pas nouveaux, c’est-à-dire qu’ils existaient également dans le modèle de facturation précédent. La seule modification est qu’ils apparaissent maintenant sous $system. Cela est dû aux contraintes posées par le nouveau système de facturation, qui regroupe les frais engendrés au niveau de l’abonnement, non liés à une ressource en particulier, sous l’ID de ressource $system.

Quotas

Pour obtenir la liste des limites et des quotas Service Bus, consultez Vue d’ensemble des quotas Service Bus.

Comment gérer les messages de taille > à 1 Mo ?

Les services de messagerie Service Bus (files d’attente et rubriques/abonnements) permettent à l’application d’envoyer des messages dont la taille peut aller jusqu’à 256 Ko (niveau Standard) ou 100 Mo (niveau Premium). En présence de messages dont la taille est supérieure à la taille autorisée, utilisez le modèle de vérification des requêtes décrit dans ce billet de blog.

Résolution des problèmes

Pourquoi ne suis-je pas en mesure de créer un espace de noms après l'avoir supprimé d'un autre abonnement ?

Lorsque vous supprimez un espace de noms d’un abonnement, patientez pendant 4 heures avant de le recréer avec le même nom dans un autre abonnement. Sinon, le message d’erreur suivant peut s’afficher : Namespace already exists.

Quelles sont les exceptions générées par les API Azure Service Bus et les actions recommandées ?

Pour obtenir la liste des exceptions Service Bus potentielles, consultez Vue d’ensemble des exceptions.

Qu’est-ce qu’une signature d’accès partagé et quels langages prennent en charge la génération d’une signature ?

Les signatures d’accès partagé sont un mécanisme d’authentification basé sur des hachages sécurisés SHA-256 ou des URI. Pour plus d’informations sur la génération de vos propres signatures en Node.js, PHP, Java, Python et C#, consultez l’article Signatures d’accès partagé.

Gestion des abonnements et des espaces de noms

Migration d’un espace de noms vers un autre abonnement Azure

Vous pouvez déplacer un espace de noms d’un abonnement Azure vers un autre, à l’aide du portail Azure ou de commandes PowerShell. Pour exécuter cette opération, l’espace de noms doit être déjà actif. L’utilisateur qui exécute les commandes doit être administrateur dans les abonnements source et cible.

Portail

Pour utiliser le Portail Azure et migrer les espaces de noms Service Bus vers un autre abonnement, suivez les instructions décrites ici.

PowerShell

La séquence suivante de commandes PowerShell déplace un espace de noms d’un abonnement Azure vers un autre. Pour exécuter cette opération, l'espace de noms doit être déjà actif, et l'utilisateur qui exécute les commandes PowerShell doit être administrateur des abonnements à la fois source et cible.

# 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

Est-il possible de désactiver TLS 1.0 ou 1.1 sur les espaces de noms Service Bus ?

Oui, vous pouvez désactiver TLS 1.0 ou 1.1 sur les espaces de noms Service Bus en définissant la version minimale de TLS. Pour plus d’informations, consultez Appliquer une version minimale requise du protocole TLS (Transport Layer Security) pour des demandes adressées à un espace de noms Service Bus.

Étapes suivantes

Pour en savoir plus sur Service Bus, lisez les articles suivants :