@ riestools/ 演员引擎
主机-不可知论演员和提供者引擎.
引擎解析一个系统配置,解析一个提供者图, 设置一个定位器,构建每个演员 有自己的演员配置和 相同的提供者实例,通过限制的每个参与者视图来配置和解析,并返回一个像素可中止的会话. 它不知道哪个表面驱动它:主机包,如浏览器- kit 和 cli-kit 供应生命周期适配器,必要时提供不同的监督 政策.
重命名从 @ariestools/actor-system,它仍为被消耗的别名
一个释放。 见 那个包 用于移民表.
startActorEngine(options) 在编译前返回控件。 订阅
安全粗糙的靴子事件, 读取不可更改的界限 snapshot() 记录,等待
whenReady(),并调用手柄的同能 stop() 加入清理甚至
发射时正在获取资源。 在获取期间请求停站
然后在下一个合作社 收回获得的资源
检查点没有启动后提供商或演员。 不是强迫的
中止任意工厂代码或中断已经运行的监管呼叫 .
自定义的提供商应该呼叫他们提供的 checkActive 在购置之间;
发射装置在建造演员之前也要检查 编译失败仍可通过
手柄。 事件带有固定的阶段/结果代码、顺序和不降级
通过毫秒,从不配置或原始错误消息。 两个都扔了
并且拒绝观察者, 默认提供方记录实际
提供方购置/处置;发射方记录
一弹一弹 完成事件表明其开始顺序,包括
失败的获取和回滚 。 资源ID是公共图表标签(从未)
机密; 不支持的字符或标签超过128个字符被编辑.
自定义提供方收到相同的选项 diagnostics 记者和可以使用
traceActorEngineResource 围绕自有业务。 主诊断汇构成
,不能替换操作结果/错误。 内建监督记录驻地起动、待命和停站;
海关监管政策通过同一可选观察者接缝报告.
汇编后, snapshot().plan 获取前保留一个安全图表.
describeActorEnginePlan(compiled) 独立披露同一投影:
节点、所需/可选边、绑定和没有可选能力
单独的遗漏数和每个收藏的可配置约束。 从来没有
包括作者/已解决的配置或工厂。 编译失败
保留事件而不假装已解决的图表存在.
renderActorEngineBoot(snapshot, 'text' | 'tree' | 'json') 做同样的
安全的地方记录,保存缺失的图表和校正指标。 没错
不查询定位器、收集错误或传送遥测.
默认内存提供器给每个供应商工厂一个被冻结的定位器
外表上仅限于供货商宣称的依赖性 未申报
getInstance 财务报告和审定财务报表 tryGetInstance 请求拒绝
ActorEngineDependencyAccessError;别名不能允许额外访问.
表面没有登记或销毁方法,只载有
标准仪器上下文。 调查期间仍然可以进行
供应商的处置,并在其后被撤销,包括失败的创建和
倒转. 已经返回的提供者对象不会被撤销 。 自定义
提供者可以使用 createActorEngineDependencyScope 同一边界.
每个演员工厂都只接收演员的外表
依赖性,包括当主机使用自定义提供器时. 演员访问
幸存的停止钩, 在提供者发布前被取消, 关闭失败
工厂建设或一发完成。 一个居民的 whenStopped()
解决方案还取消了其范围,而兄弟般的行为者和提供商仍然保留
活着. requireResidentTerminationSignals: true 拒绝没有这个条件的居民
结构信号; 兼容性发射保留了系统排水吊销
演员没有它。 会议保留了可信任的
拥有者定位器. 特定主机的定位扩展必须如实提供
提供方,而不是通过行为者来联系.
宣告可选边距 optionalDependencies。汇编选择符合条件
一次执行和记录缺失,未配置的可选能力
内 resolution.absentOptionalDependencies。模糊性、周期性、无效
约束和所需的过渡性依赖仍然失败。 宣布缺席
可选查找返回 undefined 结束 tryGetInstance; 没有运行时间查找
选择新的提供者。 汇编的依赖性申报是不可改变的快照.
import {
ActorEngineCatalog,
createActorEngineProviderRegistry,
launchActorEngine,
} from '@ariestools/actor-engine'
const actorRegistry = new ActorEngineCatalog()
const providerRegistry = createActorEngineProviderRegistry()
const session = await launchActorEngine({
actorRegistry,
config,
providerRegistry,
})
await session.stop()
需要在其中检查、验证或再利用已解决计划的主机 运行时间可以将编译与运行时间获取分开:
import {
compileActorEngine,
launchCompiledActorEngine,
sequentialActorEngineSupervision,
} from '@ariestools/actor-engine'
const compiled = compileActorEngine({
actorRegistry,
config,
providerRegistry,
})
// No provider has been created and no actor has been constructed or started.
console.log(compiled.providerSystem.resolution)
const session = await launchCompiledActorEngine({
actorRegistry,
compiled,
supervision: sequentialActorEngineSupervision,
})
parallelActorEngineSupervision 是默认,支持动态
管弦乐. sequentialActorEngineSupervision 开始演员并加入他们的
在注册顺序中准备,然后倒转或倒转
秩序。 秩序。 没有结构准备状态表面的行为者被视为已做好准备
这两种政策都存在.
编译对象保留已安装的声明和提供者描述符,所以 它是一种运行时的工艺品,而不是结构化-整流线格式。 浏览器 域名通过 : 其主机适配器,然后将这些值绑定在本地登记册上.
本地运行时间主机可以设置 requireResidentFailureSignals: true 所以每个
居民演员必须曝光 whenFailed()。 。 。 . session.whenTerminal() 种族
指定供应商和主机/运输故障源并拒绝
a 一个 ActorEngineTerminalFailureError 保存资源类型、资源
身份证,稳定代码, 和原始原因。 年长者 whenFailed() 方法仍为
一个原始的- error相容信号.
监督你自己塑造的演员
建立自己行为者的东道主——而不是从一个化身中发动他们 和目录——通过同样的政策监督它们:
import { launchActors, sequentialActorEngineSupervision } from '@ariestools/actor-engine'
const session = await launchActors(actors, {
supervision: sequentialActorEngineSupervision,
})
await session.whenTerminal().catch(handleFailure)
await session.stop()
createParallelActorEngineSupervision({ orchestrator }) 监督
管弦乐家 呼叫者已经拥有。 那这个政策就只能阻止它
将管弦乐团的生命周期留给主人.