Python: usare RabbitMQ

Python: usare RabbitMQ

RabbitMQ è un message broker open-source ampiamente utilizzato per la gestione di code di messaggi in applicazioni distribuite. In questo articolo, esploreremo come utilizzare RabbitMQ in Python per facilitare la comunicazione tra diverse parti di un sistema distribuito.

Il client Pika per Python

Una volta installato RabbitMQ, sarà utile utilizzare un client Python per interagire con il message broker. Uno dei client più popolari è pika. Installiamolo utilizzando il gestore di pacchetti pip:


pip install pika

Connessione a RabbitMQ


import pika

# Connessione a RabbitMQ
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

Nel codice sopra, ci connettiamo a RabbitMQ sulla macchina locale. Assicurati di modificare l'indirizzo e le credenziali di connessione se RabbitMQ è in esecuzione su un server remoto o se hai configurato utenti e password.

Creazione di uno scambio e una coda


# Dichiarazione di uno scambio di tipo 'direct'
channel.exchange_declare(exchange='direct_exchange', exchange_type='direct')

# Dichiarazione di una coda
channel.queue_declare(queue='my_queue')

# Collegamento della coda allo scambio con una routing key
channel.queue_bind(exchange='direct_exchange', queue='my_queue', routing_key='routing_key')

Nel codice sopra, abbiamo dichiarato uno scambio di tipo 'direct' chiamato direct_exchange e una coda chiamata my_queue. Successivamente, abbiamo collegato la coda allo scambio utilizzando una routing key.

Invio di un messaggio


# Invio di un messaggio allo scambio con una routing key
channel.basic_publish(exchange='direct_exchange', routing_key='routing_key', body='Hello, RabbitMQ!')

Ricezione di un messaggio


def callback(ch, method, properties, body):
    print(f"Received message: {body}")

# Dichiarazione di un consumatore che utilizza la funzione di callback
channel.basic_consume(queue='my_queue', on_message_callback=callback, auto_ack=True)

# Avvio del consumatore
channel.start_consuming()

Nel codice sopra, abbiamo definito una funzione di callback callback che viene chiamata quando un messaggio viene ricevuto dalla coda my_queue. Successivamente, abbiamo dichiarato un consumatore e avviato il consumo dei messaggi.

Conclusioni

Questa breve guida fornisce un'introduzione pratica all'uso di RabbitMQ in Python. Puoi sperimentare ulteriormente con diverse configurazioni di scambi, code e routing keys per adattare RabbitMQ alle esigenze specifiche del tuo sistema distribuito. L'uso di RabbitMQ consente di migliorare l'affidabilità e la scalabilità delle applicazioni, consentendo una comunicazione asincrona ed efficiente tra i diversi componenti.

Torna su