event_queue_params
定位
event_queue_params 是 queue / event worker 的控制參數表。
它不是 queue 本體,也不是 log;用途是讓程式用 p_key 讀取目前應採用的 queue、task queue、mailer 或費用調整版本。
Table schema
CREATE TABLE `event_queue_params` (
`id` int NOT NULL AUTO_INCREMENT,
`p_key` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`p_value` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='event_queue 控制參數';目前參數
| id | p_key | p_value | 說明 |
|---|---|---|---|
| 1 | run_version | 2 | event_queue worker / handler 的執行版本 |
| 2 | task_run_version | 2 | task_event_queue worker / handler 的執行版本 |
| 3 | mailer_version | 3 | mailer / notification 寄送流程版本 |
| 4 | quote_fee_adjust_alpha | 0.2 | quote fee 調整係數 |
p_value 是 varchar(100),但版本值仍用數字字串保存,例如 2、3。
run_version 更新規則
調整 event_queue 執行程式、handler dispatch、notification worker 行為,且程式會依版本切換邏輯時,要同步更新:
UPDATE event_queue_params
SET p_value = '<new_version>'
WHERE p_key = 'run_version'
LIMIT 1;目前基準值:
| id | p_key | p_value |
|---|---|---|
| 1 | run_version | 2 |
若 queue 程式調整後預期跑新版邏輯,要把 run_version 的 p_value 改成程式預期的新版本值。
常用 SQL
查目前控制參數
SELECT
id,
p_key,
p_value
FROM event_queue_params
ORDER BY id;查 event_queue 版本
SELECT
id,
p_key,
p_value
FROM event_queue_params
WHERE p_key = 'run_version'
LIMIT 1;更新 event_queue 版本
UPDATE event_queue_params
SET p_value = '<new_version>'
WHERE p_key = 'run_version'
LIMIT 1;更新 task_event_queue 版本
UPDATE event_queue_params
SET p_value = '<new_version>'
WHERE p_key = 'task_run_version'
LIMIT 1;排查重點
- 不要用
id判斷參數語意;程式與排查都應以p_key為準。 - 更新版本時不要新增同名
p_key,避免 worker 讀到不預期的 row。 - 只調整
event_queue通知 worker 時,通常更新run_version。 - 只調整
task_event_queue內部任務 worker 時,通常更新task_run_version。 - 若 notification 送出流程和 mailer 實作有版本切換,才檢查
mailer_version。