Compartilhar via


Excluir as mensagens em lote no Barramento de Serviço do Azure (versão prévia)

O Barramento de Serviço do Azure é um agente de mensagens de integração empresarial totalmente gerenciado que permite enviar e receber mensagens entre aplicativos e serviços separados. No entanto, às vezes, talvez você queira excluir mensagens de uma fila ou assinatura sem processá-las, por exemplo, se elas tiverem expirado, foram corrompidas ou irrelevantes. Este artigo mostra como excluir mensagens em lotes no Barramento de Serviço do Azure.

Cenários para exclusão em lote de mensagens

Há vários cenários em que talvez você queira usar o recurso de exclusão em lote de mensagens no Barramento de Serviço do Azure. Alguns deles são:

  • Mensagens expiradas: exclua mensagens que excedem seu valor de vida útil (TTL) e estão na fila de mensagens mortas.
  • Validação ou processamento com falha: remova mensagens que falharam na lógica de processamento ou validação e estão na fila de mensagens mortas.
  • Mensagens irrelevantes: exclua mensagens que não são mais relevantes para a lógica de aplicativo da fila ativa.
  • Tratamento de duplicatas ou conteúdo incorreto: remova mensagens duplicadas ou incorretas da fila ativa.

Usando o recurso de exclusão em lote de mensagens, você pode excluir várias mensagens de uma fila ou assinatura em uma operação, em vez de excluí-las uma a uma. Como a exclusão é feita no lado do serviço, você não precisa receber as mensagens antes de excluí-las. Esse método minimiza o número de solicitações de serviço e a latência de rede.

Importante

Atualmente, a exclusão em lote não é compatível com entidades particionadas. Você pode excluir no máximo 4.000 mensagens em uma chamada de exclusão em lote. A exclusão em lote é feita com base no melhor esforço e não garante que o messageCount exato será excluído em uma única chamada à API.

Como excluir mensagens em lote no Barramento de Serviço

Você pode excluir mensagens chamando DeleteMessagesAsync no objeto de destinatário do Barramento de Serviço. No lado do servidor, DeleteMessagesAsync exige dois parâmetros: messageCount e beforeEnqueueTime.

  • messageCount: o número desejado de mensagens a serem excluídas. O serviço pode excluir menos mensagens do que esse limite.
  • beforeEnqueueTime: um DateTimeOffset opcional, em UTC, que representa o tempo de corte para exclusão. Somente as mensagens que foram enfileiradas antes desse horário serão excluídas.

Além disso, você pode chamar PurgeMessagesAsync para limpar todas as mensagens da entidade.

Usando o Portal do Azure

Você também pode limpar mensagens da entidade usando o Gerenciador do Barramento de Serviço disponível no portal do Azure. Você pode seguir as seguintes etapas para limpar mensagens:

  1. Navegue até a folha "Gerenciador do Barramento de Serviço" na entidade da qual você quer excluir mensagens.
  2. Escolha "Modo de recebimento" na lista suspensa do Gerenciador do Barramento de Serviço.

Captura de tela da lista suspensa com o Modo de Recebimento selecionado.

  1. Clique na opção limpar mensagens, conforme mostrado no instantâneo.

Captura de tela das mensagens de limpeza selecionadas.

  1. Outra caixa de diálogo será exibida, insira "limpar" para executar a operação de limpeza de mensagens.

Captura de tela da inserção de Limpeza para confirmar.

Ao usar os SDKs do Azure para executar essas operações, o parâmetro beforeEnqueueTime usa como padrão a hora UTC atual (DateTime.UtcNow()). É importante garantir que você forneça os valores corretos para evitar a exclusão de mensagens não intencional.

Observação

A operação de limpeza pode levar a um aumento do uso da CPU, pois envolve várias chamadas à API. Durante a limpeza, as mensagens bloqueadas não são qualificadas para remoção e permanecerão na entidade.

Próximas etapas

Para explorar os recursos do Barramento de Serviço do Azure, experimente os exemplos no idioma de sua escolha:

Exemplos para as bibliotecas de clientes .NET e Java mais antigas:

Em 30 de setembro de 2026, desativaremos as bibliotecas do SDK do Barramento de Serviço do Azure WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus e com.microsoft.azure.servicebus, que não estão em conformidade com as diretrizes do SDK do Azure. Também encerraremos o suporte ao protocolo SBMP, portanto, ele não poderá mais ser usado após 30 de setembro de 2026. Antes dessa data, migre para as bibliotecas mais recentes do SDK do Azure, que oferecem atualizações de segurança críticas e funcionalidades aprimoradas.

Embora as bibliotecas mais antigas ainda poderão ser usadas após 30 de setembro de 2026, elas não receberão mais suporte e atualizações oficiais da Microsoft. Para obter mais informações, confira o anúncio de desativação do suporte.