我如何:在同一环境中部署Mule ESB应用程序的多个实例(相同版本,多个实例)

时间:2015-09-10 22:04:04

标签: maven deployment jenkins mule environment

我们有一个maven Mule ESB应用程序,遵循此Mule推荐的部署到多个环境的标准。

https://docs.mulesoft.com/mule-user-guide/v/3.7/deploying-to-multiple-environments

如何在相同环境中部署相同版本但使用不同配置?

真实世界问题:我没有另外的mule许可证(当前价格为9000美元)来运行我的Jenkins测试,因此我需要一种方法来告诉第二个实例使用jenkins-override.properties文件。

任何想法?

我尝试过的事情: 搜索网络,没有运气 考虑在app.zip名称中命名实例。像这样<app_name>-<version><instance_name>.zip并以编程方式提取instance_name并查找该环境实例名称。

我的maven命令目前是: mvn package -DargLine="-DmyEnv=qa" (只是-DmyEnv = qa由于某种原因不起作用,但这是另一个问题)

3 个答案:

答案 0 :(得分:1)

如果您遵循documentation中的指南,您的应用程序将包含多个属性文件,其名称中包含“环境”标识符。例如,config-production.propertiesconfig-qa.propertiesconfig-development.properties。如果您的目标是根据运行时环境选择要使用的相应属性,那么您可以使用几个选项。

您的问题意味着您正在使用maven filtering在构建时将${mule.env}占位符替换为给定环境。虽然这有效,但这意味着您部署的应用程序将选择相同的属性,无论其部署的环境如何。

另一种选择是使用JVM system properties或环境变量。 Spring(加载这些文件的机制)可以使用java进程启动时提供的值自动替换占位符。

实现此目的的一种方法是使用mule.env提供JVM系统属性$MULE_HOME/conf/wrapper.conf。只需添加类似于以下内容的行。

wrapper.java.additional.6=-Dmule.env=dev

请务必阅读有关标记为*** IMPORTANT ***的其他属性和编号的评论。

这样,您可以使用不同的环境配置每个实例,例如“production”和“ci”,并将相同的应用程序zip文件部署到两者。

答案 1 :(得分:0)

只有在配置Maven构建时,运行maven才会使用myEnv为所选环境配置属性文件。但是这会产生使用不同打包应用程序的问题。 您可以做的是使应用程序查找其中包含应用程序名称的属性文件。像$ {app.name} .env.properties这样的东西,当然你需要使用原始名称和不同的名称部署应用程序。

答案 2 :(得分:0)

让我理解你的问题。

你有一个名为app.zip的mule应用程序,其属性如下: prop1 = 100

现在,您需要使用自己的设置部署几个app.zip的内容:

app_1.zip
prop1 = 100

app_2.zip
prop1 = 200

app_3.zip
prop1 = 300

这是你的要求吗?

如果是,MAVEN可以解决此要求。

如果不是,我认为有一个队列和解耦你的界限的解决方案可能有效。

我等待您的回复,如果您愿意,我可以为您提供maven或队列基本配置示例的示例配置。

问候。