create: Checkpoint 2026-09-29 16:02:32 UTC [3077498558]

MemRelay-Operation: checkpoint-save:nixmsg-ckpt-20260930-0002
MemRelay-Resource: c8d1788e-e33a-46b2-a2f6-49dacaf90bb6
This commit is contained in:
2026-09-30 00:02:34 +08:00
parent 7f71e66ac8
commit b5f77e3170
@@ -0,0 +1,24 @@
---
title: Checkpoint 2026-09-29 16:02:32 UTC [3077498558]
type: checkpoint
permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/checkpoint-2026-09-29-16-02-32-utc-3077498558
stable_id: c8d1788e-e33a-46b2-a2f6-49dacaf90bb6
scope: project
memory_type: checkpoint
project_id: 25464650-ed5d-440e-b362-190f2852d451
usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998
status: active
revision: 1
request_id: nixmsg-ckpt-20260930-0002
created_at: '2026-09-29T16:02:32.204083+00:00'
updated_at: '2026-09-29T16:02:32.204083+00:00'
tags:
- nixmsg
- design
---
完成:用户衡量 SQLite 能否承担撤回、定时发送、固定延迟窗口。需求已更新(记忆 9cea62eb-5435-4fb1-af51-9699bb182b1a revision 3)。
结论(尚未开工):SQLite 仍适合。三条都是同一张消息表上的状态:pending(未到 send_at)、offline_hold(到点不在线且保留)、delivering(已交给在线连接、等确认)、accepted、recalled、expired、dropped。延迟和定时都是 send_at;相对延迟由服务器时钟计算。离线保留时间从开始投递的那一刻起算。未出服务器的撤回用条件更新保证成功;已推到设备但未确认的撤回与确认谁先到算谁。tag 的订阅者在到点发送时再解析。单进程轮询到期消息即可,1000 设备不需要 Redis。
验证:未写代码。
下一步:等用户确认这套状态语义,尤其是离线保留从投递时刻起算、以及已推送未确认时撤回是争赛。确认后再开工。
给下个会话:项目 ID 25464650-ed5d-440e-b362-190f2852d451,目录 e:/code/NixMsg,仓库仍为空。