1

我们的组织是 Mule 4 的新手。我们在部署新的 api 时遇到了一些问题。我们的一些 api 需要大约 10 分钟来部署。我们认为这种延迟部分是由于与 Mule 3 部署相比,Mule 4 api 的 jar 更大,因为所有依赖的 jar 都打包在部署 jar 中。有时,新部署会导致崩溃,服务器上的所有 api 都必须重新启动。

在 Mule 3 中,我相信您可以拥有多个 api 共享共同依赖项。这使我们能够拥有更小的 jar 来部署新的 api。在 Mule 4 中,除了域项目之外,还有其他方法可以做到这一点吗?

我们已经尝试使用命令“mvn package -DlightweightPackage”打包轻量级 jar,但无法部署这些。即使我们将所需的存储库结构放在 /lib/mule/repository 中,轻量级打包 JAR 也不再包含 classloader-model.json 来配置应用程序在哪里查找它的存储库(依赖项),因此它们不会正确部署。

但是,我们使用默认包,在服务器关闭后从分解的 JAR 中删除了资源(依赖树),将依赖树移动到 /lib/mule/resources(共享),然后我们修改了 classloader-model 中的“uri”。展开的应用程序 (JAR) 中的 json。然后我们启动了服务器,应用程序工作正常。这似乎可行,但会迫使我们在部署某些东西时启动和停止服务器。我们希望有一个修复程序仍然允许我们进行热部署。

除了增加我们服务器上的资源之外,还有其他人遇到过这个问题或对如何解决这个问题有任何想法吗?

谢谢!

4

2 回答 2

0

您可以使用域来共享依赖项。连接器和库都可以共享。

请注意,使用您描述的方法未记录且不受支持。它可能会在未来的版本中消失或更改。我强烈建议避免使用它。

轻量级打包应用程序并不意味着部署,只是为了共享项目。

于 2019-04-20T19:44:24.217 回答
0

我编写了一个 maven 插件,它用占位符替换了本地 repo 中可用的所有存储库/**/*.jar 文件,然后将文件复制回 mule-application.jar。

mvn io.github.c-a-services:mule4-jar-size-reducer-maven-plugin:LATEST:jar-compress

然后

mvn io.github.c-a-services:mule4-jar-size-reducer-maven-plugin:LATEST:jar-refill

有关更多选项和自动化,请参阅

https://github.com/ca-services/mule4-jar-size-reducer-maven-plugin

然后文件本身不再需要这么多空间:;-)

17:17:02 [INFO] refdata-2019.9.1-12-SNAPSHOT-mule-application.jar Size=81743321
17:17:02 [INFO] refdata-2019.9.1-12-SNAPSHOT-mule-application.zip Size=960544
于 2019-11-01T18:16:18.990 回答