【问题标题】:How to switch between different properties files based on request at runtime?如何在运行时根据请求在不同的属性文件之间切换?
【发布时间】:2020-04-30 03:04:11
【问题描述】:

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

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

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

用例

当请求进来时,我需要选择正确的配置文件。也就是说,对于不同的客户端,我有不同的属性文件。(他们的凭据和所有不同的)。当从侦听器收到请求时,我将检查 clientid 标头并基于该值,我将选择正确的配置文件。我的属性文件被添加到不同的位置。(通过 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 mule-studio mulesoft mule-esb


    【解决方案1】:

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

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

    【讨论】:

    • 我正在使用一个选项,例如在属性中使用前缀/后缀定义我的变量。并在运行时根据请求和选择值进行计算。例如:在我的属性文件中;客户端A_用户名=玛丽,客户端B_用户名=约翰。在流程中, }]]]>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多