Como integrar o Barramento de Serviço ao RabbitMQ
Neste guia, vamos aprender a enviar mensagens do RabbitMQ para o Barramento de Serviço.
Aqui estão alguns cenários em que podemos usar esses recursos:
- Configurações de borda: temos uma configuração de borda em que estamos enviando mensagens para RabbitMQ, mas queremos encaminhar essas mensagens para o Barramento de Serviço do Azure para processamento adicional, para que possamos usar muitas das funcionalidades de Big Data do Azure.
- Nuvem Híbrida: sua empresa acabou de adquirir terceiros que usam RabbitMQ para suas necessidades de mensagens. Eles estão em uma nuvem diferente. Enquanto eles fazem a transição para o Azure, você já pode começar a compartilhar dados por meio da ponte RabbitMQ com o Barramento de Serviço do Azure.
- Integração de terceiros: um terceiro usa o RabbitMQ como um agente e deseja enviar seus dados para nós, mas eles estão fora de nossa organização. Podemos fornecer a eles a chave SAS, concedendo acesso a um conjunto limitado de filas do Barramento de Serviço do Azure para o qual podem encaminhar as mensagens.
A lista continua, mas podemos resolver a maioria desses casos de uso por meio da ponte do RabbitMQ com o Azure.
Primeiro, você precisa criar uma conta gratuita do Azure inscrevendo-se aqui
Quando você estiver conectado à sua conta, vá para o portal do Azure e crie um namespace do Barramento de Serviço do Azure. Os namespaces são os contêineres de escopo em que nossos componentes de mensagens residirão, como filas e tópicos.
Como adicionar um namespace do Barramento de Serviço do Azure
Em portal do Azure, clique no botão de adição grande para adicionar um recurso
Em seguida, selecione integração e clique em Barramento de Serviço do Azure para criar um namespace de mensagens:
Você será solicitado a inserir as informações de namespace. Selecione a assinatura do Azure que deseja usar. Se você não tiver um grupo de recursos, poderá criar um.
Use rabbitmq
para Namespace name
, mas pode ser qualquer coisa que você queira. Então defina East US
para a localização. Escolha Basic
como o tipo de preço.
Se tudo transcorrer bem, você verá a seguinte tela de confirmação:
Em seguida, de volta ao portal do Azure, você verá o novo namespace rabbitmq
listado ali. Clique nele para acessar o recurso para que você possa adicionar uma fila a ele.
Como criar nossa fila do Barramento de Serviço do Azure
Agora que você tem o namespace do Barramento de Serviço do Azure, clique no botão Queues
à esquerda, em Entities
, para que você possa adicionar uma fila:
O nome da fila será from-rabbitmq
apenas como um lembrete para o local de origem das mensagens. Você pode deixar todas as outras opções como padrões, mas pode alterá-las de acordo com as necessidades do seu aplicativo.
Como habilitar o plug-in RabbitMQ Shovel
Para enviar mensagens do RabbitMQ para o Barramento de Serviço do Azure, vamos usar o Plug-in Shovel que vem empacotado com o RabbitMQ. Você pode habilitar o plug-in e sua interface visual com este comando:
rabbitmq-plugins enable rabbitmq_shovel_management
Talvez seja necessário executar esse comando como raiz.
Agora é hora de obter as credenciais necessárias para conectar o RabbitMQ ao Azure.
Como conectar o RabbitMQ ao Barramento de Serviço do Azure
Você precisará criar uma SAS (Política de Acesso Compartilhado) para sua fila para que o RabbitMQ possa publicar mensagens nela. Uma Política SAS permite especificar o que a parte externa tem permissão para fazer com seu recurso. A ideia é que o RabbitMQ é capaz de enviar mensagens, mas não de escutar nem gerenciar a fila.
Marque a caixa Send
e clique em Create
para estabelecer nossa Política de SAS.
Depois que a política estiver criada, clique nela para ver a Cadeia de Conexão Primária. Vamos usá-la para permitir que o RabbitMQ se comunique com o Barramento de Serviço do Azure:
Para usar essa cadeia de conexão, converta-a no formato de conexão AMQP do RabbitMQ. Portanto, vá para a ferramenta conversor de cadeia de conexão, cole a cadeia de conexão no formulário e clique em converter. Você obterá uma cadeia de conexão pronta para o RabbitMQ. (Esse site executa tudo o que é local em seu navegador de modo que os dados não sejam enviados pela rede). Você pode acessar seu código-fonte no GitHub.
Agora, abra o plug-in de gerenciamento RabbitMQ em nossos navegadores http://localhost:15672/#/dynamic-shovels
e vá para Admin -> Shovel Management
, em que você pode adicionar seu novo Shovel que cuidará do envio de mensagens de uma fila do RabbitMQ para sua fila do Barramento de Serviço do Azure.
Aqui, chame seu Shovel azure
e escolha AMQP 0.9.1
como o protocolo de origem. Na captura de tela, temos amqp://
, que é o URI padrão que nos conecta a um servidor RabbitMQ local. Certifique-se de adaptá-lo à sua implantação atual.
No lado da fila, você pode usar azure
como o nome da fila. Se essa fila não existir, o RabbitMQ a criará para você. Você também pode escolher o nome de uma fila que já existe. Deixe as outras opções como estão.
Com relação a destination
, escolha AMQP 1.0
como o protocolo. No campo URI
, insira a cadeia de conexão que você obteve na etapa anterior, em que converteu sua cadeia de conexão do Azure para o formato RabbitMQ. Ele deverá ser parecido com:
amqps://rabbitmq-shovel:StringOfRandomChars@rabbitmq.servicebus.windows.net:5671/?sasl=plain
No campo Address
, vamos inserir o nome da Fila do Barramento de Serviço do Azure, nesse caso, ela se chamava from-rabbitmq
. Clique em Add Shovel
e sua configuração deve estar pronta para começar a receber mensagens.
Como publicar mensagens do RabbitMQ para o Barramento de Serviço do Azure
Na interface de gerenciamento do RabbitMQ, podemos acessar Queues
, selecionar a fila azure
e pesquisar o painel Publish message
. Aparecerá um formulário que permitirá publicar mensagens diretamente em sua fila. Para nosso exemplo, vamos adicionar apenas first message
como Payload
e pressionar Publish Message
:
Volte para o Azure e inspecione sua fila. Clique em Service Bus Explorer
no painel esquerdo e, depois, clique no botão Espiar. Se tudo tiver dado certo, você verá que sua fila agora tem uma mensagem. Sim, parabéns!
Mas vamos garantir que a mensagem seja aquela que você enviou do RabbitMQ. Selecione a guia Peek
e clique no botão Peek
para recuperar as últimas mensagens em sua fila. Clique na mensagem para inspecionar seu conteúdo. Você deve ver algo semelhante à imagem abaixo, em que first message
está listado.
Vamos recapitular
Parabéns! Você fez muito! Você conseguiu enviar suas mensagens do RabbitMQ para o Barramento de Serviço do Azure. Vamos recapitular as etapas:
- Criar um namespace do Barramento de Serviço do Azure
- Adicionar uma fila ao namespace
- Adicionar uma política SAS à sua fila
- Obter a cadeia de conexão da fila
- Habilitar o plug-in RabbitMQ Shovel e a interface de gerenciamento
- Converter a cadeia de conexão do Barramento de Serviço do Azure no formato AMQP do RabbitMQ
- Adicionar um Shovel ao RabbitMQ e conectá-lo ao Barramento de Serviço do Azure
- Publicar mensagens
Seguindo as etapas anteriores, você integrou áreas de sua organização que estavam fora do Azure. O plug-in Shovel permitiu enviar mensagens do RabbitMQ para o Barramento de Serviço do Azure. Isso tem grandes vantagens, já que agora você pode permitir que terceiros confiáveis conectem seus aplicativos à sua implantação do Azure.
No final, o sistema de mensagens é sobre a habilitação de conexões e, com essa técnica, acabamos de abrir uma nova.
Próximas etapas
- Saiba mais sobre o Barramento de Serviço do Azure.
- Saiba mais sobre o Suporte ao AMQP 1.0 no Barramento de Serviço