我正在使用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
}
现在,您的骡子流中将有一个名为 variableName 的 flowVar。
呵呵。