Filas do Armazenamento e filas do Barramento de Serviço — comparações e contrastesStorage queues and Service Bus queues - compared and contrasted

Este artigo analisa as diferenças e semelhanças entre os dois tipos de filas oferecidos por Microsoft Azure: filas de armazenamento e filas do barramento de serviço.This article analyzes the differences and similarities between the two types of queues offered by Microsoft Azure: Storage queues and Service Bus queues. Usando essas informações, você pode tomar uma decisão mais informada sobre qual solução atende melhor às suas necessidades.By using this information, you can make a more informed decision about which solution best meets your needs.

IntroduçãoIntroduction

O Azure dá suporte a dois tipos de mecanismo de fila: filas do Armazenamento e filas do Barramento de Serviço.Azure supports two types of queue mechanisms: Storage queues and Service Bus queues.

As filas de armazenamento fazem parte da infraestrutura de armazenamento do Azure .Storage queues are part of the Azure Storage infrastructure. Eles permitem que você armazene grandes números de mensagens.They allow you to store large numbers of messages. Você acessa as mensagens em qualquer lugar do mundo por meio de chamadas autenticadas usando HTTP ou HTTPS.You access messages from anywhere in the world via authenticated calls using HTTP or HTTPS. Uma mensagem da fila pode ter até 64 KB.A queue message can be up to 64 KB in size. Uma fila pode conter milhões de mensagens, até o limite da capacidade total de uma conta de armazenamento.A queue may contain millions of messages, up to the total capacity limit of a storage account. As filas são normalmente usadas para criar uma lista de pendências de trabalho para processamento assíncrono.Queues are commonly used to create a backlog of work to process asynchronously. Para obter mais informações, consulte o que são filas do armazenamento do Azure.For more information, see What are Azure Storage queues.

As filas do barramento de serviço fazem parte de uma infraestrutura mais ampla de mensagens do Azure que dá suporte ao enfileiramento, publicação/assinatura e padrões de integração mais avançados.Service Bus queues are part of a broader Azure messaging infrastructure that supports queuing, publish/subscribe, and more advanced integration patterns. Elas foram projetadas para integrar aplicativos ou componentes de aplicativos que podem abranger vários protocolos de comunicação, contratos de dados, domínios de confiança ou ambientes de rede.They're designed to integrate applications or application components that may span multiple communication protocols, data contracts, trust domains, or network environments. Para obter mais informações sobre filas/tópicos/assinaturas do barramento de serviço, consulte as filas, os tópicos e as assinaturas do barramento de serviço.For more information about Service Bus queues/topics/subscriptions, see the Service Bus queues, topics, and subscriptions.

Considerações de seleção da tecnologiaTechnology selection considerations

Filas de armazenamento e filas do barramento de serviço têm um conjunto de recursos um pouco diferente.Storage queues and Service Bus queues have a slightly different feature set. Você pode escolher um ou ambos, dependendo das necessidades de sua solução específica.You can choose either one or both, depending on the needs of your particular solution.

Ao determinar qual tecnologia de enfileiramento se adapta à finalidade de uma determinada solução, os arquitetos e desenvolvedores de soluções devem considerar essas recomendações.When determining which queuing technology fits the purpose of a given solution, solution architects and developers should consider these recommendations.

Considere o uso de filas de armazenamentoConsider using Storage queues

Como arquiteto/desenvolvedor de soluções, você deve considerar o uso das filas do Armazenamento quando:As a solution architect/developer, you should consider using Storage queues when:

  • Seu aplicativo deve armazenar mais de 80 gigabytes de mensagens em uma fila.Your application must store over 80 gigabytes of messages in a queue.
  • Seu aplicativo deseja acompanhar o progresso para processar uma mensagem na fila.Your application wants to track progress for processing a message in the queue. É útil se o trabalho que está processando uma mensagem falhar.It's useful if the worker processing a message crashes. Outro operador pode usar essas informações para continuar de onde o trabalho anterior parou.Another worker can then use that information to continue from where the prior worker left off.
  • Você precisar de logs do servidor de todas as transações executadas em suas filas.You require server side logs of all of the transactions executed against your queues.

Considere o uso de filas do barramento de serviçoConsider using Service Bus queues

Como arquiteto/desenvolvedor de soluções, você deve considerar o uso das filas do Barramento de Serviço quando:As a solution architect/developer, you should consider using Service Bus queues when:

  • Sua solução precisa receber mensagens sem precisar sondar a fila.Your solution needs to receive messages without having to poll the queue. Com o barramento de serviço, você pode obtê-lo usando uma operação de recebimento de sondagem longa usando os protocolos baseados em TCP aos quais o barramento de serviço dá suporte.With Service Bus, you can achieve it by using a long-polling receive operation using the TCP-based protocols that Service Bus supports.
  • Sua solução exigir que a fila forneça uma entrega ordenada PEPS (primeiro a entrar, primeiro a sair).Your solution requires the queue to provide a guaranteed first-in-first-out (FIFO) ordered delivery.
  • Sua solução precisa dar suporte à detecção automática de duplicidades.Your solution needs to support automatic duplicate detection.
  • Você desejar que seu aplicativo processe mensagens como fluxos paralelos de longa execução (mensagens associadas a um fluxo usando a propriedade SessionId na mensagem).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). Nesse modelo, cada nó no aplicativo de consumo compete por fluxos, em oposição às mensagens.In this model, each node in the consuming application competes for streams, as opposed to messages. Quando um fluxo é fornecido a um nó de consumo, o nó pode examinar o estado do fluxo do aplicativo usando transações.When a stream is given to a consuming node, the node can examine the state of the application stream state using transactions.
  • Sua solução exigir comportamento transacional e atomicidade ao enviar ou receber várias mensagens de uma fila.Your solution requires transactional behavior and atomicity when sending or receiving multiple messages from a queue.
  • Seu aplicativo lida com mensagens que podem exceder 64 KB, mas que provavelmente não abordarão o limite de 256 KB.Your application handles messages that can exceed 64 KB but won't likely approach the 256-KB limit.
  • Você tiver que lidar com a necessidade de fornecer um modelo de acesso baseado em função às filas e diferentes direitos/permissões para remetentes e destinatários.You deal with a requirement to provide a role-based access model to the queues, and different rights/permissions for senders and receivers. Para obter mais informações, consulte os seguintes artigos:For more information, see the following articles:
  • O tamanho da fila não crescerá maior que 80 GB.Your queue size won't grow larger than 80 GB.
  • Você desejar usar o protocolo do sistema de mensagens baseado em padrões AMQP 1.0.You want to use the AMQP 1.0 standards-based messaging protocol. Para obter mais informações sobre AMQP, confira Visão geral do AMQP do Barramento de Serviço.For more information about AMQP, see Service Bus AMQP Overview.
  • Você deve prever uma eventual migração da comunicação ponto a ponto baseada em fila para um padrão de mensagens de publicação/assinatura.You envision an eventual migration from queue-based point-to-point communication to a publish-subscribe messaging pattern. Esse padrão permite a integração de receptores adicionais (assinantes).This pattern enables integration of additional receivers (subscribers). Cada destinatário recebe cópias independentes de algumas ou todas as mensagens enviadas para a fila.Each receiver receives independent copies of either some or all messages sent to the queue.
  • Sua solução de mensagens precisa dar suporte à garantia de entrega "no máximo uma vez" sem a necessidade de você criar os componentes de infraestrutura adicionais.Your messaging solution needs to support the "At-Most-Once" delivery guarantee without the need for you to build the additional infrastructure components.
  • Sua solução precisa publicar e consumir lotes de mensagens.Your solution needs to publish and consume batches of messages.

Comparar filas de armazenamento e filas do barramento de serviçoCompare Storage queues and Service Bus queues

As tabelas nas seções a seguir fornecem um agrupamento lógico de recursos de fila.The tables in the following sections provide a logical grouping of queue features. Eles permitem que você compare rapidamente os recursos disponíveis nas filas do armazenamento do Azure e nas filas do barramento de serviço.They let you compare, at a glance, the capabilities available in both Azure Storage queues and Service Bus queues.

Recursos básicosFoundational capabilities

Esta seção compara alguns dos recursos básicos de enfileiramento fornecidos pelas filas do Armazenamento e filas do Barramento de Serviço.This section compares some of the fundamental queuing capabilities provided by Storage queues and Service Bus queues.

Critérios de comparaçãoComparison Criteria Filas de armazenamentoStorage queues Filas do Barramento de ServiçoService Bus queues
Garantia de ordenaçãoOrdering guarantee NãoNo

Para obter mais informações, consulte a primeira observação na seção informações adicionais .For more information, see the first note in the Additional Information section.
Sim - Primeiro a Entrar, Primeiro a Sair (PEPS)Yes - First-In-First-Out (FIFO)

(com o uso de sessões de mensagens)(through the use of message sessions)
Garantia de entregaDelivery guarantee Pelo menos uma vezAt-Least-Once Pelo menos uma vez (usando o modo de recebimento Peeklock.At-Least-Once (using PeekLock receive mode. É o padrão)It's the default)

No máximo uma vez (usando o modo de recebimento ReceiveAndDelete)At-Most-Once (using ReceiveAndDelete receive mode)

Saiba mais sobre vários modos de recebimentoLearn more about various Receive modes
Suporte à operação atômicaAtomic operation support NãoNo SimYes

Comportamento de recebimentoReceive behavior Sem bloqueioNon-blocking

(conclusão imediata se nenhuma mensagem nova for encontrada)(completes immediately if no new message is found)
Bloqueando com ou sem tempo limiteBlocking with or without a timeout

(oferece sondagem longa ou "Técnica Comet")(offers long polling, or the "Comet technique")

Sem bloqueioNon-blocking

(somente por meio do uso de API gerenciada .NET)(through the use of .NET managed API only)
API de estilo pushPush-style API NãoNo SimYes

API .NET de sessões QueueClient. onMessage e MessageSessionHandler. onMessage .QueueClient.OnMessage and MessageSessionHandler.OnMessage sessions .NET API.
Modo de recebimentoReceive mode Inspecionar e ConcederPeek & Lease Inspecionar e bloquearPeek & Lock

Receber e excluirReceive & Delete
Modo de acesso exclusivoExclusive access mode Com base em concessãoLease-based Com base em bloqueioLock-based
Duração da concessão/do bloqueioLease/Lock duration 30 segundos (padrão)30 seconds (default)

7 dias (máximo) (Você pode renovar ou liberar uma concessão de mensagem usando a API UpdateMessage.)7 days (maximum) (You can renew or release a message lease using the UpdateMessage API.)
60 segundos (padrão)60 seconds (default)

Você pode renovar um bloqueio de mensagem usando a API RenewLock.You can renew a message lock using the RenewLock API.
Precisão da concessão/do bloqueioLease/Lock precision Nível da mensagemMessage level

Cada mensagem pode ter um valor de tempo limite diferente, que você pode atualizar conforme necessário durante o processamento da mensagem, usando a 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.
Nível da filaQueue level

(cada fila tem uma precisão de bloqueio aplicada a todas as suas mensagens, mas você pode renovar o bloqueio usando a API RenewLock.)(each queue has a lock precision applied to all of its messages, but you can renew the lock using the RenewLock API.)
Recebimento em loteBatched receive SimYes

(especificando explicitamente a contagem de mensagens ao recuperar mensagens, até um máximo de 32 mensagens)(explicitly specifying message count when retrieving messages, up to a maximum of 32 messages)
SimYes

(habilitando implicitamente uma propriedade de pré-busca ou explicitamente pelo uso de transações)(implicitly enabling a pre-fetch property or explicitly through the use of transactions)
Envio em loteBatched send NãoNo SimYes

(usando transações ou envio em lote no lado do cliente)(through the use of transactions or client-side batching)

Informações adicionaisAdditional information

  • As mensagens nas filas de armazenamento são normalmente o primeiro a entrar, mas, às vezes, podem estar fora de ordem.Messages in Storage queues are typically first-in-first-out, but sometimes they can be out of order. Por exemplo, quando a duração do tempo limite de visibilidade de uma mensagem expirar porque um aplicativo cliente falhou durante o processamento de uma mensagem.For example, when the visibility-timeout duration of a message expires because a client application crashed while processing a message. Quando o tempo limite da visibilidade se esgotar, a mensagem se tornará visível novamente na fila de outro trabalho para que seja removida da fila.When the visibility timeout expires, the message becomes visible again on the queue for another worker to dequeue it. Nesse ponto, a mensagem recentemente visível pode ser colocada na fila para ser removida da fila novamente.At that point, the newly visible message might be placed in the queue to be dequeued again.
  • O padrão PEPS garantido nas filas do Barramento de Serviço exige o uso de sessões de mensagens.The guaranteed FIFO pattern in Service Bus queues requires the use of messaging sessions. Se o aplicativo falhar durante o processamento de uma mensagem recebida no modo de bloqueio de & de Peek , na próxima vez que um destinatário da fila aceitar uma sessão de mensagens, ele começará com a mensagem com falha depois que o período de vida útil da mensagem expirar.If the application crashes while it's 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 the message's time-to-live (TTL) period expires.
  • As filas de armazenamento são projetadas para oferecer suporte a cenários de enfileiramento padrão, como os seguintes:Storage queues are designed to support standard queuing scenarios, such as the following ones:
    • Desacoplando componentes de aplicativos para aumentar a escalabilidade e a tolerância a falhasDecoupling application components to increase scalability and tolerance for failures
    • Nivelamento de cargaLoad leveling
    • Criando fluxos de trabalho de processo.Building process workflows.
  • Inconsistências em relação à manipulação de mensagens no contexto de sessões do barramento de serviço podem ser evitadas usando o estado de sessão para armazenar o estado do aplicativo em relação ao progresso da manipulação da sequência de mensagens da sessão e ao usar transações em ordem de liquidação de mensagens recebidas e atualização do estado da sessão.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. Esse tipo de recurso de consistência, às vezes, é rotulado exatamente como processamento nos produtos de outros fornecedores.This kind of consistency feature is sometimes labeled exactly once processing in other vendor's products. As falhas de transação certamente farão com que as mensagens sejam entregues novamente e é por isso que o termo não é exatamente adequado.Any transaction failures will obviously cause messages to be redelivered and that's why the term isn't exactly adequate.
  • As filas do Armazenamento fornecem um modelo de programação uniforme e consistente entre filas, tabelas e Blobs, para desenvolvedores e equipes de operações.Storage queues provide a uniform and consistent programming model across queues, tables, and BLOBs – both for developers and for operations teams.
  • As filas do Barramento de Serviço fornecem suporte para transações locais no contexto de uma fila única.Service Bus queues provide support for local transactions in the context of a single queue.
  • O modo Receber e Excluir com suporte do Barramento de Serviço tem a capacidade de reduzir a contagem de operações de mensagens (e custos associados) em troca da garantia de entrega reduzida.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.
  • As filas do Armazenamento fornecem concessões com a capacidade de estender as concessões para mensagens.Storage queues provide leases with the ability to extend the leases for messages. Esse recurso permite que os processos de trabalho mantenham concessões curtas em mensagens.This feature allows the worker processes to maintain short leases on messages. Portanto, se um trabalho falhar, a mensagem poderá ser processada rapidamente novamente por outro operador.So, if a worker crashes, the message can be quickly processed again by another worker. Além disso, um trabalhador pode estender a concessão em uma mensagem se precisar processá-la por mais tempo do que a atual.Also, a worker can extend the lease on a message if it needs to process it longer than the current lease time.
  • As filas do Armazenamento oferecem um tempo limite de visibilidade que você pode definir no enfileiramento de uma mensagem ou na remoção dela da fila.Storage queues offer a visibility timeout that you can set upon the enqueuing or dequeuing of a message. Além disso, você pode atualizar uma mensagem com valores de concessão diferentes em tempo de execução e atualizar valores diferentes entre as mensagens na mesma fila.Also, you can update a message with different lease values at run-time, and update different values across messages in the same queue. Os tempos limite de bloqueio do barramento de serviço são definidos nos metadados da fila.Service Bus lock timeouts are defined in the queue metadata. No entanto, você pode renovar o bloqueio chamando o método RenewLock .However, you can renew the lock by calling the RenewLock method.
  • O tempo limite máximo para um bloqueio de operação de recebimento nas filas do Barramento de Serviço é de 24 dias.The maximum timeout for a blocking receive operation in Service Bus queues is 24 days. No entanto, os tempos limite baseados em REST têm um valor máximo de 55 segundos.However, REST-based timeouts have a maximum value of 55 seconds.
  • O envio em lote do lado do cliente fornecido pelo Barramento de Serviço permite que um cliente da fila coloque em lote várias mensagens em uma única operação de envio.Client-side batching provided by Service Bus enables a queue client to batch multiple messages into a single send operation. O envio em lote está disponível apenas para operações de envio assíncronas.Batching is only available for asynchronous send operations.
  • Recursos como o teto de 200 TB de filas de armazenamento (mais quando você virtualiza contas) e filas ilimitadas o tornam uma plataforma ideal para provedores de 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.
  • As filas do Armazenamento fornecem um mecanismo de controle de acesso flexível e delegado ao desempenho.Storage queues provide a flexible and performant delegated access control mechanism.

Recursos avançadosAdvanced capabilities

Esta seção compara recursos avançados fornecidos pelas filas do Armazenamento e do Barramento de Serviço.This section compares advanced capabilities provided by Storage queues and Service Bus queues.

Critérios de comparaçãoComparison Criteria Filas de armazenamentoStorage queues Filas do Barramento de ServiçoService Bus queues
Entrega agendadaScheduled delivery SimYes SimYes
Mensagens mortas automáticasAutomatic dead lettering NãoNo SimYes
Aumentando o valor da vida útil da filaIncreasing queue time-to-live value SimYes

(por meio da atualização in-loco do tempo limite de visibilidade)(via in-place update of visibility timeout)
SimYes

(fornecido por uma função de API dedicada)(provided via a dedicated API function)
Suporte a mensagens suspeitasPoison message support SimYes SimYes
Atualização in-locoIn-place update SimYes SimYes
Log de transações do servidorServer-side transaction log SimYes NãoNo
Métricas de armazenamentoStorage metrics SimYes

As métricas de minuto fornecem métricas em tempo real para disponibilidade, TPS, contagens de chamada de API, contagens de erros e muito mais.Minute Metrics provides real-time metrics for availability, TPS, API call counts, error counts, and more. Elas estão todas em tempo real, agregadas por minuto e relatadas dentro de alguns minutos a partir do que acabou de acontecer na produção.They're all in real time, aggregated per minute and reported within a few minutes from what just happened in production. Para obter mais informações, confira Sobre as Métricas de Analítica de Armazenamento.For more information, see About Storage Analytics Metrics.
SimYes

(consultas em massa chamando GetQueues)(bulk queries by calling GetQueues)
Gerenciamento de estadoState management NãoNo SimYes

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
Encaminhamento automático de mensagensMessage autoforwarding NãoNo SimYes
Função Limpar filaPurge queue function SimYes NãoNo
Grupos de mensagensMessage groups NãoNo SimYes

(por meio do uso de sessões de mensagens)(through the use of messaging sessions)
Estado do aplicativo por grupo de mensagensApplication state per message group NãoNo SimYes
Detecção de duplicidadeDuplicate detection NãoNo SimYes

(configurável no lado do remetente)(configurable on the sender side)
Procurando grupos de mensagensBrowsing message groups NãoNo SimYes
Buscando sessões de mensagem por IDFetching message sessions by ID NãoNo SimYes

Informações adicionaisAdditional information

  • Ambas as tecnologias de enfileiramento permitem que uma mensagem seja agendada para entrega em um momento posterior.Both queuing technologies enable a message to be scheduled for delivery at a later time.
  • O encaminhamento automático de fila permite que milhares de filas encaminhem automaticamente suas mensagens para uma única fila, da qual o aplicativo de recebimento consome a mensagem.Queue autoforwarding enables thousands of queues to autoforward their messages to a single queue, from which the receiving application consumes the message. É possível usar esse mecanismo para fins de segurança, controlar o fluxo e isolar o armazenamento entre cada editor de mensagem.You can use this mechanism to achieve security, control flow, and isolate storage between each message publisher.
  • As filas do Armazenamento dão suporte à atualização do conteúdo da mensagem.Storage queues provide support for updating message content. Você pode usar essa funcionalidade para informações de estado persistentes e atualizações incrementais de progresso na mensagem para que ela possa ser processada a partir do último ponto de verificação conhecido, em vez de começar do zero.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. Com filas do Barramento de Serviço, você pode habilitar o mesmo cenário usando as sessões de mensagens.With Service Bus queues, you can enable the same scenario through the use of message sessions. As sessões permitem salvar e recuperar o estado de processamento do aplicativo (usando SetState e GetState).Sessions enable you to save and retrieve the application processing state (by using SetState and GetState).
  • As filas do barramento de serviço dão suporte a mensagens mortas.Service Bus queues support dead lettering. Pode ser útil para isolar mensagens que atendam aos seguintes critérios:It can be useful for isolating messages that meet the following criteria:
    • As mensagens não podem ser processadas com êxito pelo aplicativo de recebimentoMessages can't be processed successfully by the receiving application
    • As mensagens não podem alcançar seu destino devido a uma propriedade TTL (vida útil) expirada.Messages can't reach their destination because of an expired time-to-live (TTL) property. O valor de TTL especifica quanto tempo uma mensagem permanece na fila.The TTL value specifies how long a message remains in the queue. Com o Barramento de Serviço, a mensagem será movida para uma fila especial chamada $DeadLetterQueue quando o período TTL expirar.With Service Bus, the message will be moved to a special queue called $DeadLetterQueue when the TTL period expires.
  • Para localizar mensagens “suspeitas” nas filas do Armazenamento, ao remover uma mensagem da fila, o aplicativo examina a propriedade DequeueCount da mensagem.To find "poison" messages in Storage queues, when dequeuing a message the application examines the DequeueCount property of the message. Se DequeueCount for maior que um determinado limite, o aplicativo moverá a mensagem para uma fila de "mensagens mortas" definida pelo aplicativo.If DequeueCount is greater than a given threshold, the application moves the message to an application-defined "dead letter" queue.
  • As filas de armazenamento permitem que você obtenha um log detalhado de todas as transações executadas na fila e as métricas agregadas.Storage queues enable you to obtain a detailed log of all of the transactions executed against the queue, and aggregated metrics. Essas duas opções são úteis para depurar e entender como o aplicativo usa as filas do Armazenamento.Both of these options are useful for debugging and understanding how your application uses Storage queues. Eles também são úteis para o ajuste de desempenho de seu aplicativo e a redução dos custos de uso de filas.They're also useful for performance-tuning your application and reducing the costs of using queues.
  • As sessões de mensagens com suporte do barramento de serviço permitem que as mensagens que pertencem a um grupo lógico sejam associadas a um receptor.Message sessions supported by Service Bus enable messages that belong to a logical group to be associated with a receiver. Ele cria uma afinidade de sessão entre as mensagens e seus respectivos destinatários.It creates a session-like affinity between messages and their respective receivers. Você pode habilitar essa funcionalidade avançada no Barramento de Serviço definindo a propriedade SessionID em uma mensagem.You can enable this advanced functionality in Service Bus by setting the SessionID property on a message. Os receptores podem escutar em uma ID de sessão específica e receber mensagens que compartilham o identificador de sessão especificado.Receivers can then listen on a specific session ID and receive messages that share the specified session identifier.
  • O recurso de detecção de duplicação das filas do barramento de serviço remove automaticamente as mensagens duplicadas enviadas a uma fila ou tópico, com base no valor da propriedade MessageId .The duplication detection feature of Service Bus queues automatically removes duplicate messages sent to a queue or topic, based on the value of the MessageId property.

Capacidade e cotasCapacity and quotas

Esta seção compara as filas do Armazenamento e as filas do Barramento de Serviço da perspectiva de capacidade e cotas que podem ser aplicáveis.This section compares Storage queues and Service Bus queues from the perspective of capacity and quotas that may apply.

Critérios de comparaçãoComparison Criteria Filas de armazenamentoStorage queues Filas do Barramento de ServiçoService Bus queues
Tamanho máximo da filaMaximum queue size 500 TB500 TB

(limitado a uma única capacidade de conta de armazenamento)(limited to a single storage account capacity)
1 GB a 80 GB1 GB to 80 GB

(definido na criação de uma fila e habilitando particionamento – confira a seção "Informações adicionais")(defined upon creation of a queue and enabling partitioning – see the “Additional Information” section)
Tamanho máximo da mensagemMaximum message size 64 KB64 KB

(48 KB ao usar a codificação Base64)(48 KB when using Base64 encoding)

O Azure oferece suporte a mensagens grandes combinando filas e blobs — nesse ponto, você pode enfileirar até 200 GBs para um único item.Azure supports large messages by combining queues and blobs – at which point you can enqueue up to 200 GB for a single item.
256 KB ou 1 MB256 KB or 1 MB

(incluindo cabeçalho e corpo, tamanho máximo do cabeçalho: 64 KB).(including both header and body, maximum header size: 64 KB).

Depende da camada de serviço.Depends on the service tier.
TTL máxima da mensagemMaximum message TTL Infinito (API-Version 2017-07-27 ou posterior)Infinite (api-version 2017-07-27 or later) TimeSpan.MaxTimeSpan.Max
Número máximo de filasMaximum number of queues IlimitadoUnlimited 10.00010,000

(por namespace do serviço)(per service namespace)
Número máximo de clientes simultâneosMaximum number of concurrent clients IlimitadoUnlimited 5.0005,000

Informações adicionaisAdditional information

  • O Barramento de Serviço impõe limites de tamanho de fila.Service Bus enforces queue size limits. O tamanho máximo da fila é especificado ao criar uma fila.The maximum queue size is specified when creating a queue. Pode ser entre 1 GB e 80 GB.It can be between 1 GB and 80 GB. Se o tamanho da fila atingir esse limite, as mensagens de entrada adicionais serão rejeitadas e o chamador receberá uma exceção.If the queue's size reaches this limit, additional incoming messages will be rejected and the caller receives an exception. Para obter mais informações sobre cotas no Barramento de Serviço, confira Cotas do Barramento de Serviço.For more information about quotas in Service Bus, see Service Bus Quotas.
  • O particionamento não tem suporte na camada Premium.Partitioning isn't supported in the Premium tier. Na camada de mensagens Standard, você pode criar filas e tópicos do barramento de serviço em tamanhos 1 (padrão), 2, 3, 4 ou 5 GB.In the Standard messaging tier, you can create Service Bus queues and topics in 1 (default), 2, 3, 4, or 5-GB sizes. Com o particionamento habilitado, o barramento de serviço cria 16 cópias (16 partições) da entidade, cada um com o mesmo tamanho especificado.With partitioning enabled, Service Bus creates 16 copies (16 partitions) of the entity, each of the same size specified. Assim, se você criar uma fila com 5 GB de tamanho, com 16 partições, o tamanho máximo da fila se tornará (5 * 16) = 80 GB.As such, if you create a queue that's 5 GB in size, with 16 partitions the maximum queue size becomes (5 * 16) = 80 GB. Você pode ver o tamanho máximo da fila ou do tópico particionado na portal do Azure.You can see the maximum size of your partitioned queue or topic in the Azure portal.
  • Com as filas de armazenamento, se o conteúdo da mensagem não for XML seguro, ele deverá ser codificado em Base64 .With Storage queues, if the content of the message isn't XML-safe, then it must be Base64 encoded. Se você codificar a mensagem em Base64, a carga de usuário poderá ser de até 48 KB, em vez de 64 KB.If you Base64-encode the message, the user payload can be up to 48 KB, instead of 64 KB.
  • Com as filas do Barramento de Serviço, cada mensagem armazenada em uma fila é composta por duas partes: um cabeçalho e um corpo.With Service Bus queues, each message stored in a queue is composed of two parts: a header and a body. O tamanho total da mensagem não pode exceder o tamanho máximo de mensagem suportado pela camada de serviço.The total size of the message can't exceed the maximum message size supported by the service tier.
  • Quando os clientes se comunicam com as filas do Barramento de Serviço pelo protocolo TCP, o número máximo de conexões simultâneas para uma única fila do Barramento de Serviço é limitado a 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. Esse número é compartilhado entre remetentes e receptores.This number is shared between senders and receivers. Se essa cota for atingida, as solicitações de conexões adicionais serão rejeitadas e uma exceção será recebida pelo código de chamada.If this quota is reached, requests for additional connections will be rejected and an exception will be received by the calling code. Esse limite não é imposto em clientes que se conectam às filas usando a API baseada em REST.This limit isn't imposed on clients connecting to the queues using REST-based API.
  • Se precisar de mais de 10.000 filas em um único namespace do Barramento de Serviço, você poderá entrar em contato com a equipe de suporte do Azure e solicitar um aumento.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. Para escalar para além de 10.000 filas com o Barramento de Serviço, você também pode criar namespaces adicionais usando o Portal do Azure.To scale beyond 10,000 queues with Service Bus, you can also create additional namespaces using the Azure portal.

Gerenciamento e operaçõesManagement and operations

Esta seção compara os recursos de gerenciamento fornecidos pelas filas do Armazenamento e do Barramento de Serviço.This section compares the management features provided by Storage queues and Service Bus queues.

Critérios de comparaçãoComparison Criteria Filas de armazenamentoStorage queues Filas do Barramento de ServiçoService Bus queues
Protocolo de gerenciamentoManagement protocol REST sobre HTTP/HTTPSREST over HTTP/HTTPS REST sobre HTTPSREST over HTTPS
Protocolo de runtimeRuntime protocol REST sobre HTTP/HTTPSREST over HTTP/HTTPS REST sobre HTTPSREST over HTTPS

AMQP 1.0 Standard (TCP com TLS)AMQP 1.0 Standard (TCP with TLS)
API do .NET.NET API SimYes

(API do Cliente de Armazenamento .NET)(.NET Storage Client API)
SimYes

(API do Barramento de serviço do .NET)(.NET Service Bus API)
C++ nativoNative C++ SimYes SimYes
API JavaJava API SimYes SimYes
API PHPPHP API SimYes SimYes
API Node.jsNode.js API SimYes SimYes
Suporte a metadados arbitráriosArbitrary metadata support SimYes NãoNo
Regras de nomenclatura da filaQueue naming rules Até 63 caracteresUp to 63 characters long

(As letras em um nome de fila devem estar em minúsculas.)(Letters in a queue name must be lowercase.)
Até 260 caracteresUp to 260 characters long

(Nomes e caminhos de fila não diferenciam maiúsculas de minúsculas.)(Queue paths and names are case-insensitive.)
Função Obter tamanho da filaGet queue length function SimYes

(Valor aproximado se as mensagens expirarem depois da TTL sem que sejam excluídas.)(Approximate value if messages expire beyond the TTL without being deleted.)
SimYes

(Valor exato, pontual.)(Exact, point-in-time value.)
Função InspecionarPeek function SimYes SimYes

Informações adicionaisAdditional information

  • As filas do Armazenamento dão suporte a atributos arbitrários que podem ser aplicados à descrição da fila, na forma de pares de nome/valor.Storage queues provide support for arbitrary attributes that can be applied to the queue description, in the form of name/value pairs.
  • As duas tecnologias oferecem a capacidade de inspecionar uma mensagem sem precisar bloqueá-la, o que pode ser útil ao implementar uma ferramenta de gerenciador/navegador de filas.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.
  • As APIs de mensagens orientadas .NET do Service Bus usam conexões TCP Full duplex para melhorar o desempenho em comparação com REST sobre HTTP e dão suporte ao protocolo padrão AMQP 1,0.The Service Bus .NET brokered messaging APIs use full-duplex TCP connections for improved performance when compared to REST over HTTP, and they support the AMQP 1.0 standard protocol.
  • Os nomes das filas do Armazenamento podem ter de 3 a 63 caracteres e podem conter letras minúsculas, número e hifens.Names of Storage queues can be 3-63 characters long, can contain lowercase letters, numbers, and hyphens. Para obter mais informações, confira Nomeando filas e metadados.For more information, see Naming Queues and Metadata.
  • Os nomes de fila do Barramento de Serviço podem ter até 260 caracteres e têm menos regras restritivas de nomenclatura.Service Bus queue names can be up to 260 characters long and have less restrictive naming rules. Os nomes de fila do Barramento de Serviço podem conter letras, números, pontos, hifens e sublinhados.Service Bus queue names can contain letters, numbers, periods, hyphens, and underscores.

Autenticação e autorizaçãoAuthentication and authorization

Esta seção aborda os recursos de autenticação e autorização com suporte nas filas do Armazenamento e do Barramento de Serviço.This section discusses the authentication and authorization features supported by Storage queues and Service Bus queues.

Critérios de comparaçãoComparison Criteria Filas de armazenamentoStorage queues Filas do Barramento de ServiçoService Bus queues
AutenticaçãoAuthentication Chave simétricaSymmetric key Chave simétricaSymmetric key
Modelo de segurançaSecurity model Acesso delegado via tokens de SAS.Delegated access via SAS tokens. SASSAS
Federação do provedor de identidadeIdentity provider federation NãoNo SimYes

Informações adicionaisAdditional information

  • Cada solicitação de ambas as tecnologias de enfileiramento deve ser autenticada.Every request to either of the queuing technologies must be authenticated. Não há suporte para filas públicas com acesso anônimo.Public queues with anonymous access aren't supported. Usando SAS, você pode tratar esse cenário publicando uma SAS somente gravação, SAS somente leitura ou até mesmo uma SAS de acesso completo.Using SAS, you can address this scenario by publishing a write-only SAS, read-only SAS, or even a full-access SAS.
  • O esquema de autenticação fornecido pelas filas de armazenamento envolve o uso de uma chave simétrica.The authentication scheme provided by Storage queues involves the use of a symmetric key. Essa chave é um HMAC (Message Authentication Code baseado em hash), computado com o algoritmo SHA-256 e codificado como uma cadeia de caracteres Base64 .This key is a hash-based Message Authentication Code (HMAC), computed with the SHA-256 algorithm and encoded as a Base64 string. Para obter mais informações sobre o respectivo protocolo, veja Autenticação para os Serviços de Armazenamento do Azure.For more information about the respective protocol, see Authentication for the Azure Storage Services. As filas do Barramento de Serviço oferecem suporte a um modelo semelhante usando chaves simétricas.Service Bus queues support a similar model using symmetric keys. Para obter mais informações, confira Autenticação de Assinatura de Acesso Compartilhado com Barramento de Serviço.For more information, see Shared Access Signature Authentication with Service Bus.

ConclusãoConclusion

Ao obter uma compreensão mais profunda das duas tecnologias, você pode tomar uma decisão mais informada sobre qual tecnologia de fila usar e quando.By gaining a deeper understanding of the two technologies, you can make a more informed decision on which queue technology to use, and when. A decisão sobre quando usar as filas do Armazenamento ou as filas do Barramento de Serviço depende claramente de vários fatores.The decision on when to use Storage queues or Service Bus queues clearly depends on a number of factors. Esses fatores podem depender consideravelmente das necessidades individuais de seu aplicativo e respectiva arquitetura.These factors may depend heavily on the individual needs of your application and its architecture.

Você pode preferir escolher filas de armazenamento por razões como as seguintes:You may prefer to choose Storage queues for reasons such as the following ones:

  • Se seu aplicativo já usa os principais recursos do Microsoft AzureIf your application already uses the core capabilities of Microsoft Azure
  • Se você precisar de comunicação básica e mensagens entre serviçosIf you require basic communication and messaging between services
  • Precisa de filas que podem ter mais de 80 GB de tamanhoNeed queues that can be larger than 80 GB in size

As filas do barramento de serviço fornecem uma série de recursos avançados, como os descritos a seguir.Service Bus queues provide a number of advanced features such as the following ones. Portanto, eles podem ser uma opção preferida se você estiver criando um aplicativo híbrido ou se seu aplicativo também exigir esses recursos.So, they may be a preferred choice if you're building a hybrid application or if your application otherwise requires these features.

Próximas etapasNext steps

Os artigos a seguir fornecem mais orientação e informações sobre como usar as filas do Armazenamento ou as filas do Barramento de Serviço.The following articles provide more guidance and information about using Storage queues or Service Bus queues.