โหมดการทำงานของ Java RabbitMQ คือการกำหนด multiple consumers เพื่อทำการบริโภค (consume) ข้อความจาก queue เดียว ซึ่งสามารถเพิ่มความเร็วในการประมวลผลข้อความพร้อมกันได้ โครงสร้างอยู่ในแผนภูมิต่อไปนี้.

RabbitMQ โหมดการทำงาน

หมายเหตุ: ไม่ว่าจะใช้โหมดการทำงานใดใน RabbitMQ แต่ละคิว (queue) สนับสนุน multiple consumers สำหรับคิวเดียวกัน, ข้อความจะถูกประมวลผลโดย consumers อย่างน้อยหนึ่งคนจากที่มีอยู่.

1. สอนแนะนำเบื้องต้น

โปรดอ่านส่วนต่อไปนี้ก่อนเพื่อทำความเข้าใจเกี่ยวกับความรู้ที่เกี่ยวข้อง.

2. การกำหนด Multiple Consumers

โดยใช้ annotation RabbitListener และกำหนดพารามิเตอร์ concurrency คุณสามารถเริ่มต้น 10 consumers เพื่อประมวลผลข้อความพร้อมกันด้วยโค้ดต่อไปนี้.

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
// ประกาศ message listener และระบุคิวที่จะฟังผ่านพารามิเตอร์ queues
// พารามิเตอร์สำคัญ: concurrency แทนจำนวน consumers ที่ต้องการเริ่มต้นสำหรับ listener ปัจจุบัน และประเภทข้อมูลเป็นสตริง
@RabbitListener(queues = "hello", concurrency = "10")
public class HelloListener {
	// ใช้ RabbitHandler เพื่อทำเครื่องหมายกับ message handler ซึ่งใช้สำหรับประมวลผลตรรกกรรมข้อความ
    @RabbitHandler
    public void receive(String msg) {
        System.out.println("Consumer - ได้รับข้อความ '" + msg + "'");
    }
}