我正在使用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());
提前致谢:)
答案 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。