
iii 从 0.21.x 升级到 0.22.x 如何重命名内置 worker 并避免 Duplicate worker configurations 启动报错【免费下载链接】iiiEffortlessly compose, extend, and observe every service in real-time for the first time ever.项目地址: https://gitcode.com/GitHub_Trending/mo/iii当你把 iii 项目从 0.21.x 升级到 0.22.x 后最常见的两个问题是引擎自带的 worker 去掉了iii-前缀而你项目里的config.yaml还在引用旧名或者文件里同时出现了旧名和新名两条记录导致引擎直接启动失败并抛出Duplicate worker configurations错误。本文基于 iii 官方的升级文档 Upgrading from 0.21.x to 0.22.x说明如何完成 worker 重命名、清理重复条目并验证升级结果。0.22.x 的变化共三处其中只有 worker 重命名带有迁移窗口旧名仍然可以解析但iii worker add会打印 deprecation warning未来版本会移除这些别名另外两处移除引擎 CLI 参数、移除一个 Rust SDK 构造器是硬断开。你只需执行与项目实际用到的部分对应的步骤。准备条件项目使用 0.21.x 运行项目根目录下有config.yaml引擎默认从项目根目录读取该文件也可以用--config path指定其他文件。config.yaml中以workers:顶层键列出引擎要加载的 worker每个条目有name可选config块。第一步把常驻 worker 重命名为无前缀名称以下 5 个 worker 在 0.22.x 中去掉了iii-前缀需要把所有引用它们的地方都改过来包括config.yaml条目、iii worker add命令以及 trigger 类型旧名新名iii-httphttpiii-croncroniii-queuequeueiii-statestateiii-pubsubpubsub改名后的config.yaml形如workers: - name: http - name: queue改名的原因不只是消除警告旧名如iii-http在 0.22.x 中仍然能解析项目升级后还能启动但iii worker add会对它们打印 deprecation warning且未来版本将移除这些别名。现在就改名可以让警告消失也避免之后被强制迁移。注意边界其他带iii-前缀的 worker 暂时保留前缀文档说明其中大多数将在未来版本被移除本次升级不需要动它们。第二步清理 config.yaml 中的重复条目避免 Duplicate worker configurations这是升级中最容易踩的启动错误。0.22.x 的引擎会拒绝一份同时列出某个废弃名及其新替换名的config.yaml启动直接失败并抛出Duplicate worker configurations错误错误信息中会点名冲突的那一对名字。典型场景你在升级过程中把- name: iii-http改成了- name: http但原来的旧条目还留在文件里结果新旧两条并存。处理方式只有一个每个 worker 在config.yaml中只保留一条记录。列出iii-http和http或任何其他旧/新配对都是硬性启动错误会阻止引擎启动——删掉的是带前缀的废弃条目保留新名。引擎会启动失败时把冲突对报出来可以按报错中的名字对定位到具体条目。第三步如脚本用到移除已删除的 --use-default-config 参数--use-default-config引擎参数在 0.22.x 中被移除。现在直接在没有任何config.yaml的目录运行iii的行为是自动创建一个workers:为空列表的config.yaml——交互式终端中会先提示非交互式会话CI、容器直接写入文件不再询问。因此要从脚本、Dockerfile 和 CI 中删掉这个参数。官方推荐的新项目初始化方式变为# Before iii --use-default-config # After iii project init . iii没有config.yaml时的完整行为交互式创建、空workers:列表等可参考 Engine 的说明。第四步仅 Rust worker替换被移除的注册函数构造器如果项目中有 Rust worker 调用过RegisterFunction::new_async_with_bad_request该构造器已被移除需要改用RegisterFunction::new_async输入反序列化失败现在会以Error::Serde形式暴露而不是通过调用方提供的 mapper// Before let reg RegisterFunction::new_async_with_bad_request(handler, |e| my_error(e)); // After let reg RegisterFunction::new_async(handler);此步骤只影响调用过该构造器的 Rust worker。Node、Python、Browser 和 Go worker 不需要任何改动。文档也说明这个构造器在 Rust SDK 中存在时间很短大多数项目大概率没有用到。行为变化worker 启动端口解析升级后留意一个行为变化iii worker start和restart以及 worker-manager 守护进程的worker::start在未显式传--port时现在从config.yaml中解析引擎的iii-worker-manager端口而不是像以前那样固定假设49134。自动拉起的 registry 二进制也会收到指向引擎实际端口的III_URL/III_ENGINE_URL因此依赖这些变量的 worker 构建在非默认端口上能正确连接。需要指定端口时显式传--port。结果验证与迁移检查清单升级完成的判定标准来自官方文档的 Result 一节项目能在 0.22.x 上启动且没有 deprecation warning。具体表现为常驻 worker 全部使用无前缀名称config.yaml中每个 worker 只列一次启动时不再出现Duplicate worker configurations引擎启动命令中不再包含已删除的--use-default-config参数Rust worker如有已改为对应当前的 register-function API 并能构建。官方迁移清单逐项核对在config.yaml、iii worker add和 trigger 类型中把常驻 worker 重命名为无前缀名称第一步从config.yaml中删除任何旧/新重复工 作者条目第二步从脚本和 CI 中移除--use-default-config第三步将 Rust 的new_async_with_bad_request替换为new_async第四步如果你的项目后续还要继续向 0.23.x 升级注意 0.23 会移除iii worker生命周期命令并把 worker 迁入 Compose建议升级 0.22.x 并验证通过后再参考 Upgrading from 0.22.x to 0.23.x 规划下一步。【免费下载链接】iiiEffortlessly compose, extend, and observe every service in real-time for the first time ever.项目地址: https://gitcode.com/GitHub_Trending/mo/iii创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考