我需要在mule-config.xml
. 有没有办法在骡子中获取环境信息?
9 回答
您可以通过 MEL 访问所有系统属性。但我宁愿建议您将配置模块化到几个文件中(例如:common-config.xml、test-config.xml、prod-config.xml),并在 Mule 启动时根据环境加载正确的文件。
您还可以为每个环境创建属性文件并在 mule 配置文件中访问它。
您可以使用所有配置创建 xml 文件并将文件导入/加载到 mule 项目中
在您的 Mule 配置文件 (src/main/app/app-config-file.xml) 中,您可以添加以下行:
<context:property-placeholder location="${environment.name}.properties" />
${environment.name} 必须是系统环境变量。您需要确保部署应用程序的系统包含该变量。如果您使用的是 Maven(全新安装 -Denvironment.name=test),我认为您也可以在 Maven 构建中指定它。你可以试试。
要在本地进行测试,请右键单击您的项目,选择运行方式,选择运行配置,单击环境选项卡,添加变量“environment.name”和值“local”(不带引号)并确保您的 local.properties 文件存在于添加到构建路径的位置。例如,它可以是 src/main/app 或资源文件夹中。
MEL 有一些上下文对象,如服务器、mule、应用程序使用这些你可以从 #[server.env] 获取环境信息以获取更多信息,请参阅 https://docs.mulesoft.com/mule-user-guide/v/3.6/mule -表达式语言基本语法
您可以使用不同的 mule 属性文件,例如 Mule-dev.properties 、 mule-test.properties。在全局元素中添加一个属性占位符:
在 mule-app.properties 中,根据您要使用的 env 值定义 env= test 或 dev。
清理项目并部署。有时它无法读取 env 特定的属性。清理项目解决了这个问题。
您可以在项目中添加一个属性文件并从属性占位符中引用它。最好在 mule-app.properties 文件中添加环境值 ehich 在 /src/main/app
您可以在此 mule-app.properties 中拥有一个类似 mule.env 的变量,并从 cloudhub 属性将值作为 DEV、QA、UAT、PROD 发送到此属性,并在 mule/src/app 主资源中创建不同的属性文件,然后使用 Properties 占位符配置此属性文件并从 cloudhub 动态发送 mule-env 的值
通常这样做的方式是删除一个属性 bean,您可以在其中设置环境特定的值,如 PROD、QA、DEV 或本地。此环境特定值在 mule-app.properties 中设置,例如 mule.env=local,这需要设置为我们尝试部署它的环境,并且 API 会选择正确的属性文件。