Bỏ qua, đến nội dung

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

Plugin message queue qua Redis Streams — xử lý background job với Redis Streams và Consumer Groups, hỗ trợ concurrency control, retry, graceful shutdown.

Plugin này làm gì?

Nếu đã có Redis trong hệ thống, plugin này cung cấp adapter xử lý message queue mà không cần cài thêm RabbitMQ. Plugin sử dụng Redis Streams với Consumer Groups (XREADGROUP) để đảm bảo mỗi message chỉ được xử lý bởi một consumer duy nhất trong cluster.

Lưu ý kỹ thuật: Plugin sử dụng Redis Streams (XADD / XREADGROUP), không phải BullMQ. Mỗi subscription tạo một Redis client riêng biệt.

Tính năng chính

#Tính năngMô tả
1Consumer GroupsMỗi message chỉ được xử lý bởi 1 consumer trong group
2Concurrency controlGiới hạn số message xử lý đồ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 signal
5Graceful shutdownChờ job đang xử lý trước khi tắt
6Auto-trimStream trim ~100,000 entries (MAXLEN approximate)
7ACK + DeleteMessage được ACK và xóa sau khi xử lý

Biến môi trường

BiếnMặc địnhMô tả
QUEUE_ADAPTER(bắt buộc)Phải đặt redis để kích hoạt adapter
QUEUE_ADAPTER_REDIS_URL(bắt buộc)URL kết nối Redis
QUEUE_CONNECTION_RETRY_MAX_ATTEMPTS20Số lần retry kết nố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ò
RedisQueueAdapterImplement IEventQueueAdapter — quản lý subscriptions
publish(channel, content, options)Gửi message vào stream (XADD, MAXLEN ~100000)
subscribe(channel, options)Tạo consumer group + Redis client riêng cho channel
consume(channel)Vòng lặp XREADGROUP BLOCK 1000 — đọc và xử lý message
process(channel, { id, message })Xử lý message, retry khi lỗi, ACK + XDEL

So sánh với RabbitMQ adapter

Tiêu chíRedis StreamsRabbitMQ
SetupDùng chung RedisCần cài riêng
ProtocolRedis StreamsAMQP
RoutingĐơn giản (channel name)Exchange routing phức tạp
ReliabilityPhụ thuộc Redis persistenceCao (durable + persistent)
MonitoringRedis InsightManagement UI built-in
Phù hợpĐã có Redis, workload vừaHigh throughput, mission-critical

Dependencies

PackageVai trò
@digiforce-nc/serverServer framework — IEventQueueAdapter interface
redis (^4.6.10)Redis client (node-redis v4)

Mục lục chi tiết