Partilhar via


Excluir mensagens em lote no Barramento de Serviço do Azure (Visualização)

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 dissociados. No entanto, às vezes você pode querer excluir mensagens de uma fila ou assinatura sem processá-las, por exemplo, se elas estiverem expiradas, 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 você pode querer usar o recurso de mensagens de exclusão em lote no Barramento de Serviço do Azure. Algumas delas são:

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

Usando o recurso de exclusão de mensagens em lote, 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 da rede.

Importante

Atualmente, a exclusão em lote não é suportada com entidades particionadas. Você pode excluir um máximo de 4000 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 a messageCount exata será excluída em uma única chamada de API.

Como excluir mensagens em lote no Service Bus

Você pode excluir mensagens chamando DeleteMessagesAsync no objeto Recetor do Service Bus. No lado do servidor, DeleteMessagesAsync requer 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, representando o tempo de corte para exclusão. Apenas as mensagens que estavam na fila antes deste período são eliminadas.

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

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

Nota

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

Próximos passos

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

Exemplos para as bibliotecas de cliente .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, para que você não possa mais usar esse protocolo após 30 de setembro de 2026. Migre para as bibliotecas mais recentes do SDK do Azure, que oferecem atualizações de segurança críticas e recursos aprimorados, antes dessa data.

Embora as bibliotecas mais antigas ainda possam 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, consulte o anúncio de aposentadoria de suporte.