Java 寫前台,C++ 寫後台,共用一個數據庫。前台寫入數據後,期望後台自動檢測並處理。
| 方案 | 實現方式 | 優點 | 缺點 |
|---|---|---|---|
| 數據庫輪詢 | 後台啟動線程定時 SELECT ... WHERE status=NEW | 實現簡單,無額外中間件 | 有延遲,頻繁輪詢壓力大 |
| 消息隊列 | 前台寫庫後發送消息到 RabbitMQ/Kafka,後台消費 | 解耦、實時、可靠、支持重試 | 引入中間件,運維成本增 |
| 數據庫觸發器 + UDF | 觸發器調用 C++ 動態庫或寫入通知表 | 無業務代碼侵入 | 數據庫綁定邏輯,難調試 |
| TCP/HTTP 直接通知 | 前台寫庫後 Socket/HTTP 呼叫後台接口 | 低延遲,無中間件 | 需處理後台離線、重試邏輯 |
引入輕量級消息隊列(如 Redis Stream / RabbitMQ):