用途:在 Effect 中解耦生产者与消费者、向多个订阅者广播事件,以及运行可优雅关闭的后台循环。
主要能力:有界 Queue 提供背压,PubSub 用于广播,Effect.fork 启动后台 fiber 并可用 Fiber.interrupt 中断。
必要用法:Queue 示例为 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)。
建议:优先使用有界队列以获得自然背压;通过 fork 多个消费者实现多 worker;确保关闭时中断后台 fiber。
限制与陷阱:无界队列会导致内存增长;后台静默失败需补充日志或指标。本地源码参考位于 docs/effect-source/,关键文件包括 effect/src/Queue.ts、PubSub.ts、Fiber.ts,可用 grep 检索实现与测试。具体版本与完整 API 细节暂未提供。