@equental applications/prisma-outbox (英语)
同步 @equationalapplications/core-llm-wiki SQL 将发件箱事件输入您 Prisma 支持的数据库, 使用交易发件箱模式—— 至少一次发送并有订单保证 .
医生 • 妇女 GitHub 图像 • 妇女 范围Lab • 妇女 维基解密 • 妇女 更改日志 • 妇女 问题
投出 SQLite 发包表 @equationalapplications/core-llm-wiki 并同步您 Prisma 支持的系统在 Prisma 交易中的事件, 包含可配置的批量大小、 民意测验间隔、 错误处理和货币保护 .
用于GraphRAG检索表面(traverseGraph, (中文(简体) ), useWikiTraversal, (中文(简体) ), formatGraphContext,参见 GraphRAG 指南。 。 。 .
安装
npm install @equationalapplications/prisma-outbox
# peer deps
npm install @equationalapplications/core-llm-wiki @prisma/client
快开始
import { PrismaOutboxWorker } from '@equationalapplications/prisma-outbox';
import { WikiMemory } from '@equationalapplications/core-llm-wiki';
import { PrismaClient } from '@prisma/client';
const wiki = new WikiMemory(db, {
llmProvider,
config: { enableOutbox: true },
});
await wiki.setup();
const prisma = new PrismaClient();
const worker = new PrismaOutboxWorker({
wikiMemory: wiki,
prisma,
mapEvent: async (event, tx) => {
// mapEvent must be idempotent: at-least-once delivery means the same event
// can be retried if acknowledgement fails after the Prisma transaction commits.
if (event.operation === 'INSERT' && event.table_name.includes('entries')) {
await tx.wikiEntry.upsert({
where: { id: event.record_id },
create: { id: event.record_id, ...(event.payload as Record<string, unknown>) },
update: {},
});
}
},
pollIntervalMs: 5000,
batchSize: 100,
onError: (err, event) => {
console.error('Outbox event failed', event.id, err);
return false; // halt to preserve ordering; return true to skip poison-pill
},
});
worker.start();
// On shutdown:
worker.stop();
API 密码
PrismaOutboxWorker
| 方法 | 说明 |
|---|---|
start() | 从设定的间隔开始投票. 同上,注:. |
stop() | 清除投票间隔和任何待补的超时. |
syncBatch() | 手动触发一个民意测验周期(用于测试). |
PrismaOutboxConfig
| 外地 | 类型 | 默认 | 说明 |
|---|---|---|---|
wikiMemory | WikiMemory | 所需经费 | 这个 WikiMemory 以调查为例. |
prisma | PrismaLike<TTx> | 所需经费 | 任何 Prisma 客户端 $transaction 方法(您的生成) PrismaClient 满足这一点). |
mapEvent | (event, tx: TTx) => Promise<void> | 所需经费 | 将一个发件箱事件映射到交易中的 Prisma 操作 . tx 从您 PrismaClient。 。 。 . |
batchSize | number | 100 | 每个周期获取最大事件 . |
pollIntervalMs | number | 5000 | 民意测验周期之间的相差数秒. |
onError | (err, event) => boolean | undefined | —— 说 | 返回时 true 跳过失败的事件; false编号 :undefined 停下来. |
onWorkerError | (err: Error) => void | —— 说 | 调用工人级别错误( SQLite 读取/ ack 失败) 未交付给 onError。 。 。 . |
如何运作
- 每个
WikiMemory变异( 当enableOutbox: true在解剖学上向 SQLite 写一个事件outbox表格中与域写入相同的交易. PrismaOutboxWorker民意调查getUnprocessedOutboxEvents()和电话mapEvent在每次事件的 Prisma 交易中.- 成功处理的事件ID传递给
markOutboxEventsProcessed(),从 SQLite 中删除它们. - 如果一个完整的批量被无出错地消耗,即时后续周期会运行(后排优化)以排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排的排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排的排出排出排出排出排出排出排出排出排出排出.
限制
- 单入一心. 工人不使用行锁或租赁。 运行两个
PrismaOutboxWorker与 SQLite 文件相对应的实例将导致重复的 Prisma 写作 。 每个SQLite数据库运行一个工人.mapEvent仍必须有能力在交货后至少立即予以容忍(在Prisma成功实施后,承认可能失败).
莫诺雷波生态系统
| 软件包 | 目的 |
|---|---|
| @ 方程式应用程序/ core-llm-wiki | 持续的零星记忆 |
| @ 方程式应用程序/ expo- llm- wiki | 世博会/反应原生器的持久性瞬间记忆 |
| @ 方程式应用/ react-llm-wiki | Web 的持续的零星记忆 |
| @equental applications/prisma-outbox (英语) | 同步 SQLite 发件箱事件到 Prisma |
| @ 方程式应用程序/ 核心工具 | 双子座工具计划和能力注射器 |
| @ 方程式应用程序/ core-okf | 零依赖开放知识格式 (OKF) v0.1 + v0.2 原始人——剖析并生成可互通的知识捆. |
| @equationalapplications/schema-org-llm-wiki (英语) | Cured schema.org 温剂肿瘤特征表 |
| @equental应用程序/schema-software-org | 软件组织执行本体学表——17个节点类型,40个边缘,热剂超集,只数据 |
| @ 公式应用程序/ mcp- server | MCP 服务器向编码代理显示 SynapseTree 内存工具 |
由方程式应用有限责任公司制造. https://equationalapplications.com/ (中文(简体) )