Como integrar o Service Bus com o RabbitMQ
Neste guia, vamos aprender como enviar mensagens do RabbitMQ para o Service Bus.
Aqui estão alguns cenários em que podemos fazer uso desses recursos:
- Configurações de borda: temos uma configuração de borda em que enviamos mensagens para o RabbitMQ, mas queremos encaminhar essas mensagens para o Barramento de Serviço do Azure para processamento posterior, para que possamos usar muitos dos recursos de Big Data do Azure.
- Nuvem híbrida: Sua empresa acabou de adquirir um terceiro que usa o RabbitMQ para suas necessidades de mensagens. Eles estão em uma nuvem diferente. Durante a transição para o Azure, você já pode começar a compartilhar dados fazendo a ponte entre o RabbitMQ e o Barramento de Serviço do Azure.
- Integração de terceiros: Um terceiro usa o RabbitMQ como um corretor e quer enviar seus dados para nós, mas eles estão fora da nossa organização. Podemos fornecer-lhes a Chave SAS, dando-lhes acesso a um conjunto limitado de filas do Barramento de Serviço do Azure para onde podem reencaminhar as suas mensagens.
A lista continua, mas podemos resolver a maioria desses casos de uso fazendo a ponte entre o RabbitMQ e o Azure.
Primeiro, você precisa criar uma conta gratuita do Azure inscrevendo-se aqui
Depois de entrar na sua conta, vá para o portal do Azure e crie um novo namespace do Barramento de Serviço do Azure. Namespaces são os contêineres de escopo onde nossos componentes de mensagens irão viver, como filas e tópicos.
Adicionando um novo namespace do Azure Service Bus
No portal do Azure, clique no botão de adição grande para adicionar um novo 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 do namespace. Selecione a subscrição do Azure que pretende utilizar. Se não tiver um grupo de recursos, pode criar um novo.
Use rabbitmq
para Namespace name
, mas pode ser o que quiser. Em seguida, defina East US
para o local. Escolha Basic
como o nível de preço.
Se tudo correu bem, deverá ver o seguinte ecrã de confirmação:
Em seguida, de volta ao portal do Azure, você verá seu novo rabbitmq
namespace listado lá. Clique nele para acessar o recurso para que você possa adicionar uma fila a ele.
Criando nossa fila do Barramento de Serviço do Azure
Agora que você tem seu namespace do Barramento de Serviço do Azure, clique no Queues
botão à esquerda, em Entities
, para poder adicionar uma nova fila:
O nome da fila será from-rabbitmq
apenas como um lembrete de onde as mensagens estão vindo. Você pode deixar todas as outras opções como padrão, mas pode alterá-las para atender às necessidades do seu aplicativo.
Ativando 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 junto com o RabbitMQ. Você pode ativar o plugin e sua interface visual com este comando:
rabbitmq-plugins enable rabbitmq_shovel_management
Talvez seja necessário executar esse comando como root.
Agora é hora de obter as credenciais necessárias para conectar o RabbitMQ ao Azure.
Conectando o RabbitMQ ao Barramento de Serviço do Azure
Você precisará criar uma Política de Acesso Compartilhado (SAS) para sua fila, para que o RabbitMQ possa publicar mensagens nela. Uma Política SAS permite especificar o que terceiros podem fazer com seu recurso. A ideia é que o RabbitMQ seja capaz de enviar mensagens, mas não ouvir ou gerenciar a fila.
Marque a caixa e, em seguida, clique Create
para ter a Send
nossa Política SAS em vigor.
Depois que a política tiver sido criada, clique nela para ver a Cadeia de Conexão Primária. Vamos usá-lo para permitir que o RabbitMQ fale com o Barramento de Serviço do Azure:
Antes de usar essa cadeia de conexão, você precisará convertê-la para o formato de conexão AMQP do RabbitMQ. Então vá para a ferramenta conversor de cadeia de conexão e cole sua cadeia de conexão no formulário, clique em converter. Você obterá uma cadeia de conexão pronta para RabbitMQ. (Esse site executa tudo localmente em seu navegador para que seus dados não sejam enviados pelo fio). 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
, onde você pode adicionar sua nova pá que cuidará do envio de mensagens de uma fila RabbitMQ para sua fila do Barramento de Serviço do Azure.
Aqui chame a sua Pá azure
e escolha AMQP 0.9.1
como 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 adaptar isso à 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 irá criá-la para você. Você também pode escolher o nome de uma fila que já existe. Você pode deixar as outras opções como padrão.
Depois, do destination
lado das coisas, escolha AMQP 1.0
como protocolo. URI
No campo, insira a cadeia de conexão que você obteve da etapa anterior, onde você converteu sua cadeia de conexão do Azure para o formato RabbitMQ. Deverá ter o seguinte aspeto:
amqps://rabbitmq-shovel:StringOfRandomChars@rabbitmq.servicebus.windows.net:5671/?sasl=plain
Address
No campo, digitaremos o nome da sua Fila do Barramento de Serviço do Azure, neste caso, ela foi chamada from-rabbitmq
de . Clique em Add Shovel
, e sua configuração deve estar pronta para começar a receber mensagens.
Publicando mensagens do RabbitMQ para o Barramento de Serviço do Azure
Na interface de gerenciamento do RabbitMQ, podemos ir para Queues
, selecionar a fila azure
e procurar o Publish message
painel. Aparecerá um formulário que permitirá que você publique mensagens diretamente na sua fila. Para o nosso exemplo, vamos apenas adicionar first message
como o Payload
e clique :Publish Message
Volte para o Azure e inspecione sua fila. Clique Service Bus Explorer
no painel esquerdo e, em seguida, clique no botão Espreitar. Se tudo correu bem, verá que a sua fila tem agora uma mensagem. Yay, parabéns!
Mas vamos ter certeza de que essa mensagem é a que você enviou do RabbitMQ. Selecione a Peek
guia e clique no Peek
botão para recuperar as últimas mensagens na fila. Clique na mensagem para inspecionar o seu conteúdo. Você deve ver algo como a imagem abaixo onde o seu first message
está listado.
Vamos recapitular
Parabéns! Conseguiu muito! Você conseguiu obter suas mensagens do RabbitMQ para o Barramento de Serviço do Azure, vamos recapitular as etapas:
- Criar um namespace do Azure Service Bus
- Adicionar uma fila ao namespace
- Adicionar uma política SAS à fila
- Obter a cadeia de conexão da fila
- Habilite o plug-in de pá RabbitMQ e a interface de gerenciamento
- Converter a cadeia de conexão do Barramento de Serviço do Azure para o formato AMQP do RabbitMQ
- Adicionar uma nova pá ao RabbitMQ & conectá-la ao Barramento de Serviço do Azure
- Publicar mensagens
Seguindo as etapas anteriores, você integrou áreas da sua organização que estavam fora do Azure. O plug-in Shovel permitia enviar mensagens do RabbitMQ para o Barramento de Serviço do Azure. Isso tem enormes vantagens, já que agora você pode permitir que terceiros confiáveis conectem seus aplicativos à sua implantação do Azure.
No final, as mensagens são sobre permitir conexões, e com esta técnica acabamos de abrir uma nova.
Próximos passos
- Saiba mais sobre o Barramento de Serviço do Azure
- Saiba mais sobre o suporte ao AMQP 1.0 no Service Bus