【问题标题】:Steps to Call a Mule flow from Java class从 Java 类调用 Mule 流的步骤
【发布时间】:2015-09-22 06:37:25
【问题描述】:

我是 Mule 的新手,我需要从 Java 类调用一个流。请问谁能给个步骤?

【问题讨论】:

  • 这是用于 MUnit 测试的吗?
  • 你为什么需要这样的要求。请确保在集成逻辑中尽量减少使用 java。尝试使用更多的数据映射器和数据编织
  • 您要调用的 Mule 是在与您的 Java 类还是远程相同的 JVM 中?

标签: mule flow


【解决方案1】:

您可以按照以下步骤进行操作

1) 为了拨打电话,首先您的流程应该将虚拟机作为入站端点。

2) 在您的 java 代码中,从 MuleEventContext 获取 Mulecontext。

3) 从 MuleContext 获取 client() 然后使用 send 方法。下面是示例代码

MuleContext mContext = eventContext.getMuleContext();
    mContext.getClient().send(VM URL, payload);

send() 中的 VM URL 是 VM 队列路径的名称(有时您可能需要在其前面加上“vm://...” - 例如:“vm://myVMQueuePath”。

有任何问题请告诉我。

【讨论】:

  • 我如何获得 MuleEventContext 的实例,我可以自动装配它吗?有问题的类不是任何骡类的子类,所以我没有对 MuleEventContext 的引用。
【解决方案2】:

我试过了,它确实有效。我在任意点工作室中创建了 java 类,并从主要流程中调用了 java。 Java 正在使用 VMQ 调用第二个流。这是我的Java类。希望这会有所帮助

package mulewithjava;

import org.mule.api.MuleContext;
import org.mule.api.MuleEventContext;
import org.mule.api.MuleMessage;
import org.mule.api.lifecycle.Callable;

public class CallMuleFlow implements Callable {


    @Override
    public Object onCall(MuleEventContext eventContext) throws Exception {
        // TODO Auto-generated method stub

        String  payload = (String) eventContext.getMessage().getPayload();  

        MuleContext mContext = eventContext.getMuleContext();

        MuleMessage msg= eventContext.getMessage();

        mContext.getClient().send("vm://VMQ", msg);

        return "After Flow Calling";
    }



} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    相关资源
    最近更新 更多