gpt4 book ai didi

java - 如何将 Rserve 的结果返回到 Apache Camel 的变量中

转载 作者:行者123 更新时间:2023-12-02 11:45:01 37 4
gpt4 key购买 nike

由于 Apache CamelRcode 组件没有太多可用文档,我不确定如何从简单的 R 获取输出code> 我正在通过 Rcode 运行的代码片段。

在我的RouteBuilder中,我有以下代码:

from("activiti:testCamelTask:sendMsgToCamel",  "direct://rcode_source")
.setBody(simple(rSourceCode))
.to("rcode://localhost:6311/parse_and_eval?bufferSize=4194304")
.end();

其中 rSourceCode 包含我的 R 代码,即:

c <-4;
print(c);

代码运行正确,我可以在 Rserve 控制台中看到输出。

我想要将变量c的值返回到变量中的java代码。如何做到这一点?

最佳答案

我发现使用 Apache Camel 将结果发送到其他组件(可能在同一程序中)更为正常。但您也可以存储数据,例如通过Bean :

public class RserveCamel {
public static class StoringBean {
private REXP payload;
public REXP getPayload() {
return payload;
}
public void setPayload(REXP payload) {
this.payload = payload;
}
}
public static void main(String args[]) throws Exception {
StoringBean storingBean = new StoringBean();

CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:rcode")
.to("rcode:localhost:6311/eval?bufferSize=4194304")
.to("log:test?showBody=true&showHeaders=false")
.bean(storingBean, "setPayload");
}
});
ProducerTemplate producerTemplate = context.createProducerTemplate();
context.start();
producerTemplate.sendBody("direct:rcode", "c <- 4; print(c);");
context.stop();
System.out.println(storingBean.getPayload().asString());
}
}

关于java - 如何将 Rserve 的结果返回到 Apache Camel 的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48279401/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com