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



我正在使用Anypoint studio。我已经使用esper CEP引擎使用java文件进行事件检测。一旦检测到事件,我将在控制台中从java文件获取输出为system.out.println(Object(。

我希望 Obejct 作为消息属性或有效负载从 java 输出发送到骡子流,这样我就可以存储在 MongoDB 中,或者我可以重用它来进行另一个事件检测。这是我的流程:骡子流

在这里,我希望将"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());

提前致谢:)

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

(在这个网站上有很多如何使用它们的例子,还有很多其他的例子......

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

如果你通过组件调用Java类(正如你在评论中提到的(,你的Java类esper。Test_main必须实现可调用接口。有关使用 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(( 方法返回的对象作为"有效负载"传递给骡子流中的下一个消息处理器。

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

public Object onCall(MuleEventContext eventContext) {
  //your code here
  eventContext.getMessage().setInvocationProperty("variableName", "variableValue");
  return someObject; // return event.getUnderlying() in your case
}

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

呵。

最新更新