Bỏ qua, đến nội dung

@digiforce-nc/plugin-queue-adapter-rabbitmq

Plugin message queue qua RabbitMQ — xử lý tác vụ nền (background job) tin cậy với guaranteed delivery, retry, concurrency control, và graceful shutdown.

Plugin này làm gì?

Các tác vụ nặng (gửi email, xử lý file, đồng bộ dữ liệu) không nên chạy trong request cycle. Plugin đăng ký RabbitMQ adapter vào hệ thống Event Queue, cho phép đẩy job vào queue và consumer xử lý bất đồng bộ với đảm bảo message không bị mất.

Tính năng chính

#Tính năngMô tả
1Guaranteed deliveryMessage lưu trữ persistent trong RabbitMQ
2Prefetch / ConcurrencyKiểm soát số message consumer nhận đồng thời
3Retry + max retriesTự retry khi thất bại, dừng sau N lần
4Timeout (AbortSignal)Mỗi job có timeout — tự cancel nếu quá lâu
5Graceful shutdownCancel consume → chờ job đang xử lý → đóng kết nối
6Auto-reconnectTự kết nối lại khi RabbitMQ mất kết nối
7Channel per queueMỗi queue sử dụng channel riêng biệt

Biến môi trường

BiếnMặc địnhMô tả
QUEUE_ADAPTER(bắt buộc)Phải đặt rabbitmq để kích hoạt adapter
QUEUE_ADAPTER_RABBITMQ_URL(bắt buộc)URL kết nối RabbitMQ (VD: amqp://guest:guest@localhost:5672)
QUEUE_CONNECTION_RETRY_MAX_ATTEMPTS20Số lần retry tối đa khi kết nối thất bại
QUEUE_CONNECTION_RETRY_DELAY200Delay giữa các lần retry (ms)

Kiến trúc nội bộ

Thành phầnVai trò
RabbitMQAdapterImplement IEventQueueAdapter — quản lý connection, channels, subscriptions
publish(name, payload, options)Gửi message vào queue (assertQueue + sendToQueue)
subscribe(name, options)Đăng ký consumer cho queue (assertQueue + prefetch + consume)
process(name, channel, message)Xử lý message — gọi event.process(), retry khi lỗi
close(force)Graceful shutdown — cancel consume → chờ processing → đóng

Dependencies

PackageVai trò
@digiforce-nc/serverServer framework — IEventQueueAdapter interface
@digiforce-nc/loggerLogger framework
amqplib (^0.10.9)RabbitMQ AMQP client

Mục lục chi tiết