Skip to content

notify ​

notify() 向一个已知订阅直接发送 NotifyMessage。

WARNING

一般业务不需要调用 notify()。

远端通过 subscribe() 建立订阅后,在被订阅方调用 app.bus.emit(),NACP 会自动发送对应通知。

该接口主要用于自定义订阅实现、协议桥接或其他低层集成。

DANGER

直接调用 notify() 不会在 hitSubName 对应的业务事件上执行 app.bus.emit()。

因此,它不会触发该业务事件的发送方本地 Listener。

不过,生成的 Notify 仍是标准 NACP 消息,出站时仍会在 app.bus 上发布 nacp:outbound:notify 观测事件。

使用 ​

ts
app.notify(to, {
  parentId,
  targetSubName,
  hitSubName,
  payload?,
})
js
const delivered = await app.notify("client", {
  parentId: subId,
  targetSubName: "task:*",
  hitSubName: "task:done",
  payload: { result: 42 },
})
参数说明
to接收通知的 NApp id
parentId对应订阅的 subId
targetSubName订阅时使用的事件名,可以包含 *
hitSubName本次实际命中的具体事件名
payload随通知发送的业务载荷

targetSubName 与 hitSubName 在没有通配符时通常相同:

js
await app.notify("client", {
  parentId: subId,
  targetSubName: "task:done",
  hitSubName: "task:done",
  payload: { result: 42 },
})

返回值 ​

notify() 返回 Promise<boolean>:

  • true:通知已经从发送队列发出。
  • false:通知无法发出,例如没有可用路由。

DANGER

需要注意的是Notify默认不要求ACK。

因此这里返回的true仅代表消息已出站,不代表对方真的已收到或消费了Notify!

Released under the MIT License.