如何在运行时根据请求在不同的属性文件之间切换?

How to switch between different properties files based on request at runtime?

目前我通过定义一个全局元素来读取属性文件;

>   <configuration-properties doc:name="Local Configuration Properties"
>       doc:id="899a4f41-f036-4262-8cf2-3b0062dbd740"
> file="config\local_app.properties" /> 

但这对我来说还不够 当尝试动态处理不同的客户时。

用例

我需要在收到请求时选择正确的配置文件。也就是说,对于不同的客户端,我有不同的属性文件。(他们的凭据和所有不同的)。当从侦听器收到请求时,我将检查 clientid header 并根据该值选择正确的配置文件。我的属性文件被添加到不同的位置。(通过 openshift 进行部署。)不在 mule 应用程序中。因此,当我们的应用程序支持新客户端时,我们不需要每次都重新部署应用程序。

那么,在这种情况下,如何定义?以及如何选择正确的属性文件?

例如:

clientid =google, i have properties file defined for google-app.properties.
clientid=yahoo, i have properties file defined for yahoo-app.properties.
clientid=? I'll add properties file ?-app.properties later

读取属性文件部署时间。这意味着如果您更改值,您将重新部署应用程序以读取新值。系统属性需要重新启动 Mule Runtime 实例才能设置。并且 Runtime Manager 属性需要重新启动应用程序。在任何情况下,应用程序都会重新启动。属性不能随心所欲地使用。

无法像那样动态地使用配置属性。您可以做的是使用 Mule SDK 创建一个模块,该模块读取属性文件和 returns 结果属性集,因此您可以将结果分配给变量,并将值用作变量。您将需要找到一种方法来更新这些值。也许用调度程序设置一个流以固定频率读取值。