feat: 增加通知 outbox 重试器

- notifications: 支持失败 outbox 按配置 nextAttemptAt 重试并达到上限转 dead

- settings: 暴露通知 outbox 重试相关环境变量说明
This commit is contained in:
湛兮
2026-06-12 03:39:07 +08:00
parent 4597dcaa38
commit 0d60820c93
7 changed files with 446 additions and 5 deletions
+25
View File
@@ -76,6 +76,11 @@ const INTEGRATION_DEFINITIONS: IntegrationDefinition[] = [
'FEISHU_WEBHOOK_URL',
'NOTIFICATION_WEBHOOK_URL',
'DEVOPS_PUBLIC_URL',
'NOTIFICATION_OUTBOX_RETRY_ENABLED',
'NOTIFICATION_OUTBOX_RETRY_INTERVAL_MS',
'NOTIFICATION_OUTBOX_RETRY_DELAY_MS',
'NOTIFICATION_OUTBOX_MAX_ATTEMPTS',
'NOTIFICATION_OUTBOX_BATCH_SIZE',
],
note: '当前不强制配置机器人;后续可按 provider 接入企微、飞书或通用 webhook。',
variableHelp: {
@@ -102,6 +107,26 @@ const INTEGRATION_DEFINITIONS: IntegrationDefinition[] = [
DEVOPS_PUBLIC_URL: variableHelp('通知消息中跳转回 DevOps 平台的公开访问地址。', {
example: 'https://devops.mrzhan.top',
}),
NOTIFICATION_OUTBOX_RETRY_ENABLED: variableHelp(
'是否启用轻量通知 outbox 重试器,失败通知会按 nextAttemptAt 自动重投。',
{ example: 'true' },
),
NOTIFICATION_OUTBOX_RETRY_INTERVAL_MS: variableHelp(
'通知 outbox 重试扫描间隔,单位毫秒。',
{ example: '30000' },
),
NOTIFICATION_OUTBOX_RETRY_DELAY_MS: variableHelp(
'单条通知投递失败后的下次重试延迟,单位毫秒。',
{ example: '60000' },
),
NOTIFICATION_OUTBOX_MAX_ATTEMPTS: variableHelp(
'单条通知最大投递次数,达到后标记为 dead,避免无限重试。',
{ example: '3' },
),
NOTIFICATION_OUTBOX_BATCH_SIZE: variableHelp(
'每轮 outbox 重试最多处理的消息数量。',
{ example: '10' },
),
},
},
{