Condividi tramite


Come integrare il bus di servizio con RabbitMQ

In questa guida verrà illustrato come inviare messaggi da RabbitMQ al bus di servizio.

Ecco alcuni scenari in cui è possibile usare queste funzionalità:

  • Configurazioni Edge: si dispone di una configurazione perimetrale in cui si inviano messaggi a RabbitMQ, ma si vogliono inoltrare tali messaggi al bus di servizio di Azure per un'ulteriore elaborazione, in modo da poter usare molte delle funzionalità di Azure Big Data.
  • Cloud ibrido: l'azienda ha appena acquisito una terza parte che usa RabbitMQ per le proprie esigenze di messaggistica. I terzi si trovano in un cloud diverso. Mentre eseguono la transizione ad Azure, è già possibile iniziare a condividere dati tramite bridging RabbitMQ con il bus di servizio di Azure.
  • Integrazione di terzi: una terza parte usa RabbitMQ come broker e vuole inviare dati a Microsoft, ma non fa parte dell'organizzazione. È possibile fornire ai terzi una chiave di firma di accesso condiviso che consenta l'accesso a un set limitato di code del bus di servizio di Azure a cui possano inoltrare i messaggi.

La lista non finisce qui, ma è possibile risolvere la maggior parte di questi casi d'uso tramite il bridging di RabbitMQ in Azure.

Prima di tutto, è necessario creare un account Azure gratuito iscrivendosi qui

Dopo aver eseguito l'accesso all'account, passare al portale di Azure e creare un nuovo spazio dei nomi del bus di servizio di Azure. Gli spazi dei nomi sono i contenitori di ambito in cui i componenti di messaggistica, ad esempio code e argomenti, si troveranno.

Aggiungere un nuovo spazio dei nomi del bus di servizio di Azure

Nel portale di Azure, fare clic sul pulsante di grandi dimensioni per aggiungere una nuova risorsa

Creare una risorsa

Selezionare quindi Integrazione e fare clic su Bus di servizio di Azure per creare uno spazio dei nomi di messaggistica:

Selezionare bus di servizio di Azure

Verrà richiesto di immettere le informazioni sullo spazio dei nomi. Selezionare la sottoscrizione di Azure da usare. Se non si dispone già di un gruppo di risorse, è possibile crearne uno nuovo.

Crea spazio dei nomi

Usare rabbitmq per Namespace name, ma si potrebbe scegliere qualsiasi elemento desiderato. Impostare quindi East US per la posizione. Scegliere Basic come piano tariffario.

Se tutto ha funzionato correttamente, dovrebbe essere visualizzata la schermata di conferma seguente:

Conferma della creazione dello spazio dei nomi

Nel portale di Azure verrà visualizzato il nuovo rabbitmq spazio dei nomi elencato. Farvi clic per accedere alla risorsa in modo da poter aggiungere una coda.

Elenco di risorse con il nuovo spazio dei nomi

Creare la coda del bus di servizio di Azure

Dopo aver creato lo spazio dei nomi del bus di servizio di Azure, fare clic sul pulsante Queues a sinistra, sotto Entities, in modo da poter aggiungere una nuova coda:

Crea coda

Il nome della coda sarà from-rabbitmq, in modo da fungere da promemoria di dove provengono i messaggi. Tutte le altre opzioni possono essere lasciate come predefinite, ma possono essere modificate in base alle esigenze dell'app.

Abilitazione del plug-in Shovel di RabbitMQ

Per inviare messaggi da RabbitMQ al bus di servizio di Azure, si userà il plug-in Shovel incluso in RabbitMQ. È possibile abilitare il plug-in e la relativa interfaccia visiva con questo comando:

rabbitmq-plugins enable rabbitmq_shovel_management

Potrebbe essere necessario eseguire il comando come radice.

È ora possibile ottenere le credenziali necessarie per la connessione di RabbitMQ ad Azure.

Connessione di RabbitMQ al bus di servizio di Azure

È necessario creare un criterio di accesso condiviso per la coda, in modo che RabbitMQ possa pubblicare i messaggi. I criteri di firma di accesso condiviso consentono di specificare quali operazioni possano essere eseguite da terzi sulla risorsa. Il concetto è che RabbitMQ è in grado di inviare messaggi, ma non ascoltare o gestire la coda.

Aggiungi criteri di firma di accesso condiviso

Selezionare la casella Send e quindi fare clic su Create per impostare i criteri di firma di accesso condiviso.

Dopo aver creato il criterio, fare clic su di esso per visualizzare la Stringa di connessione primaria. Verrà usata per consentire a RabbitMQ di comunicare con il bus di servizio di Azure:

Ottenere i criteri di firma di accesso condiviso

Prima di poter usare tale stringa di connessione, è necessario convertirla nel formato di connessione AMQP di RabbitMQ. Passare quindi allo strumento di conversione di stringhe di connessione e incollare la stringa di connessione nel modulo, quindi fare clic su Converti. Si otterrà una stringa di connessione pronta per essere passata a RabbitMQ. (Questo sito Web esegue tutte le operazioni in locale nel browser in modo che i dati non siano inviati in rete). È possibile accedere al suo codice sorgente in GitHub.

Convertire la stringa di connessione

A questo punto, aprire il plug-in di gestione di RabbitMQ nei browser http://localhost:15672/#/dynamic-shovels e passare a Admin -> Shovel Management, dove è possibile aggiungere il nuovo Shovel che si occuperà dell'invio di messaggi da una coda RabbitMQ alla coda del bus di servizio di Azure.

Aggiungere RabbitMQ Shovel

Qui, chiamare lo Shovel azure e scegliere AMQP 0.9.1 come protocollo di origine. Nello screenshot è presente amqp://, ovvero l'URI predefinito per connettersi a un server RabbitMQ locale. Assicurarsi di adattarlo alla distribuzione corrente.

Per quanto riguarda la coda, è possibile usare azure come nome della coda. Se la coda non esiste, RabbitMQ la creerà automaticamente. È anche possibile scegliere il nome di una coda già esistente. È possibile lasciare le altre opzioni come predefinite.

Quindi, per quanto riguarda destination, scegliere AMQP 1.0 come protocollo. Nel campo URI, immettere la stringa di connessione ottenuta dal passaggio precedente, in cui si è convertita la stringa di connessione di Azure nel formato RabbitMQ. La cartella dovrebbe avere un aspetto simile a questo:

amqps://rabbitmq-shovel:StringOfRandomChars@rabbitmq.servicebus.windows.net:5671/?sasl=plain

Nel campo Address verrà immesso il nome della Coda del bus di servizio di Azure (in questo caso, chiamata from-rabbitmq). Fare clic su Add Shovel e la configurazione dovrebbe essere pronta per iniziare a ricevere messaggi.

Pubblicare messaggi da RabbitMQ al bus di servizio di Azure

Nell'interfaccia RabbitMQ Management, passare a Queues, selezionare la coda azure e cercare il pannello Publish message. Verrà visualizzato un modulo che consentirà di pubblicare messaggi direttamente nella coda. Per questo esempio, si aggiungerà semplicemente first message come Payload e si premerà Publish Message:

Pubblicare il primo messaggio

Tornare ad Azure ed esaminare la coda. Fare clic su Service Bus Explorer nel pannello sinistro e quindi sul pulsante Visualizza in anteprima. Se tutto ha funzionato correttamente, la coda ora conterrà un solo messaggio. Congratulazioni!

Coda del bus di servizio di Azure

Ma è importante assicurarsi che il messaggio sia quello inviato da RabbitMQ. Selezionare la scheda Peek e fare clic sul pulsante Peek per recuperare gli ultimi messaggi nella coda. Fare clic sul messaggio per esaminarne il contenuto. Verrà visualizzato un contenuto simile all'immagine seguente in cui è elencato first message.

Visualizzazione in anteprima della coda

Riepilogo

Congratulazioni! Ottimo lavoro! Si è riusciti ad ottenere i messaggi da RabbitMQ al bus di servizio di Azure. Ecco un riepilogo dei passaggi seguiti:

  1. Creare uno spazio dei nomi del bus di servizio di Azure
  2. Aggiungere una coda allo spazio dei nomi
  3. Aggiungere un criterio di firma di accesso condiviso alla coda
  4. Ottenere la stringa di connessione della coda
  5. Abilitare il plug-in Shovel di RabbitMQ e l'interfaccia di gestione
  6. Convertire la stringa di connessione del bus di servizio di Azure nel formato AMQP di RabbitMQ
  7. Aggiungere un nuovo Shovel a RabbitMQ e connetterlo al bus di servizio di Azure
  8. Pubblicare messaggi

Seguendo i passaggi precedenti, sono state integrate aree dell'organizzazione esterne ad Azure. Il plug-in Shovel consente di inviare messaggi da RabbitMQ al bus di servizio di Azure. Quest'operazione offre enormi vantaggi, poiché rende possibile consentire a terze parti attendibili di connettere le proprie app alla distribuzione di Azure.

In fin dei conti, lo scopo della messaggistica è di creare connessioni, e grazie a questa tecnica se ne è creata una nuova.

Passaggi successivi