事件流

事件流是 Frappe 的一项功能,用于从一个 Frappe 站点发布文档变更,并在另一个站点上消费这些变更。当需要在站点之间同步选定的 DocType,而又不想为每种记录类型单独构建集成时,这个功能非常有用。

事件流的工作原理

在典型的配置中,一个站点充当事件生产者,另一个站点充当事件消费者。当选定的文档在生产者站点上被创建或更新时,事件会被记录下来,然后由另一个站点消费。这样就可以在多个 Frappe 站点之间复制主数据、交易数据或自定义 DocType。

版本 15 及之后的状态

从 Frappe/ERPNext 版本 15 开始,事件流不再作为受维护的核心功能提供支持。在 Frappe 版本 14 中,事件流存在于框架源码的 frappe/event_streaming 下。在版本 15 中,Frappe 添加了一个移除补丁,用于移除事件流模块及其 DocType,包括事件生产者、事件消费者、事件更新日志以及相关的映射 DocType。

独立应用

该功能被拆分成了一个独立的应用:frappe/event_streaming。然而,这个应用并没有得到积极维护。该 GitHub 仓库已于 2024 年 12 月 6 日被 Frappe 归档,目前为只读状态,且没有发布任何版本。除非你的团队准备好独立测试和维护它,否则在新的生产环境中应将其视为不受支持的功能。

  • REST API:使用 Frappe 的 REST API 在 ERPNext 和其他系统之间进行明确的集成。
  • Webhook:当文档创建或更新后需要通知另一个系统时,使用 Webhook。
  • 后台任务:对于需要重试、日志和错误处理的同步逻辑,使用定时任务或队列任务。
  • 自定义集成应用:当需要仔细控制数据映射、冲突处理或业务规则时,构建自定义应用。

需要注意的情况

避免在版本 15 或更高版本上围绕事件流规划新的实现。对于当前的 ERPNext 集成,建议优先使用 API、Webhook 和针对集成场景的队列,这样可以明确责任归属、重试行为和故障处理方式。

  • GitHub 上的 frappe/event_streaming
  • Frappe 版本 15 事件流移除补丁
  • Frappe REST API
  • Webhook
  • 后台任务