23 | outbox 任务发布与故障恢复实验卡 | 2026-10-04 真实现状:已执行 002-notification-outbox.sql,order() 与订单同事务写入待发事件;scenarios/23-outbox-stub.sh 在 PostgreSQL 16.15、Open Liberty 26.0.0.5 回环部署的原始记录位于 writing-plans/javaee-enterprise/verification/20261004T-outbox-stub/。顺序订单+重试得到同一申请仅一条 PENDING 事件;stub 记录尝试 1 次、注入异常后仍 1 次、再试达 2 次。此 stub 不发送 broker 或邮件;broker 消息证据在第 30 篇的独立记录。 当前合同:同事务订单/申请状态写入和 `(request_id,event_type)` 唯一的任务;stub 只按租户领取 PENDING 任务、增加 attempts 并释放锁,不更新状态。多实例的租约、带 token 的 ACK、外部邮件完成均为未来增量,不得在当前 002 表上执行 lease_token SQL。 已运行:stub 计数更新后抛错,HTTP 500,数据库计数回滚且事件保持 PENDING;随后重试同一事件计数增加。不曾运行:订单与任务两次写入之间故障注入、多实例租约、消息确认后的外部邮件;第 30 篇单独检验 broker 接受后、标记前中断与重复收据。永远不要先标记完成再发送。 复跑:独立迁移 001、002 后在回环服务设置 JAVAEE_DEMO_MODE=true,导入本地 javaee_lab 凭证(不要入库),执行 `bash examples/javaee-enterprise/scenarios/23-outbox-stub.sh`;核对退出码、数据库一单一事件、PENDING 状态、attempts 0→1→失败后仍 1→2。源码/WAR 摘要和原始输出以 verification/20261004T-outbox-stub/ 为准。消息消费者、真正的通知投递账本及人工补偿均未因此完成。