簡體   English   中英

如何在 mule 4 中在運行時創建流

[英]How to create a flow in runtime in mule 4

我想基於流模板在運行時創建一個新的 mule 流。 我發現 mule 4 中的 Java 模塊可以幫助我解決這個問題,所以在我的主要流程中,我嘗試調用 Java 實例方法:

<http:listener doc:name="Listener" doc:id="5b0f79ff-1a60-4c1a-bc9d-fbe350f4e595" config-ref="HTTP_Listener_config" path="/producer"/>

<java:new doc:name="New DynamicProducerFlowGenerator" doc:id="6c8cf087-0601-4b89-9d24-16650b9a6e6f" class="DynamicProducerFlowGenerator" constructor="DynamicProducerFlowGenerator()" target="DynamicProducerFlowGenerator"/>

<java:invoke doc:name="Invoke" doc:id="d5258c18-74e8-4c86-a0ae-758ad41d1b32" instance="#[vars.DynamicProducerFlowGenerator]" class="DynamicProducerFlowGenerator" method="initialise()"/>

為了調用這個方法,我創建了一個名為 DynamicProducerFlowGenerator 的 Java class,這是我的 Java 代碼:

公共 class DynamicProducerFlowGenerator {

public DynamicProducerFlowGenerator() {

}



    public void initialise() {

            MuleContextFactory muleContextFactory = new DefaultMuleContextFactory();                



    ConfigurationBuilder builder = new SpringXmlConfigurationBuilder("dynamic-producer-flow-template.xml");

            

    MuleContext muleContext = muleContextFactory.createMuleContext();

    builder.configure(muleContext);

    muleContext.start();

    }

}

但是,當我嘗試運行它時,我總是遇到錯誤:

Message        : Invocation of Method 'initialise()' from Class 'DynamicProducerFlowGenerator' without any argument resulted in an error.

Cause: org.mule.api.MuleRuntimeException - Couldn't find config via SPI mechanism. Corrupted Mule core jar?

我認為問題在於這行代碼

“MuleContext muleContext = muleContextFactory.createMuleContext();”

但我不知道如何解決它。 這是我在 pom.xml 中的一些依賴項:

 <dependency>

  <groupId>org.mule.tools.devkit</groupId>

  <artifactId>mule-devkit-annotations</artifactId>

  <version>3.9.7</version>

  <scope>provided</scope>

</dependency>

<dependency>

    <groupId>org.mule</groupId>

    <artifactId>mule-core</artifactId>

    <version>3.9.0</version>

</dependency>

    <dependency>

  <groupId>org.mule.module</groupId>

  <artifactId>mule-java-module</artifactId>

  <version>1.2.6</version>

  <classifier>mule-plugin</classifier>

</dependency>

<dependency>

    <groupId>org.mule.modules</groupId>

    <artifactId>mule-module-spring-config</artifactId>

    <version>3.9.0</version>

誰能幫我解決這個問題? 還有另一種方法可以用來在 mule 4 的運行時創建新流程嗎?

先感謝您

首先,您的依賴項似乎混合了 Mule 3 和 Mule 4 依賴項。 那永遠行不通,它們是不相容的。 例如 Devkit 是一個 Mule 3 工具。 如果您使用的是用於 Mule 3 的方法,如您的示例中所示,則在 Mule 3 中使用時將不起作用。

其次,我會問您要通過動態創建流程來解決什么問題。 我不確定 Mule 4 是否支持它們。我認為這不是一個好習慣。 從 Java 組件中的 mule-core 或類似的 Mule 庫調用任何東西肯定不是一個好習慣。 例如, 即使在連接器中訪問 Mule 上下文也不是一個好習慣

我建議准確定義您需要實現的目標,並嘗試更好地支持和推薦的替代方法。 For example, using the XML SDK , to create parametrized 'connectors' from flows, or Java SDK to create connectors and modules in Java.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM