Até pouco tempo, o Azure Service Bus apenas tinha apenas a oferta para o Tier Standard otimizados para ambientes de baixa taxa de transferência e para desenvolvedores.
O Tier Premium proporciona recursos dedicados por namespace, garantindo latência previsível e maior taxa de transferência a um preço fixo, sendo otimizada para ambientes de produção e alta taxa de transferência.
Hoje vou mostrar como realizar a migração do Azure Service Bus Standard para Premium utilizando Powershell (também é possível fazer no Azure Portal)
Antes de migrar, você precisa saber disso
- Nenhuma alteração na aplicação é necessária, pois a Connection String existente no tier Standard vai ser criada no novo namespace Premium
- Caso você já possua um Service Bus Premium e queira utilizá-lo para esta migração, ele não deverá ter entidades e não deverá ter o particionamento habilitado
- Todas as entidades no namespace standard são copiadas para o namespace premium durante o processo de migração
- A migração dá suporte a 1.000 entidades por unidade do sistema de mensagens na camada premium
- Para migrar um tier Basic para o tier Premium, é necessário migrá-lo para o tier Standard primeiro e depois para o Premium
- O controle de acesso baseado em função (RBAC) não é migrado, sendo necessário adicionar após a migração
Realizando a migração com Powershell
Antes de começar o primeiro passo é ter dois Azure Service Bus, o Standard e o Premium, lembrando que o Premium precisa estar vazio
Aqui te mostro o passo a passo, para realizar a migração, mas também tem o script pronto aqui no meu repositório GitHub
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-standard-service-bus-premium-viniciusdeschamps.com_.br_.png)
Vamos dar uma olhada nas configurações do Service Bus Standard
Service Bus Standard
Overview
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-standard-overview-viniciusdeschamps.com_.br_.png)
Shared access policies
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-standard-shared-access-policies-viniciusdeschamps.com_.br_-1024x483.png)
Queue
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-standard-queue-viniciusdeschamps.com_.br_.png)
Topic
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-standard-topic-viniciusdeschamps.com_.br_.png)
E agora garantir que o Service Bus Premium está vazio
Service Bus Premium
Overview
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-premium-overview-viniciusdeschamps.com_.br_.png)
Shared access policies
Shared access policies são criadas automaticamente ao criar um Azure Service Bus, seja ele Standard ou Premium, então tudo bem existir e não vai atrapalhar a migração.
Quer saber mais sobre Shared Access Policies? Clique aqui
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-premium-shared-access-policies-viniciusdeschamps.com_.br_-1024x521.png)
Queue
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-premium-queue-vazio-viniciusdeschamps.com_.br_-1024x689.png)
Topic
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-premium-topic-vazio-viniciusdeschamps.com_.br_-1024x692.png)
Definindo variáveis
Em seguida, vamos precisar das seguintes informações para definir como variáveis no nosso script
- Resource Group do Azure Service Bus Standard
- Nome do Azure Service Bus Standard
- Resource ID do Service Bus Premium, no formato abaixo
- /subscriptions/[subscription-id]/resourceGroups/[resource-group]/providers/Microsoft.ServiceBus/namespaces/[Azure-Service-Bus-Premium-Name]
- Domain Name Service Name pós-migração
- Será utilizado para acessar o namespace Standard (antigo) após a migração para esvaziar filas e assinaturas
No cenário que estou utilizando, estas são as variáveis:
$resourceGroupSourceAsb = "rg-vinicius"
$sourceServiceBus = "vinicius-sb01"
$targetServiceBus = "/subscriptions/073f055f-b619-5649-c913-bb1462def95f/resourceGroups/rg-vinicius/providers/Microsoft.ServiceBus/namespaces/vinicius-sb02-premium"
$dnsPostMigration = "acessarviniciussb01"
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-premium-definindo-variaveis-viniciusdeschamps.com_.br_.png)
Executando a migração
Uma vez definida as variáveis, vamos iniciar a migração, com o seguinte comando
az servicebus migration start --resource-group $resourceGroupSourceAsb --name $sourceServiceBus --target-namespace $targetServiceBus --post-migration-name $dnsPostMigration
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-premium-executar-migracao-viniciusdeschamps.com_.br_.png)
E aguardar a execução até que você veja a seguinte saída
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-premium-migracao-completa-viniciusdeschamps.com_.br_.png)
Então, confirmar a migração, para conseguir acessar o Service Bus Premium pela sua Connection String
az servicebus migration complete --resource-group $resourceGroupSourceAsb --name $sourceServiceBus
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/02/migrar-service-bus-standard-para-premium-service-bus-premium-completar-migracao-viniciusdeschamps.com_.br_.png)
Este comando não retornará nenhum tipo de saída, então agora vamos verificar como está o Service Bus no Azure Portal
Verificar no Azure Portal
Primeiro, vamos até o Azure Service Bus Standard
Pós-migração Service Bus Standard
O Shared access policies foi alterado, como você pode ver, agora o Primary e o Seconday Connection String mostra o valor definido na variável $dnsPostMigration (acessarviniciussb01)
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-standard-shared-access-policies-apos-migracao-viniciusdeschamps.com_.br_-1024x621.png)
Observando o queues, no Service Bus Standard ainda possui a queue-test e com 16 mensagens, e precisamos limpar antes de deletar esse Service Bus
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-standard-queue-apos-migracao-viniciusdeschamps.com_.br_-1024x603.png)
Pós-migração Service Bus Premium
Já no Shared access policies do Service Bus Premium, temos um Alias Primary e Secondary Connection String utilizando o nome do Service Bus Standard, e esta é a explicação para a frase “Antes de migrar, você precisa saber disso”:
Nenhuma alteração na aplicação é necessária, pois a Connection String existente no tier Standard vai ser criada no novo namespace Premium
![This image has an empty alt attribute; its file name is migrar-service-bus-standard-para-premium-service-bus-premium-shared-access-policies-apos-migracao-viniciusdeschamps.com_.br_-1024x629.png](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/image.png)
E também o topics-test em Topics
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-premium-topic-apos-migracao-viniciusdeschamps.com_.br_-1024x701.png)
Além disto, temos agora o queue-test em Queues
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/01/migrar-service-bus-standard-para-premium-service-bus-premium-queue-apos-migracao-viniciusdeschamps.com_.br_-1024x661.png)
Porém, como podem observar, as mensagens que existiam no Service Bus Standard não foram migradas para o Premium, inclusive a Microsoft, em sua documentação, explica isso
Os dados da mensagem que foram confirmados no namespace standard não são copiados do namespace standard para o namespace premium.
O namespace standard pode ter algumas mensagens que foram enviadas e confirmadas enquanto a migração estava em andamento. Esvazie manualmente essas mensagens do namespace Standard e envie-as manualmente para o namespace Premium. Para drenar manualmente as mensagens, utilize um aplicativo de console ou um script que drene as entidades do namespace padrão usando o nome DNS pós-migração que você especificou nos comandos de migração. Envie essas mensagens para o namespace premium para que elas possam ser processadas pelos receptores.
Enviar mensagens Service Bus Standard para o Service Bus Premium
Até o momento da criação deste artigo, não consegui encontrar uma forma de fazer através de Powershell, apenas C# e Python.
Então, utilizei o código que encontrei aqui como exemplo para criar o código em Python.
Você precisa instalar os seguintes módulos do Python e o código em Python está disponível aqui no meu GitHub
- pip install azure-servicebus
Eu executei através do Visual Studio Code, indo em Run > Start Debugging para caso exista algum erro, eu consiga ter mais detalhes a respeito
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/02/migrar-service-bus-standard-para-premium-service-bus-premium-enviar-mensagem-standard-premium-python-viniciusdeschamps.com_.br_.png)
E essa foi a saída, após a execução
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/02/migrar-service-bus-standard-para-premium-service-bus-premium-enviar-mensagem-standard-premium-python-output-viniciusdeschamps.com_.br_.png)
Vamos conferir no Azure Portal, se o Service Bus Premium agora possui mensagens no queue
![](https://viniciusdeschamps.com.br/wp-content/uploads/2024/02/migrar-service-bus-standard-para-premium-service-bus-premium-queue-apos-execucao-python-viniciusdeschamps.com_.br_.png)
Agora que a migração ocorreu, as mensagens foram transferidas para o Service Bus Premium, basta remover o Service Bus Standard
Referências
- https://renicius-pagotto.medium.com/azure-service-bus-entendendo-seu-funcionamento-parte-1-52ab641a4d00
- https://learn.microsoft.com/pt-br/azure/service-bus-messaging/service-bus-migrate-standard-premium
- https://learn.microsoft.com/pt-br/azure/service-bus-messaging/service-bus-migrate-standard-premium#migration-steps
- https://learn.microsoft.com/pt-br/azure/service-bus-messaging/service-bus-authentication-and-authorization
Deixe um comentário