โหมดการทำงานของ Java RabbitMQ คือการกำหนด multiple consumers เพื่อทำการบริโภค (consume) ข้อความจาก queue เดียว ซึ่งสามารถเพิ่มความเร็วในการประมวลผลข้อความพร้อมกันได้ โครงสร้างอยู่ในแผนภูมิต่อไปนี้.
หมายเหตุ: ไม่ว่าจะใช้โหมดการทำงานใดใน RabbitMQ แต่ละคิว (queue) สนับสนุน multiple consumers สำหรับคิวเดียวกัน, ข้อความจะถูกประมวลผลโดย consumers อย่างน้อยหนึ่งคนจากที่มีอยู่.
1. สอนแนะนำเบื้องต้น
โปรดอ่านส่วนต่อไปนี้ก่อนเพื่อทำความเข้าใจเกี่ยวกับความรู้ที่เกี่ยวข้อง.
- พื้นฐานคอนเซป RabbitMQ
- โหมดการทำงาน RabbitMQ
- การเริ่มต้นด่วนสำหรับ Java ใน RabbitMQ (บังคับ, เนื่องจากส่วนถัดไปจะไม่ทำซ้ำโค้ดแต่จะแสดงโค้ดสำคัญเท่านั้น)
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 + "'");
}
}