Skip to main content
GET
/
api
/
v1
/
outbox
/
{channel}
拉取 Outbox
curl --request GET \
  --url https://api.dev.akria.net/api/v1/outbox/{channel} \
  --header 'X-API-Key: <api-key>'
{
  "items": [
    {
      "id": 1,
      "signal_id": "550e8400-e29b-41d4-a716-446655440000",
      "channel": "ghost",
      "payload": {
        "title": "AI 板块出现集中放量",
        "html": "<p><strong>⚠️ AI 板块出现集中放量</strong></p>...",
        "status": "draft",
        "tags": ["signal", "high-priority"],
        "meta_title": "AI 板块出现集中放量",
        "custom_excerpt": "多个AI相关代币在5分钟内成交量激增",
        "meta_description": "多个AI相关代币在5分钟内成交量激增"
      },
      "lease_until": "2026-02-02T10:01:05.123456Z",
      "lease_owner": "worker-abc123"
    }
  ],
  "count": 1
}
下游服务(Ghost / Rocket.Chat)拉取待投递内容。

核心特性

租约机制

自动标记为 leased,防止重复领取

并发安全

使用 SELECT ... FOR UPDATE SKIP LOCKED 确保并发安全

租约超时

过期的 leased 项可以重新拉取

预格式化 Payload

直接可用于投递,无需额外处理

认证

此端点不需要 API Key 认证,可以直接访问。

请求参数

Path Parameters

参数类型必填说明可选值
channelstring渠道名称ghost, rocketchat

Query Parameters

参数类型必填默认值说明范围
limitinteger10返回数量1-100
lease_secondsinteger60租约时长(秒)1-3600
lease_ownerstringnull租约所有者(可选,默认随机生成)最大 64 字符

响应

成功响应(200 OK)

{
  "items": [
    {
      "id": 1,
      "signal_id": "550e8400-e29b-41d4-a716-446655440000",
      "channel": "ghost",
      "payload": {
        "title": "AI 板块出现集中放量",
        "html": "<p><strong>⚠️ AI 板块出现集中放量</strong></p>...",
        "status": "draft",
        "tags": ["signal", "high-priority"],
        "meta_title": "AI 板块出现集中放量",
        "custom_excerpt": "多个AI相关代币在5分钟内成交量激增",
        "meta_description": "多个AI相关代币在5分钟内成交量激增"
      },
      "lease_until": "2026-02-02T10:01:05.123456Z",
      "lease_owner": "worker-abc123"
    }
  ],
  "count": 1
}
  • id: Outbox 记录 ID(用于 ACK)
  • signal_id: 对应的信号 UUID
  • channel: 渠道名称
  • payload: 预格式化的内容(可以直接投递)
  • lease_until: 租约过期时间
  • lease_owner: 租约所有者

空响应(没有待处理项)

{
  "items": [],
  "count": 0
}

错误响应

{
  "detail": "Channel must be 'ghost' or 'rocketchat'"
}
channel 参数必须是 ghostrocketchat,其他值会被拒绝。

使用示例

# 拉取 Ghost 渠道的 outbox
curl "https://api.dev.akria.net/api/v1/outbox/ghost?limit=10&lease_seconds=60"

# 拉取 Rocket.Chat 渠道的 outbox
curl "https://api.dev.akria.net/api/v1/outbox/rocketchat?limit=5&lease_seconds=120"

# 指定租约所有者
curl "https://api.dev.akria.net/api/v1/outbox/ghost?limit=10&lease_seconds=60&lease_owner=worker-1"

注意事项

租约时长lease_seconds 应该设置为处理时间的 2-3 倍,确保有足够时间完成处理。
  • 租约过期:如果处理超时,租约过期后可以重新拉取
  • 立即 ACK:处理完成后立即发送 ACK,释放资源
  • 使用 SELECT ... FOR UPDATE SKIP LOCKED 确保并发安全
  • 多个 worker 可以同时拉取,不会重复处理同一项

定期拉取

建议每 10-30 秒拉取一次

控制数量

每次拉取 10-20 条,避免数据库压力

使用 lease_owner

便于追踪和调试

立即 ACK

处理完立即 ACK,不要等待租约过期

相关文档

团队使用手册

手把手教程,适合团队使用

ACK 确认

下游服务投递完成后发送 ACK 确认

创建信号

接收来自分析层的已审计信号

Authorizations

X-API-Key
string
header
required

API 认证密钥

Path Parameters

channel
enum<string>
required

渠道名称

Available options:
ghost,
rocketchat

Query Parameters

limit
integer
default:10

返回数量

Required range: 1 <= x <= 100
lease_seconds
integer
default:60

租约时长(秒)

Required range: 1 <= x <= 3600
lease_owner
string

租约所有者(可选)

Maximum string length: 64

Response

成功响应

items
object[]

Outbox 项列表

count
integer

返回数量