mcpField
E
effect-queues-background

effect-queues-background

github.com/mepuka开发537 次安装44 周前更新
代码仓库

关于 effect-queues-background

该 Effect 技能面向 TypeScript 开发者,介绍队列、PubSub 和后台 Fiber。内容涵盖有界队列的背压、事件广播、平稳关闭,以及实现 API 前查阅本地 Effect 源码的流程。

主要功能

  1. 01支持背压的有界队列
  2. 02PubSub 事件广播
  3. 03后台 Fiber 与中断
  4. 04工作进程并发指导
  5. 05查阅本地 Effect 源码的流程

适用场景

  1. 01解耦生产者与消费者
  2. 02向多个订阅者广播事件
  3. 03运行可平稳关闭的后台循环
  4. 04编码前核对 Effect 实现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mepuka/effect-ontology --skill effect-queues-background

安装后在 Claude Code 中输入/effect-queues-background确认已加载。

详细介绍

队列、PubSub 与后台任务

适用场景

  • 通过背压解耦生产者和消费者
  • 向多个订阅者广播事件
  • 运行可优雅关闭的后台循环

队列(有界)

import { Queue } from "effect"
const q = yield* Queue.bounded<string>(32)
yield* Queue.offer(q, "job")
const job = yield* Queue.take(q)

PubSub(广播)

import { PubSub } from "effect"
const ps = yield* PubSub.bounded<string>(32)
yield* PubSub.publish(ps, "evt")

后台 Fiber

const fiber = yield* Effect.fork(loop)
yield* Fiber.interrupt(fiber)

指引

  • 优先使用有界队列,以实现自然背压
  • 通过派生消费者来使用多个工作线程
  • 确保在关闭期间中断后台 Fiber

注意事项

  • 无界队列会导致内存持续增长
  • 后台任务静默失败 → 添加日志/指标

交叉链接

  • 并发:了解池和中断
  • 时间/日志:了解后台任务的可观测性

本地源码参考

关键:实现前请先搜索本地 Effect 源码

完整的 Effect 源代码位于 docs/effect-source/。编写 Effect 代码前,务必先搜索实际实现。

关键源文件
  • Queue:docs/effect-source/effect/src/Queue.ts
  • PubSub:docs/effect-source/effect/src/PubSub.ts
  • Fiber:docs/effect-source/effect/src/Fiber.ts
搜索示例
# Find Queue patterns
grep -F "bounded" docs/effect-source/effect/src/Queue.ts
grep -F "offer" docs/effect-source/effect/src/Queue.ts
grep -F "take" docs/effect-source/effect/src/Queue.ts

# Study PubSub operations
grep -F "publish" docs/effect-source/effect/src/PubSub.ts
grep -F "subscribe" docs/effect-source/effect/src/PubSub.ts

# Find background fiber patterns
grep -F "fork" docs/effect-source/effect/src/Fiber.ts
grep -F "interrupt" docs/effect-source/effect/src/Fiber.ts

# Look at Queue test examples
grep -F "Queue." docs/effect-source/effect/test/Queue.test.ts
工作流
  1. 确认所需的 Queue 或 PubSub API
  2. 在 docs/effect-source/effect/src/Queue.ts 或 PubSub.ts 中搜索其实现
  3. 研究类型和背压模式
  4. 查看测试文件中的用法示例
  5. 根据实际实现编写代码

真实源码 > 文档 > 假设

参考资料

评论

支持 Markdown