Compartilhar via


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

Create resource

Em seguida, selecione integração e clique em Barramento de Serviço do Azure para criar um namespace de mensagens:

Select Azure Service bus

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.

Create namespace

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:

Create namespace confirmation

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.

Resource list with new namespace

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:

Create queue

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.

Add SAS Policy

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:

Get SAS Policy

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.

Convert connection string

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.

Add RabbitMQ Shovel

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:

Publish first 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!

Azure Service Bus Queue

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.

Queue peek

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:

  1. Criar um namespace do Barramento de Serviço do Azure
  2. Adicionar uma fila ao namespace
  3. Adicionar uma política SAS à sua fila
  4. Obter a cadeia de conexão da fila
  5. Habilitar o plug-in RabbitMQ Shovel e a interface de gerenciamento
  6. Converter a cadeia de conexão do Barramento de Serviço do Azure no formato AMQP do RabbitMQ
  7. Adicionar um Shovel ao RabbitMQ e conectá-lo ao Barramento de Serviço do Azure
  8. 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