如何将对象从java文件发送到mule流消息有效负载?

时间:2018-03-18 18:37:21

标签: java mule esper

我正在使用Anypoint工作室。 我使用esper CEP引擎使用java文件进行事件检测。检测到事件后,我将从java文件中作为system.out.println(Object)在控制台中输出。

我希望将Obejct作为消息属性或有效负载从java输出发送到mule流,因此我可以存储在MongoDB中,或者我可以将其重用于另一个事件检测。 这是我的流程: mule flow

我希望" event.getUnderlying()"要发送到骡子流的对象。

    public void  update(EventBean[] newData, EventBean[] oldData) {
                    EventBean event = newData[0];
                         obj=event.getUnderlying();

                            if(a2==0){
                            i++;
     System.out.println("Event received:"+i+" "+event.getUnderlying());

提前致谢:)

2 个答案:

答案 0 :(得分:0)

Just" post"到要发送到的流的输入连接器。因此,对于HTTP输入,请使用类似org.apache.http.client.HttpClient或HttpUrlConnection的内容

(有很多关于如何在本网站和其他许多网站上使用这些内容的例子......)

其他输入可以使用不同的库,您可以将其保存为文件并让文件输入将其拾取。 (取决于您部署的位置)。

答案 1 :(得分:0)

如果您通过Component调用Java类(正如您在评论中提到的那样),则您的Java类 esper.Test_main 必须实现Callable接口。有关使用Java组件的更多详细信息 - https://docs.mulesoft.com/mule-user-guide/v/3.8/java-component-reference

在这种情况下,您需要实现以下方法:

public Object onCall(MuleEventContext eventContext) {

  //your code here

  return someObject; // return event.getUnderlying() in your case

}

从onCall()方法返回的对象作为'有效载荷'传递。到mule flow中的下一个消息处理器。

如果需要从Java类设置流变量:

public Object onCall(MuleEventContext eventContext) {

  //your code here

  eventContext.getMessage().setInvocationProperty("variableName", "variableValue");

  return someObject; // return event.getUnderlying() in your case

}

现在,您的骡子流中将有一个名为 variableName flowVar

HTH。