Mule:使用SpringBean属性在flow.xml中指定连接器属性

Mule:使用SpringBean属性在flow.xml中指定连接器属性,spring,mule,mule-el,Spring,Mule,Mule El,在需要从集中式数据库指定连接器属性的mule应用程序上工作。我遵循的方法是在spring上下文开始时,从一个具有不可修改映射的bean中的数据库收集数据 <file:inbound-endpoint path="#[applicationConfig.configMap['mydestination']]"/> 其中,applicationConfig是存在于spring-context.xml(不同于flow.xml)中的Springbean,它具有从数据库填充的hashMa

在需要从集中式数据库指定连接器属性的mule应用程序上工作。我遵循的方法是在spring上下文开始时,从一个具有不可修改映射的bean中的数据库收集数据

<file:inbound-endpoint path="#[applicationConfig.configMap['mydestination']]"/>


其中,
applicationConfig
是存在于spring-context.xml(不同于flow.xml)中的Springbean,它具有从数据库填充的hashMap配置映射,并且具有一个键mydestination,该键具有输入文件端点的值。这是正确的方法还是有其他方法可以从数据库实现流元素一次性配置。

在mule flows中定义的Spring Bean在MulerRegistry中注册。请尝试以下类似操作:

<file:inbound-endpoint path="#[app.registry.applicationConfig.getConfigMap().get('mydestination')"/>

但是,不能保证在构建文件端点时注册applicationConfigbean


希望有帮助。

尽量远离注册表,它是在启动时使用的,如果从MEL使用它,速度会非常慢,每次都会执行表达式,您必须交叉手指,希望MEL缓存为您提供性能


这是一个非常常见的场景,您有许多选项,但更简单的一个可能是利用现有的spring属性占位符,然后您可以使用
${myPropertyName}
。请参阅和一篇教程,了解如何使用开源软件而不是定制的db来完成您想要做的事情。如果它适合您的需要,我会按照这种方式来做。

我对我们所做和创建的PoC有相同的要求

使用此占位符配置器,您可以使用自己的自定义SQL语句加载任何JDBC数据源的属性,并在流xml中使用普通的spring占位符
${propertyName}

<bean class="com.redpill_linpro.springframework.beans.factory.config.JdbcPlaceholderConfigurer">
        <property name="dataSource" ref="dataSource" />
        <property name="selectStatement" value="SELECT value FROM properties WHERE key = ?" />
</bean>


该项目在maven central上尚不可用,因此您必须构建它并将其安装到您自己的maven存储库中。

我通过在flow.xml中导入springcontext.xml,在mule flow.xml中使用spring beans hashmap属性实现了这一点。代码

<spring:beans>
    <spring:import resource="classpath:src/main/resources/spring-context.xml"/>
   </spring:beans>  

    <file:inbound-endpoint  path="#{applicationConfig.configMap['mydestination']}" doc:name="File"/>


我需要从数据库而不是从.properties文件中收集配置数据,只有在mule服务启动时才需要收集配置数据,然后在flow.xml中引用连接器和其他组件属性的配置数据。除了注册表之外,还有其他方法引用在spring bean中收集的配置数据吗?如果不是spring context bean,是否还有其他方法而不是在flow.xml中启动服务时使用JavaBean。我不完全确定我是否理解您的意思。为什么zuul方法无效?