如何在Mule中启动流时读取属性文件

如何在Mule中启动流时读取属性文件,mule,mule-studio,mule-component,Mule,Mule Studio,Mule Component,我正在创建一个主要包含两个节点的流: 1个WMB节点-它从MQ拾取消息 2 Java节点-它转换和处理消息 我创建了一个属性文件,其中包含一些用于实现业务逻辑的值。在流的执行过程中,我的java类读取该属性文件 因此,根据当前的实现,每当MQ中出现新消息时,java类都会加载属性文件。因此,如果队列中出现“n”条消息,则流将读取属性文件“n”次 但是我希望在部署/重新启动流时,而不是在每次执行流时,只读取一次属性文件 仅供参考,我的项目中没有使用spring框架。您可以在Mule流中声明以下内容

我正在创建一个主要包含两个节点的流: 1个WMB节点-它从MQ拾取消息 2 Java节点-它转换和处理消息

我创建了一个属性文件,其中包含一些用于实现业务逻辑的值。在流的执行过程中,我的java类读取该属性文件

因此,根据当前的实现,每当MQ中出现新消息时,java类都会加载属性文件。因此,如果队列中出现“n”条消息,则流将读取属性文件“n”次

但是我希望在部署/重新启动流时,而不是在每次执行流时,只读取一次属性文件


仅供参考,我的项目中没有使用spring框架。

您可以在Mule流中声明以下内容,您不需要spring Bean:-

 <context:property-placeholder location="classpath:yourpropertFileName.properties"/>
现在,您可以在Mule Flow中使用它,如下所示:-

<logger message="${message1}" level="INFO" />
<logger message="${message2}" level="INFO" />

为了澄清这一点,Mule在内部使用了Spring框架。Spring用于加载Mule配置文件,因此您可以直接添加上下文名称空间。@Anirban:谢谢您的回复。如何在Java代码中使用此属性文件的密钥。请帮忙。我已经更新了我的答案。。如果您发现问题,请接受答案useful@Anirban:感谢您在此主题上的快速转变和帮助。这样,我可以在流中使用属性文件,例如在文件节点中配置超时,在WMQ节点中配置队列名称。但这里我的问题是如何在Java程序中使用我在Java节点中编写的属性文件值,因为我的属性文件有很多键,我想在运行时使用它们。我不能在流程XML中给出所有这些。请帮助我。请检查我的答案。。使用访问属性文件值的示例Java类更新。。如果你觉得这有帮助,请接受我的回答
<logger message="${message1}" level="INFO" />
<logger message="${message2}" level="INFO" />
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.mule.api.MuleMessage;
import org.mule.api.transformer.TransformerException;
import org.mule.transformer.AbstractMessageTransformer;

    public class SampleJavaClass extends AbstractMessageTransformer {

        Properties prop = new Properties(); //Creating property file object read File attachment path from property file
        InputStream input = null; // To read property file path

        @Override
        public Object transformMessage(MuleMessage message, String outputEncoding)
                throws TransformerException {

             try {
                input = getClass().getResourceAsStream("yourpropertFileName.properties"); // Property file path in classpath
                 prop.load(input); // get and load the property file
                String msg1=prop.getProperty("message1");
                String msg2=prop.getProperty("message2");
                System.out.println("Key1 from Prop file "+msg1);
                System.out.println("Key2 from Prop file "+msg2);
            } catch (IOException e)
            {

                e.printStackTrace();
            }

              return message;
            }
        }