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.
Através do portal do Azure
Você também pode limpar mensagens da entidade usando o explorador do Barramento de Serviço disponível no portal do Azure. Você pode seguir as seguintes etapas para limpar mensagens:
- Navegue até a folha 'Service Bus explorer' na entidade da qual você deseja excluir mensagens.
- Escolha 'Modo de recebimento' na lista suspensa do explorador do Service Bus.
- Clique na opção limpar mensagens, conforme mostrado no instantâneo.
- Outra caixa de diálogo aparecerá, digite 'limpar' para executar a operação de limpeza de mensagens.
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 de biblioteca de cliente do Barramento de Serviço do Azure para .NET (mais recente)
- Exemplos de biblioteca de cliente do Barramento de Serviço do Azure para Java (mais recente)
- Exemplos de biblioteca de cliente do Barramento de Serviço do Azure para Python
- Exemplos de biblioteca de cliente do Barramento de Serviço do Azure para JavaScript
- Exemplos de biblioteca de cliente do Barramento de Serviço do Azure para TypeScript
Exemplos para as bibliotecas de cliente .NET e Java mais antigas:
- Exemplos de biblioteca de cliente do Barramento de Serviço do Azure para .NET (legado) - Consulte o Exemplo de pré-busca .
- Exemplos de biblioteca de cliente do Barramento de Serviço do Azure para Java (legado) - Consulte o Exemplo de pré-busca .
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.