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
Selezionare quindi Integrazione e fare clic su Bus di servizio di Azure per creare uno spazio dei nomi di messaggistica:
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.
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:
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.
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:
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.
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:
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.
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.
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
:
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!
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
.
Riepilogo
Congratulazioni! Ottimo lavoro! Si è riusciti ad ottenere i messaggi da RabbitMQ al bus di servizio di Azure. Ecco un riepilogo dei passaggi seguiti:
- Creare uno spazio dei nomi del bus di servizio di Azure
- Aggiungere una coda allo spazio dei nomi
- Aggiungere un criterio di firma di accesso condiviso alla coda
- Ottenere la stringa di connessione della coda
- Abilitare il plug-in Shovel di RabbitMQ e l'interfaccia di gestione
- Convertire la stringa di connessione del bus di servizio di Azure nel formato AMQP di RabbitMQ
- Aggiungere un nuovo Shovel a RabbitMQ e connetterlo al bus di servizio di Azure
- 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
- Altre informazioni sul bus di servizio di Azure
- Altre informazioni sul Supporto di AMQP 1.0 nel bus di servizio