"Stream"
- RabbitMQ Queue Type 選型:Classic、Quorum、Stream 的責任邊界與容量取捨
RabbitMQ 3.x 三種 queue type 的選型 deep article — classic queue(mirrored 已 deprecated)、quorum queue(Raft 一致性、取代 mirrored)、stream(3.9+ append-only log、可重複消費)。涵蓋三種模型在 throughput / retention / replay / 記憶體成本的判讀、宣告語意差異(實機驗證)、4 個 production 故障演練(mirrored 網路放大 / quorum loss / stream retention 超量 / classic→quorum in-flight message),與容量規劃。
- StreamProvider 包 repository watch stream — broadcast、初始值、dispose 實作點
repository 要補 Stream 觀測出口、接給 Riverpod 消費時使用。訂閱模型選 broadcast 還是單訂閱、新訂閱者拿不拿得到當下狀態、controller 誰負責關——每個問題各有一個會靜默失效的預設答案。
- 加書後統計不刷新 — ref.watch 觀察的是 provider 圖、不是資料庫
頁面用了 Riverpod 卻在資料寫入後不更新、或發現自己在導航返回點補 loadData()、用 EventBus 事件觸發 reload 時使用。ref.watch 的 reactive 範圍是 provider 圖上的狀態變化;資料庫寫入不在圖上,補償刷新的出現就是這個缺口的訊號。
- Dart StreamController:single-subscription vs broadcast 的設計選型問題
Dart `Bad state: Stream has already been listened to.` 的根因:預設單訂閱在第二個訂閱者出現時才爆。StreamController vs .broadcast() 修復決策、與 Rx / .obs 的比較。