Files d’attente Azure et files d’attente Service Bus : comparaison et différencesStorage queues and Service Bus queues - compared and contrasted

Cet article analyse les différences et les similitudes entre les deux types de files d'attente proposés par Microsoft Azure : Files d’attente de stockage et files d’attente Service Bus.This article analyzes the differences and similarities between the two types of queues offered by Microsoft Azure today: Storage queues and Service Bus queues. À l'aide de ces informations, vous pouvez comparer les technologies respectives et être en mesure de prendre une décision éclairée concernant la solution adaptée à vos besoins.By using this information, you can compare and contrast the respective technologies and be able to make a more informed decision about which solution best meets your needs.

PrésentationIntroduction

Azure prend en charge deux types de mécanismes de file d’attente : Files d'attente de stockage et files d'attente Service Bus.Azure supports two types of queue mechanisms: Storage queues and Service Bus queues.

Les files d’attente de stockage, qui font partie de l’infrastructure de stockage Azure, incluent une simple interface GET/PUT/PEEK basée sur REST, qui fournit une messagerie fiable et persistante au sein des services et entre ces derniers.Storage queues, which are part of the Azure storage infrastructure, feature a simple REST-based GET/PUT/PEEK interface, providing reliable, persistent messaging within and between services.

Les files d’attente Service Bus font partie d’une infrastructure de messagerie Azure plus large qui prend en charge la mise en file d’attente, ainsi que la publication/l’abonnement, l’accès distant au service Web et les modèles d’intégration.Service Bus queues are part of a broader Azure messaging infrastructure that supports queuing as well as publish/subscribe, and more advanced integration patterns. Pour plus d’informations sur les files d’attente, les rubriques et les abonnements Service Bus, consultez Vue d’ensemble de Service Bus.For more information about Service Bus queues/topics/subscriptions, see the overview of Service Bus.

Bien que les deux technologies de file d’attente coexistent, les files d’attente Azure sont apparues en premier, en tant que mécanisme de stockage en file d’attente dédié, basé sur les services de stockage Azure.While both queuing technologies exist concurrently, Storage queues were introduced first, as a dedicated queue storage mechanism built on top of Azure Storage services. Les files d’attente Service Bus font partie d’une infrastructure de messagerie plus large conçue pour intégrer des applications ou des composants d’applications qui peuvent s’étendre sur plusieurs protocoles de communication, contrats de données, domaines de confiance et/ou environnements réseau.Service Bus queues are built on top of the broader messaging infrastructure designed to integrate applications or application components that may span multiple communication protocols, data contracts, trust domains, and/or network environments.

Considérations relatives à la sélection de la technologieTechnology selection considerations

Les files d’attente Azure et Service Bus sont des implémentations du service de mise en file d’attente des messages, actuellement proposé par Microsoft Azure.Both Storage queues and Service Bus queues are implementations of the message queuing service currently offered by Microsoft Azure. Chaque technologie possède un ensemble de fonctionnalités légèrement différent, ce qui signifie que vous pouvez choisir l'une ou l'autre, ou utiliser les deux, selon les besoins de votre solution spécifique ou du problème d'entreprise/technique à résoudre.Each has a slightly different feature set, which means you can choose one or the other, or use both, depending on the needs of your particular solution or business/technical problem you are solving.

Pour déterminer quelle technologie de file d’attente est adaptée à une solution donnée, les développeurs et les architectes de solutions doivent prendre en compte ces recommandations.When determining which queuing technology fits the purpose for a given solution, solution architects and developers should consider these recommendations. Pour plus d'informations, consultez la section suivante.For more details, see the next section.

En tant que développeur/architecte de solutions, vous devez envisager d’utiliser les files d’attente Azure dans les cas de figure suivants :As a solution architect/developer, you should consider using Storage queues when:

  • Votre application doit stocker plus de 80 Go de messages dans une file d’attente.Your application must store over 80 GB of messages in a queue.
  • Votre application veut suivre la progression du traitement d'un message dans la file d'attente.Your application wants to track progress for processing a message inside of the queue. Cela est utile si le processus traitant un message se bloque.This is useful if the worker processing a message crashes. Un processus suivant peut alors utiliser ces informations pour continuer là où le processus précédent s'était arrêté.A subsequent worker can then use that information to continue from where the prior worker left off.
  • Vous avez besoin de journaux d’activité côté serveur de toutes les transactions exécutées sur les files d’attente.You require server side logs of all of the transactions executed against your queues.

En tant que développeur/architecte de solutions, vous devez envisager d’utiliser les files d’attente Service Bus lorsque :As a solution architect/developer, you should consider using Service Bus queues when:

  • Votre solution doit être en mesure de recevoir des messages sans devoir interroger la file d'attente.Your solution must be able to receive messages without having to poll the queue. Avec Service Bus, ceci peut être réalisé avec l'utilisation de l'opération de réception à interrogation longue à l'aide des protocoles TCP pris en charge par Service Bus.With Service Bus, this can be achieved through the use of the long-polling receive operation using the TCP-based protocols that Service Bus supports.
  • Votre solution nécessite la file d'attente pour fournir une livraison organisée selon la méthode Premier entré, premier sortie.Your solution requires the queue to provide a guaranteed first-in-first-out (FIFO) ordered delivery.
  • Votre solution doit pouvoir prendre en charge la détection automatique des doublons.Your solution must be able to support automatic duplicate detection.
  • Vous voulez que votre application traite les messages sous forme de flux de longue durée parallèles (les messages sont associés à un flux à l’aide de la propriété SessionId du message).You want your application to process messages as parallel long-running streams (messages are associated with a stream using the SessionId property on the message). Dans ce modèle, chaque nœud de l'application consommatrice entre en concurrence pour les flux, contrairement aux messages.In this model, each node in the consuming application competes for streams, as opposed to messages. Lorsqu'un flux est donné à un nœud consommateur, le nœud peut examiner l'état du flux de l'application à l'aide de transactions.When a stream is given to a consuming node, the node can examine the state of the application stream state using transactions.
  • Votre solution nécessite un comportement transactionnel et l'atomicité lors de l'envoi ou de la réception de plusieurs messages à partir d'une file d'attente.Your solution requires transactional behavior and atomicity when sending or receiving multiple messages from a queue.
  • Votre application gère des messages qui peuvent dépasser 64 Ko, mais qui n'atteindront sans doute pas la limite de 256 Ko.Your application handles messages that can exceed 64 KB but will not likely approach the 256 KB limit.
  • Vous êtes confronté à l'exigence de fournir un modèle d'accès basé sur les rôles aux files d'attente et des droits/autorisations différents pour les expéditeurs et les destinataires.You deal with a requirement to provide a role-based access model to the queues, and different rights/permissions for senders and receivers.
  • La taille de la file d'attente ne sera pas supérieure à 80 Go.Your queue size will not grow larger than 80 GB.
  • Vous souhaitez utiliser le protocole de messagerie basé sur les normes AMQP 1.0.You want to use the AMQP 1.0 standards-based messaging protocol. Pour plus d’informations sur AMQP, consultez Présentation d’AMQP Service Bus.For more information about AMQP, see Service Bus AMQP Overview.
  • Vous pouvez prévoir une migration éventuelle de la communication point à point basée sur la file d'attente vers un modèle d'échange de messages qui permet une intégration transparente de récepteurs (abonnés) supplémentaires, chacun d'entre eux recevant des copies indépendantes de certains ou de tous les messages envoyés à la file d'attente.You can envision an eventual migration from queue-based point-to-point communication to a message exchange pattern that enables seamless integration of additional receivers (subscribers), each of which receives independent copies of either some or all messages sent to the queue. Ce dernier point fait référence à la fonctionnalité publication/abonnement en mode natif fournie par Service Bus.The latter refers to the publish/subscribe capability natively provided by Service Bus.
  • Votre solution de messagerie doit être en mesure de prendre en charge la garantie de remise « Une fois au maximum » sans que vous ayez besoin de créer des composants d’infrastructure supplémentaires.Your messaging solution must be able to support the "At-Most-Once" delivery guarantee without the need for you to build the additional infrastructure components.
  • Vous souhaitez être en mesure de publier et d'utiliser des lots de messages.You would like to be able to publish and consume batches of messages.

Comparaison des files d’attente Azure et des files d’attente Service BusComparing Storage queues and Service Bus queues

Dans les sections suivantes, les tableaux regroupent logiquement les fonctionnalités de file d’attente et vous permettent de comparer, en un clin d’œil, les fonctionnalités disponibles dans les files d’attente du stockage Azure et les files d’attente Service Bus.The tables in the following sections provide a logical grouping of queue features and let you compare, at a glance, the capabilities available in both Azure Storage queues and Service Bus queues.

Fonctions de baseFoundational capabilities

Cette section compare certaines des fonctionnalités de base fournies par les files d’attente Azure et les files d’attente Service Bus.This section compares some of the fundamental queuing capabilities provided by Storage queues and Service Bus queues.

Critères de comparaisonComparison Criteria Files d’attente de stockageStorage queues Files d’attente Service BusService Bus queues
Garantie de classementOrdering guarantee NonNo

Pour plus d’informations, consultez la première remarque dans la section « Informations supplémentaires ».For more information, see the first note in the “Additional Information” section.
Oui - Premier entré premier sorti (PEPS)Yes - First-In-First-Out (FIFO)

(par le biais de l’utilisation de sessions de messagerie)(through the use of messaging sessions)
Garantie de livraisonDelivery guarantee Au moins une foisAt-Least-Once Au moins une foisAt-Least-Once

Une fois au maximumAt-Most-Once
Prise en charge des opérations atomiquesAtomic operation support NonNo OuiYes

Comportement de réceptionReceive behavior Non bloquantNon-blocking

(se termine immédiatement si aucun nouveau message n’est trouvé)(completes immediately if no new message is found)
Blocage avec ou sans délai d’expirationBlocking with/without timeout

(offre une interrogation longue, dite « technique Comet »)(offers long polling, or the "Comet technique")

Non bloquantNon-blocking

(via l’utilisation d’une API gérée sur .NET uniquement)(through the use of .NET managed API only)
API style PushPush-style API NonNo OuiYes

API .NET OnMessage et sessions OnMessage.OnMessage and OnMessage sessions .NET API.
Mode de réceptionReceive mode Aperçu et attributionPeek & Lease Aperçu et verrouillagePeek & Lock

Réception et suppressionReceive & Delete
Mode d'accès exclusifExclusive access mode Basé sur attributionLease-based Basé sur verrouillageLock-based
Durée attribution/verrouillageLease/Lock duration 30 secondes (par défaut)30 seconds (default)

7 jours (maximum) (Vous pouvez renouveler ou libérer l’attribution d’un message à l’aide de l’API UpdateMessage.)7 days (maximum) (You can renew or release a message lease using the UpdateMessage API.)
60 secondes (par défaut)60 seconds (default)

Vous pouvez renouveler le verrouillage d’un message à l’aide de l’API RenewLock.You can renew a message lock using the RenewLock API.
Précision attribution/verrouillageLease/Lock precision Au niveau du messageMessage level

(chaque message peut avoir une valeur de délai d’attente différente, que vous pouvez ensuite mettre à jour en fonction des besoins lors du traitement du message, à l’aide de l’API UpdateMessage)(each message can have a different timeout value, which you can then update as needed while processing the message, by using the UpdateMessage API)
Au niveau de la file d’attenteQueue level

(pour chaque file d’attente, une précision de verrouillage est appliquée à tous les messages, mais vous pouvez renouveler le verrouillage à l’aide de l’API RenewLock.)(each queue has a lock precision applied to all of its messages, but you can renew the lock using the RenewLock API.)
Réception par lotsBatched receive OuiYes

(en spécifiant explicitement le nombre de messages lors de la récupération des messages, avec un maximum de 32 messages)(explicitly specifying message count when retrieving messages, up to a maximum of 32 messages)
OuiYes

(en activant implicitement une propriété de pré-récupération ou explicitement par le biais de l’utilisation de transactions)(implicitly enabling a pre-fetch property or explicitly through the use of transactions)
Envoi par lotsBatched send NonNo OuiYes

(par le biais de l’utilisation de transactions ou du traitement par lots côté client)(through the use of transactions or client-side batching)

Informations supplémentairesAdditional information

  • Les messages dans les files d’attente de stockage se voient en général appliquer la méthode Premier entré, premier sorti. Mais ils peuvent parfois être dans le désordre. C’est le cas lorsque le délai de visibilité d’un message expire (par exemple, à cause du blocage d’une application cliente pendant le traitement).Messages in Storage queues are typically first-in-first-out, but sometimes they can be out of order; for example, when a message's visibility timeout duration expires (for example, as a result of a client application crashing during processing). Lorsque le délai de visibilité expire, le message est de nouveau visible dans la file d'attente et un autre processus peut le retirer de la file d'attente.When the visibility timeout expires, the message becomes visible again on the queue for another worker to dequeue it. À ce stade, le message nouvellement visible peut être placé dans la file d'attente (pour en être de nouveau retiré) après un message qui se trouvait à l'origine dans la file d'attente après lui.At that point, the newly visible message might be placed in the queue (to be dequeued again) after a message that was originally enqueued after it.
  • Le modèle Premier entré, premier sorti garanti dans les files d'attente Service Bus requiert l'utilisation de sessions de messagerie.The guaranteed FIFO pattern in Service Bus queues requires the use of messaging sessions. Dans le cas où l’application se bloque lors du traitement d’un message reçu en mode Aperçu et verrouillage, la prochaine fois qu’un destinataire de file d’attente acceptera une session de messagerie, celle-ci démarrera avec le message ayant échoué après que sa durée de vie ait expiré.In the event that the application crashes while processing a message received in the Peek & Lock mode, the next time a queue receiver accepts a messaging session, it will start with the failed message after its time-to-live (TTL) period expires.
  • Les files d’attente de stockage sont conçues pour prendre en charge des scénarios de mise en file d’attente standard, tels que le découplage de composants d’application pour augmenter l’évolutivité et la tolérance aux pannes, le nivellement de charge et la création des workflows de processus.Storage queues are designed to support standard queuing scenarios, such as decoupling application components to increase scalability and tolerance for failures, load leveling, and building process workflows.
  • Les files d’attente Service Bus prennent en charge la garantie de livraison Au moins une fois.Service Bus queues support the At-Least-Once delivery guarantee.
  • Incohérences en ce qui concerne la gestion des messages dans le contexte de sessions Service Bus peuvent être évitées à l’aide de l’état de session pour stocker l’état de l’application par rapport à la progression de séquence de message de la session de gestion et à l’aide de transactions autour règlement reçu des messages et la mise à jour de l’état de session.Inconsistencies with regard to message handling in the context of Service Bus sessions can be avoided by using session state to store the application's state relative to the progress of handling the session's message sequence, and by using transactions around settling received messages and updating the session state. Ce type de fonctionnalité de cohérence porte parfois exactement-une fois le traitement dans les produits d’autres fournisseurs, mais la transaction échecs évidemment provoquera des messages être redeliveried et par conséquent, le terme n’est pas tout à fait suffisant.This kind of consistency feature is sometimes labeled Exactly-Once Processing in other vendor's products, but transaction failures will obviously cause messages to be redeliveried and therefore the term is not exactly adequate.
  • Les files d’attente de stockage fournissent un modèle de programmation uniforme et cohérent entre les files d’attente, les tables et les objets blob, pour les développeurs et les équipes d’exploitation.Storage queues provide a uniform and consistent programming model across queues, tables, and BLOBs – both for developers and for operations teams.
  • Les files d'attente Service Bus prennent en charge les transactions locales dans le contexte d'une file d'attente unique.Service Bus queues provide support for local transactions in the context of a single queue.
  • Le mode Réception et suppression pris en charge par Service Bus offre la possibilité de réduire le nombre d’opérations de messagerie (et le coût associé) en échange d’une garantie de livraison réduite.The Receive and Delete mode supported by Service Bus provides the ability to reduce the messaging operation count (and associated cost) in exchange for lowered delivery assurance.
  • Les files d’attente de stockage fournissent des attributions avec la possibilité de les étendre aux messages.Storage queues provide leases with the ability to extend the leases for messages. Ainsi, les processus peuvent maintenir des attributions de courte durée pour les messages.This allows the workers to maintain short leases on messages. Par conséquent, si un processus se bloque, le message peut être rapidement traité à nouveau par un autre processus.Thus, if a worker crashes, the message can be quickly processed again by another worker. En outre, un processus peut étendre l'attribution d'un message s'il doit le traiter pendant une période plus longue que la durée de l'attribution.In addition, a worker can extend the lease on a message if it needs to process it longer than the current lease time.
  • Les files d’attente de stockage offrent un délai de visibilité que vous pouvez définir au moment de la mise en file d’attente ou du retrait de la file d’attente d’un message.Storage queues offer a visibility timeout that you can set upon the enqueuing or dequeuing of a message. En outre, vous pouvez mettre à jour un message avec des valeurs d’attribution différentes lors de l’exécution et mettre à jour des valeurs différentes entre des messages dans la même file d’attente.In addition, you can update a message with different lease values at run-time, and update different values across messages in the same queue. Les délais de verrouillage Service Bus sont définis dans les métadonnées de la file d’attente. Toutefois, vous pouvez renouveler le verrouillage en appelant la méthode RenewLock.Service Bus lock timeouts are defined in the queue metadata; however, you can renew the lock by calling the RenewLock method.
  • Le délai d'attente maximal pour une opération de réception de blocage dans les files d'attente Service Bus est de 24 jours.The maximum timeout for a blocking receive operation in Service Bus queues is 24 days. Toutefois, les délais d'attente basés sur REST ont une valeur maximale de 55 secondes.However, REST-based timeouts have a maximum value of 55 seconds.
  • Le traitement par lots côté client fourni par Service Bus permet à un client de file d'attente de traiter par lots plusieurs messages dans une seule opération d'envoi.Client-side batching provided by Service Bus enables a queue client to batch multiple messages into a single send operation. Le traitement par lots n'est disponible que pour les opérations d'envoi asynchrones.Batching is only available for asynchronous send operations.
  • Certaines fonctionnalités telles que la limite de 200 To pour les files d’attente de stockage (davantage lorsque vous virtualisez des comptes) et un nombre illimité de files d’attente en font une plateforme idéale pour les fournisseurs SaaS.Features such as the 200 TB ceiling of Storage queues (more when you virtualize accounts) and unlimited queues make it an ideal platform for SaaS providers.
  • Les files d’attente de stockage fournissent un mécanisme performant et flexible de contrôle d’accès délégué.Storage queues provide a flexible and performant delegated access control mechanism.

Fonctionnalités avancéesAdvanced capabilities

Cette section compare les fonctionnalités avancées des files d’attente Azure et des files d’attente Service Bus.This section compares advanced capabilities provided by Storage queues and Service Bus queues.

Critères de comparaisonComparison Criteria Files d’attente de stockageStorage queues Files d’attente Service BusService Bus queues
Remise planifiéeScheduled delivery OuiYes OuiYes
Lettre morte automatiqueAutomatic dead lettering NonNo OuiYes
Augmenter la valeur de durée de vie de la file d'attenteIncreasing queue time-to-live value OuiYes

(par le biais de la mise à jour sur place du délai de visibilité)(via in-place update of visibility timeout)
OuiYes

(par le biais d’une fonction API dédiée)(provided via a dedicated API function)
Prise en charge des messages incohérentsPoison message support OuiYes OuiYes
Mise à jour sur placeIn-place update OuiYes OuiYes
Journal des transactions côté serveurServer-side transaction log OuiYes NonNo
Métriques de stockageStorage metrics OuiYes

Métriques par minute : fournit des métriques en temps réel pour la disponibilité, le TPS, le nombre d’appels API, le nombre d’erreurs, etc., le tout en temps réel (métriques agrégées par minute et consignées en l’espace de quelques minutes à partir de ce qui vient de se passer en production).Minute Metrics: provides real-time metrics for availability, TPS, API call counts, error counts, and more, all in real time (aggregated per minute and reported within a few minutes from what just happened in production. Pour plus d’informations, voir la page À propos des mesures Storage Analytics.For more information, see About Storage Analytics Metrics.
OuiYes

(requêtes en bloc en appelant GetQueues)(bulk queries by calling GetQueues)
Gestion de l'étatState management NonNo OuiYes

Microsoft.ServiceBus.Messaging.EntityStatus.Active, Microsoft.ServiceBus.Messaging.EntityStatus.Disabled, Microsoft.ServiceBus.Messaging.EntityStatus.SendDisabled, Microsoft.ServiceBus.Messaging.EntityStatus.ReceiveDisabledMicrosoft.ServiceBus.Messaging.EntityStatus.Active, Microsoft.ServiceBus.Messaging.EntityStatus.Disabled, Microsoft.ServiceBus.Messaging.EntityStatus.SendDisabled, Microsoft.ServiceBus.Messaging.EntityStatus.ReceiveDisabled
Transfert automatique des messagesMessage auto-forwarding NonNo OuiYes
Fonction de purge de la file d'attentePurge queue function OuiYes NonNo
Groupes de messagesMessage groups NonNo OuiYes

(par le biais de l’utilisation de sessions de messagerie)(through the use of messaging sessions)
État de l'application par groupe de messagesApplication state per message group NonNo OuiYes
Détection des doublonsDuplicate detection NonNo OuiYes

(configurable du côté expéditeur)(configurable on the sender side)
Consultation des groupes de messagesBrowsing message groups NonNo OuiYes
Récupération des sessions de messagerie par IDFetching message sessions by ID NonNo OuiYes

Informations supplémentairesAdditional information

  • Les deux technologies de mise en file d'attente permettent de planifier la remise d'un message à une date ultérieure.Both queuing technologies enable a message to be scheduled for delivery at a later time.
  • Le transfert automatique de file d'attente permet à des milliers de files d'attente de transférer automatiquement leurs messages à une seule file d'attente, à partir de laquelle l'application réceptrice consomme le message.Queue auto-forwarding enables thousands of queues to auto-forward their messages to a single queue, from which the receiving application consumes the message. Vous pouvez utiliser ce mécanisme pour garantir la sécurité, contrôler le flux et isoler le stockage entre chaque serveur de publication de message.You can use this mechanism to achieve security, control flow, and isolate storage between each message publisher.
  • Les files d’attente de stockage prennent en charge la mise à jour du contenu des messages.Storage queues provide support for updating message content. Vous pouvez utiliser cette fonctionnalité pour les informations d'état persistantes et les mises à jour incrémentielles de progression dans le message, afin que celui-ci puisse être traité à partir du dernier point de contrôle connu, au lieu de recommencer depuis le début.You can use this functionality for persisting state information and incremental progress updates into the message so that it can be processed from the last known checkpoint, instead of starting from scratch. Avec les files d'attente Service Bus, vous pouvez activer le même scénario à l'aide des sessions de messagerie.With Service Bus queues, you can enable the same scenario through the use of message sessions. Les sessions vous permettent d’enregistrer et de récupérer l’état de traitement de l’application (à l’aide de SetState et GetState).Sessions enable you to save and retrieve the application processing state (by using SetState and GetState).
  • Le concept de Lettre morte, qui est uniquement pris en charge par les files d’attente Service Bus, peut être utile pour isoler les messages qui ne peuvent pas être traités correctement par l’application réceptrice ou lorsque les messages n’atteignent pas leur destination en raison d’une propriété de durée de vie (TTL) expirée.Dead lettering, which is only supported by Service Bus queues, can be useful for isolating messages that cannot be processed successfully by the receiving application or when messages cannot reach their destination due to an expired time-to-live (TTL) property. La valeur de durée de vie spécifie la durée pendant laquelle un message reste dans la file d'attente.The TTL value specifies how long a message remains in the queue. Avec Service Bus, le message est déplacé vers une file d'attente spéciale appelée $DeadLetterQueue lorsque la durée de vie expire.With Service Bus, the message will be moved to a special queue called $DeadLetterQueue when the TTL period expires.
  • Pour trouver les messages « incohérents » dans les files d’attente Azure, lors du retrait d’un message de la file d’attente, l’application examine la propriété DequeueCount du message.To find "poison" messages in Storage queues, when dequeuing a message the application examines the DequeueCount property of the message. Si la propriété DequeueCount dépasse un seuil donné, l’application déplace le message vers une file d’attente de type « lettre morte » définie par l’application.If DequeueCount is greater than a given threshold, the application moves the message to an application-defined "dead letter" queue.
  • Les files d’attente de stockage vous permettent d’obtenir un journal détaillé de toutes les transactions exécutées sur la file d’attente, ainsi que des mesures agrégées.Storage queues enable you to obtain a detailed log of all of the transactions executed against the queue, as well as aggregated metrics. Ces deux options sont utiles pour déboguer et comprendre comment votre application utilise les files d’attente de stockage.Both of these options are useful for debugging and understanding how your application uses Storage queues. Elles sont également utiles pour régler les performances de votre application et réduire les coûts d'utilisation des files d'attente.They are also useful for performance-tuning your application and reducing the costs of using queues.
  • Le concept de « sessions de messagerie » pris en charge par Service Bus permet aux messages appartenant à un certain groupe logique d’être associés à un destinataire spécifique, ce qui ensuite crée une affinité de type session entre les messages et leurs récepteurs respectifs.The concept of "message sessions" supported by Service Bus enables messages that belong to a certain logical group to be associated with a given receiver, which in turn creates a session-like affinity between messages and their respective receivers. Vous pouvez activer cette fonctionnalité avancée dans Service Bus en définissant la propriété SessionID d’un message.You can enable this advanced functionality in Service Bus by setting the SessionID property on a message. Les récepteurs peuvent ensuite écouter par le biais d'un ID de session spécifique et recevoir les messages qui partagent l'identificateur de session spécifié.Receivers can then listen on a specific session ID and receive messages that share the specified session identifier.
  • La fonctionnalité de détection des doublons prise en charge par les files d’attente Service Bus supprime automatiquement les messages en double envoyés à une file d’attente ou une rubrique, selon la valeur de la propriété MessageId.The duplication detection functionality supported by Service Bus queues automatically removes duplicate messages sent to a queue or topic, based on the value of the MessageId property.

Capacité et quotasCapacity and quotas

Cette section compare les files d’attente de stockage et les files d’attente Service Bus du point de vue des capacités et des quotas applicables.This section compares Storage queues and Service Bus queues from the perspective of capacity and quotas that may apply.

Critères de comparaisonComparison Criteria Files d’attente de stockageStorage queues Files d’attente Service BusService Bus queues
Taille de file d'attente maximaleMaximum queue size 500 To500 TB

(limitée à une capacité de compte de stockage unique)(limited to a single storage account capacity)
1 Go à 80 Go1 GB to 80 GB

(définie lors de la création d’une file d’attente et d’une activation du partitionnement – consultez la section « Informations supplémentaires »)(defined upon creation of a queue and enabling partitioning – see the “Additional Information” section)
Taille de message maximaleMaximum message size 64 Ko64 KB

(48 Ko avec un codage en Base64)(48 KB when using Base64 encoding)

Azure prend en charge les messages volumineux en combinant des files d’attente et des objets blob. Dans ce cas, vous pouvez placer jusqu’à 200 Go en file d’attente pour un seul élément.Azure supports large messages by combining queues and blobs – at which point you can enqueue up to 200 GB for a single item.
256 Ko ou 1 Mo256 KB or 1 MB

(y compris l’en-tête et le corps, taille maximale d’en-tête : 64 Ko).(including both header and body, maximum header size: 64 KB).

Dépend du niveau de service.Depends on the service tier.
Durée de vie maximale des messagesMaximum message TTL Infini (avec api-version 2017-07-27)Infinite (as of api-version 2017-07-27) TimeSpan.MaxTimeSpan.Max
Nombre maximal de files d'attenteMaximum number of queues IllimitéUnlimited 10,00010,000

(par espace de noms de service)(per service namespace)
Nombre maximal de clients simultanésMaximum number of concurrent clients IllimitéUnlimited IllimitéUnlimited

(la limite de 100 connexions simultanées s’applique uniquement à la communication basée sur le protocole TCP)(100 concurrent connection limit only applies to TCP protocol-based communication)

Informations supplémentairesAdditional information

  • Service Bus applique les limites en termes de taille de file d'attente.Service Bus enforces queue size limits. La taille de file d'attente maximale est spécifiée lors de la création de la file d'attente et peut avoir une valeur comprise entre 1 Go et 80 Go.The maximum queue size is specified upon creation of the queue and can have a value between 1 and 80 GB. Si la valeur de taille de la file d'attente définie lors de la création de celle-ci est atteinte, les messages entrants supplémentaires seront rejetés et une exception sera reçue par le code appelant.If the queue size value set on creation of the queue is reached, additional incoming messages will be rejected and an exception will be received by the calling code. Pour plus d’informations sur les quotas dans Service Bus, consultez Quotas Service Bus.For more information about quotas in Service Bus, see Service Bus Quotas.
  • Le partitionnement n’est pas pris en charge dans le niveau Premium.Partitioning is not supported in the Premium tier. Dans le niveau Standard, vous pouvez créer des files d'attente Service Bus avec des tailles de 1, 2, 3, 4 ou 5 Go (la valeur par défaut est 1 Go).In the Standard tier, you can create Service Bus queues in 1, 2, 3, 4, or 5 GB sizes (the default is 1 GB). Dans le niveau Standard, avec le partitionnement activé (qui est la valeur par défaut), Service Bus crée 16 partitions pour chaque Go que vous spécifiez.In Standard tier, with partitioning enabled (which is the default), Service Bus creates 16 partitions for each GB you specify. Par conséquent, si vous créez une file d’attente de 5 Go, avec 16 partitions la taille maximale de la file d’attente est (5 * 16) = 80 Go.As such, if you create a queue that is 5 GB in size, with 16 partitions the maximum queue size becomes (5 * 16) = 80 GB. Vous pouvez voir la taille maximale de votre file d’attente ou rubrique partitionnée en examinant son entrée dans le portail Azure.You can see the maximum size of your partitioned queue or topic by looking at its entry on the Azure portal.
  • Avec les files d’attente de stockage, si le contenu du message n’est pas sécurisé pour XML, il doit être encodé au format Base64.With Storage queues, if the content of the message is not XML-safe, then it must be Base64 encoded. Si vous encodez le message au format Base64, la charge utilisateur peut atteindre 48 Ko, au lieu de 64 Ko.If you Base64-encode the message, the user payload can be up to 48 KB, instead of 64 KB.
  • Avec les files d’attente Service Bus, chaque message stocké dans une file d’attente est composé de deux parties : un en-tête et un corps.With Service Bus queues, each message stored in a queue is composed of two parts: a header and a body. La taille totale du message ne peut pas dépasser la taille de message maximale prise en charge par le niveau de service.The total size of the message cannot exceed the maximum message size supported by the service tier.
  • Lorsque des clients communiquent avec des files d'attente Service Bus au moyen du protocole TCP, le nombre maximal de connexions simultanées à une file d'attente Service Bus unique est limité à 100.When clients communicate with Service Bus queues over the TCP protocol, the maximum number of concurrent connections to a single Service Bus queue is limited to 100. Ce nombre est partagé entre les expéditeurs et les destinataires.This number is shared between senders and receivers. Si ce quota est atteint, les requêtes suivantes pour des connexions supplémentaires sont rejetées et une exception sera reçue par le code appelant.If this quota is reached, subsequent requests for additional connections will be rejected and an exception will be received by the calling code. Cette limite n'est pas appliquée aux clients qui se connectent aux files d'attente à l'aide d'une API REST.This limit is not imposed on clients connecting to the queues using REST-based API.
  • Si vous avez besoin de plus de 10 000 files d'attente dans un seul espace de noms Service Bus, vous pouvez contacter l'équipe de support Azure et demander l'augmentation du nombre de files d'attente.If you require more than 10,000 queues in a single Service Bus namespace, you can contact the Azure support team and request an increase. Pour aller au-delà de 10 000 files d’attente avec Service Bus, vous pouvez également créer des espaces de noms supplémentaires à l’aide du portail Azure.To scale beyond 10,000 queues with Service Bus, you can also create additional namespaces using the Azure portal.

Gestion et opérationsManagement and operations

Cette section compare les fonctionnalités de gestion fournies par les files d’attente de stockage et les files d’attente Service Bus.This section compares the management features provided by Storage queues and Service Bus queues.

Critères de comparaisonComparison Criteria Files d’attente de stockageStorage queues Files d’attente Service BusService Bus queues
Protocole de gestionManagement protocol REST sur HTTP/HTTPSREST over HTTP/HTTPS REST sur HTTPSREST over HTTPS
Protocole d'exécutionRuntime protocol REST sur HTTP/HTTPSREST over HTTP/HTTPS REST sur HTTPSREST over HTTPS

Norme AMQP 1.0 (TCP avec TLS)AMQP 1.0 Standard (TCP with TLS)
API .NET.NET API OuiYes

(API de client de stockage .NET)(.NET Storage Client API)
OuiYes

(API Service Bus .NET)(.NET Service Bus API)
C++ natifNative C++ OuiYes OuiYes
API JavaJava API OuiYes OuiYes
API PHPPHP API OuiYes OuiYes
API Node.jsNode.js API OuiYes OuiYes
Prise en charge des métadonnées arbitrairesArbitrary metadata support OuiYes NonNo
Règles d'affectation des noms aux files d'attenteQueue naming rules Jusqu’à 63 caractèresUp to 63 characters long

(les lettres dans un nom de file d’attente doivent être en minuscules)(Letters in a queue name must be lowercase.)
Jusqu’à 260 caractèresUp to 260 characters long

(les chemins d’accès et noms des files d’attente ne sont pas sensibles à la casse)(Queue paths and names are case-insensitive.)
Fonction d'obtention de la longueur de la file d'attenteGet queue length function OuiYes

(valeur approximative si les messages expirent au-delà de la durée de vie sans être supprimés)(Approximate value if messages expire beyond the TTL without being deleted.)
OuiYes

(valeur exacte, à un moment donné)(Exact, point-in-time value.)
Fonction Peek (aperçu)Peek function OuiYes OuiYes

Informations supplémentairesAdditional information

  • Les files d’attente de stockage prennent en charge les attributs arbitraires qui peuvent s’appliquer à la description de la file d’attente, sous la forme de paires nom/valeur.Storage queues provide support for arbitrary attributes that can be applied to the queue description, in the form of name/value pairs.
  • Les deux technologies de file d'attente offrent la possibilité d'obtenir un aperçu d'un message sans avoir à le verrouiller, ce qui peut être utile lors de la mise en œuvre d'un outil de type explorateur/navigateur de file d'attente.Both queue technologies offer the ability to peek a message without having to lock it, which can be useful when implementing a queue explorer/browser tool.
  • Les API de messagerie répartie .NET de Service Bus exploitent les connexions TCP en duplex intégral pour améliorer les performances par rapport au protocole REST sur HTTP, et elles prennent en charge le protocole standard AMQP 1.0.The Service Bus .NET brokered messaging APIs leverage full-duplex TCP connections for improved performance when compared to REST over HTTP, and they support the AMQP 1.0 standard protocol.
  • Les noms des files d’attente de stockage peuvent compter entre 3 et 63 caractères, et contenir des lettres minuscules, des nombres et des traits d’union.Names of Storage queues can be 3-63 characters long, can contain lowercase letters, numbers, and hyphens. Pour plus d’informations, consultez Affectation de noms pour les files d’attente et les métadonnées.For more information, see Naming Queues and Metadata.
  • Les noms des files d'attente Service Bus peuvent compter jusqu'à 260 caractères. Les règles d'affectation de noms sont moins restrictives.Service Bus queue names can be up to 260 characters long and have less restrictive naming rules. Les noms des files d’attente Service Bus peuvent contenir des lettres, des nombres, des points (.), des traits d’union (-) et des traits de soulignement (_).Service Bus queue names can contain letters, numbers, periods, hyphens, and underscores.

Authentification et autorisationAuthentication and authorization

Cette section décrit les fonctionnalités d’authentification et d’autorisation prises en charge par les files d’attente Service Bus et les files d’attente de stockage.This section discusses the authentication and authorization features supported by Storage queues and Service Bus queues.

Critères de comparaisonComparison Criteria Files d’attente de stockageStorage queues Files d’attente Service BusService Bus queues
AuthenticationAuthentication Clé symétriqueSymmetric key Clé symétriqueSymmetric key
Modèle de sécuritéSecurity model Accès délégué via des jetons SAS.Delegated access via SAS tokens. SASSAS
Fédération de fournisseur d’identitéIdentity provider federation NonNo OuiYes

Informations supplémentairesAdditional information

  • Chaque requête à l'une des technologies de file d'attente doit être authentifiée.Every request to either of the queuing technologies must be authenticated. Les files d'attente publiques avec accès anonyme ne sont pas prises en charge.Public queues with anonymous access are not supported. À l’aide de la SAP, vous pouvez résoudre ce scénario en publiant une SAP en écriture seule, une SAP en lecture seule ou une SAP à accès total.Using SAS, you can address this scenario by publishing a write-only SAS, read-only SAS, or even a full-access SAS.
  • Le schéma d’authentification fourni par les files d’attente de stockage implique l’utilisation d’une clé symétrique, qui est un code d’authentification de message basé sur le hachage (HMAC), calculée avec l’algorithme SHA-256 et encodée comme une chaîne Base64.The authentication scheme provided by Storage queues involves the use of a symmetric key, which is a hash-based Message Authentication Code (HMAC), computed with the SHA-256 algorithm and encoded as a Base64 string. Pour plus d’informations sur le protocole respectif, consultez Authentification pour les services Azure Storage.For more information about the respective protocol, see Authentication for the Azure Storage Services. Les files d'attente Service Bus prennent en charge un modèle similaire utilisant des clés symétriques.Service Bus queues support a similar model using symmetric keys. Pour plus d’informations, consultez Authentification par signature d’accès partagé avec Service Bus.For more information, see Shared Access Signature Authentication with Service Bus.

ConclusionConclusion

En ayant une meilleure compréhension des deux technologies, vous serez en mesure de prendre une décision plus informée sur les technologies de file d'attente à utiliser et quand.By gaining a deeper understanding of the two technologies, you will be able to make a more informed decision on which queue technology to use, and when. La décision d’utiliser des files d’attente de stockage ou des files d’attente Service Bus dépend de plusieurs facteurs.The decision on when to use Storage queues or Service Bus queues clearly depends on a number of factors. Ces facteurs peuvent reposer largement sur les besoins spécifiques de votre application et de son architecture.These factors may depend heavily on the individual needs of your application and its architecture. Si votre application utilise déjà les principales fonctionnalités de Microsoft Azure, il peut être intéressant de choisir les files d’attente de stockage, surtout si vous avez besoin d’une communication et d’une messagerie de base entre les services ou si vous avez besoin de files d’attente dont la taille peut être supérieure à 80 Go.If your application already uses the core capabilities of Microsoft Azure, you may prefer to choose Storage queues, especially if you require basic communication and messaging between services or need queues that can be larger than 80 GB in size.

Étant donné que les files d'attente Service Bus fournissent plusieurs fonctionnalités avancées, comme les sessions, les transactions, la détection de doublons, la lettre morte automatique et des fonctions de publication/d'abonnement durables, elles peuvent constituer un meilleur choix si vous créez une application hybride ou si votre application nécessite ces fonctionnalités.Because Service Bus queues provide a number of advanced features, such as sessions, transactions, duplicate detection, automatic dead-lettering, and durable publish/subscribe capabilities, they may be a preferred choice if you are building a hybrid application or if your application otherwise requires these features.

Étapes suivantesNext steps

Les articles suivants fournissent des conseils et des informations sur l’utilisation des files d’attente de stockage ou Service Bus.The following articles provide more guidance and information about using Storage queues or Service Bus queues.