Bỏ qua, đến nội dung

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

Plugin Pub/Sub qua Redis Streams — cho phép các instance trong cluster giao tiếp real-time thông qua Redis Streams.

Plugin này làm gì?

Khi chạy nhiều instance, sự kiện phát sinh trên instance A cần thông báo cho instance B (ví dụ: invalidate cache, sync config, broadcast notification). Plugin đăng ký Redis Streams adapter vào hệ thống PubSubManager, cho phép publish/subscribe message giữa các instance.

Lưu ý kỹ thuật: Plugin sử dụng Redis Streams (XADD / XREAD), không phải Redis Pub/Sub truyền thống. Streams có ưu điểm: message được lưu trữ tạm thời (retention ~1000 entries), subscriber có thể đọc lại message đã bỏ lỡ kể từ thời điểm khởi động.

Tính năng chính

#Tính năngMô tả
1Redis StreamsMessage được lưu trữ (retention ~1000 entries), hỗ trợ đọc lại
2Blocking readXREAD BLOCK 1000 — tiết kiệm CPU khi không có message mới
3Auto-reconnectTự kết nối lại khi Redis mất kết nối
4Auto-trimStream tự động trim ~1000 entries (MAXLEN approximate)
5Drop-in adapterThay thế PubSub adapter mặc định, không cần sửa code

Biến môi trường

BiếnMặc địnhMô tả
PUBSUB_ADAPTER_REDIS_URL(bắt buộc)URL kết nối Redis (VD: redis://localhost:6379/0)
PUBSUB_CONNECTION_RETRY_MAX_ATTEMPTS20Số lần retry tối đa khi kết nối thất bại
PUBSUB_CONNECTION_RETRY_DELAY200Delay giữa các lần retry (ms), tăng tuyến tính: retries × delay

Kiến trúc nội bộ

Thành phầnVai trò
RedisPubSubAdapterImplement IPubSubAdapter — quản lý kết nối và channels
publish(channel, content)Gửi message lên Redis Stream (XADD)
subscribe(channel, callback)Đăng ký lắng nghe message từ channel
unsubscribe(channel, callback)Hủy đăng ký
listen()Vòng lặp XREAD BLOCK liên tục đọc message mới

Dependencies

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

Mục lục chi tiết