今天的進展讓我真正感受到「系統開始活了」。
過去幾天在 Redis Queue、Actor Pool、以及通知發送機制的重構終於成形,
從 API → PostgreSQL → Redis → Actor → Teams,全線串接成功。
這不只是讓代碼能跑,而是讓整個系統「有節奏」地運作。
Redis 成為心臟,Actor 成為血管,訊息在其中流動,就像心跳般有規律。
前幾天還是 FIFO 單佇列的混亂場面:
每個 Pod 都在爭搶任務、彼此干擾、甚至重複發送。
今天我們終於讓 Queue 變得有條理、有層次。
SETNX 防重複機制
利用 Redis 的 SETNX
指令,在任務入列時檢查 key 是否存在,
若存在就拒絕入列,確保多 Pod 情境下的唯一性。
三層優先序佇列
BRPOP
機制,優先取高階任務。Actor Pool 重生
從今日 log 可以看出幾個重點修復:
Activity must include text
錯誤,確保訊息內容完整。/health
endpoint、info/error 分級。這次改造 Redis Queue,有種哲學味。
因為寫著寫著,我突然想到,人生其實也該有「優先序」。
最難的不是 coding,而是決定「先做什麼」。
這件事不只適用於工程,也適用於人生。
層級 | 長度 | 狀態 |
---|---|---|
High | 2 | 正常 |
Normal | 4 | 處理中 |
Low | 8 | 排隊中 |
類型 | 原因 | 狀態 |
---|---|---|
ConversationNotFound | Channel 被刪除 | ⚠️ 保留檢查 |
BadSyntax | Text 為空 | ✅ 已修復 |
Timeout | Teams API 延遲 | ⏳ 待觀察 |
明天的主題將是「讓系統被看見」。
我打算導入 Prometheus metrics 與 Grafana dashboard:
這不只是「好看」,而是「好懂」。
畢竟,沒有監控的系統,就像沒有儀表板的飛機。
今天看到第一條成功發送的 Teams 訊息,我真的笑出來。
那不是一條訊息,而是整個架構的里程碑。
當初那堆 error log、死鎖、重複發送的地獄,終於走出來了。
系統開始穩定、有節奏、有生命。
「Queue 穩了,世界就不亂了。」
✍️ Day20 收工心得
重構不是一次性的勝利,而是一種長期抗戰。
每次壓測、每次修 bug、每次 review,
都讓這個系統更接近可被信任的樣子。
明天,我要讓這個會「呼吸」的 Queue,學會「說話」。
下一步,就是監控、報表、與警示。