La modalità di lavoro di Java RabbitMQ consiste nella configurazione di più consumatori per consumare messaggi da una singola coda, il che può migliorare la velocità di elaborazione concorrente dei messaggi. L'architettura è come mostrato nel diagramma seguente.
Nota: Indipendentemente dalla modalità di lavoro utilizzata in RabbitMQ, ogni coda supporta più consumatori. Per la stessa coda, un messaggio sarà elaborato solo da uno dei consumatori.
1. Tutorial preliminare
Si prega di leggere prima le seguenti sezioni per comprendere le conoscenze correlate.
- Concetti di base di RabbitMQ
- Modalità di lavoro di RabbitMQ
- Avvio rapido di RabbitMQ per Java (Obbligatorio, poiché le sezioni successive non ripeteranno il codice ma visualizzeranno solo il codice chiave)
2. Configurare più consumatori
Utilizzando l'annotazione RabbitListener e configurando il parametro di concorrenza, è possibile avviare 10 consumatori per elaborare contemporaneamente i messaggi con il seguente codice.
package com.tizi365.rabbitmq.listener;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
// Dichiarare il listener del messaggio e specificare la coda a cui ascoltare attraverso il parametro delle code
// Parametro chiave: la concorrenza rappresenta il numero di consumatori che devono essere avviati per il listener corrente, ed il suo tipo è una stringa
@RabbitListener(queues = "hello", concurrency = "10")
public class HelloListener {
// Utilizzare RabbitHandler per contrassegnare il gestore del messaggio, che viene utilizzato per eseguire la logica di elaborazione del messaggio
@RabbitHandler
public void receive(String msg) {
System.out.println("Consumatore - Messaggio ricevuto '" + msg + "'");
}
}