Partilhar via


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

Criar recurso

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

Selecione o barramento de serviço do Azure

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.

Criar espaço de nomes

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:

Criar confirmação de namespace

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.

Lista de recursos com novo namespace

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:

Criar 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.

Adicionar Política SAS

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:

Obter Política SAS

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.

Converter cadeia de conexão

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.

Adicionar RabbitMQ Shovel

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-rabbitmqde . 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

Publicar a primeira mensagem

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!

Fila do Service Bus do Azure

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.

Espreitar a fila

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:

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