gpt4 book ai didi

java - 在 Camel route ,使用 exec 组件使用 grep 进行 curl ,但使用 ${HOSTNAME} 进行 grep 无法正常工作

转载 作者:行者123 更新时间:2023-11-30 10:08:23 29 4
gpt4 key购买 nike

在 Camel route ,我正在使用 exec 组件通过 grep 进行 curl ,但使用 ${HOSTNAME} 的 grep 无法正常工作,下面是我的 Camel 路线。请在这方面寻求帮助。

@Component
public class VideoFilesOperationRoute extends RouteBuilder {

@Value("${scheduler.cronExpression}")
private String cron;

@Override
public void configure() throws Exception {

from("quartz2://videoFilesOperations/everydayMidnight?cron=" + cron)
.to("exec:curl?args= --silent http://localhost:4040/ | grep ${HOSTNAME}&useStderrOnEmptyStdout=true")
.to("bean:videoFilesOperationImpl?method=videoFilesOperation");

}
}

尝试了下面的解决方案,但仍然是同样的问题:

//Tried this first
List<String> args = new ArrayList<>();
args.add("-c");
args.add("curl --silent http://localhost:4040/ | grep ${HOSTNAME}");
from("quartz2://videoFilesOperations/everydayMidnight?cron=" + cron)
.setHeader(ExecBinding.EXEC_COMMAND_ARGS, constant(args))
.to("exec:/bin/sh")
.to("bean:videoFilesOperationImpl?method=videoFilesOperation");


//Tried this next
from("quartz2://videoFilesOperations/everydayMidnight?cron=" + cron)
.to("exec:scripts/curl.sh")
.to("bean:videoFilesOperationImpl?method=videoFilesOperation");

最佳答案

问题是 camel-exec 命令参数是用空格分隔的。因此,您尝试将输出从 curl 传输到 grep 是行不通的。

尝试这样的事情:

@Override
public void configure() throws Exception {
List<String> args = new ArrayList<>();
args.add("-c");
args.add("curl --silent http://localhost:4040/ | grep ${HOSTNAME}");

from("quartz2://videoFilesOperations/everydayMidnight?cron=" + cron)
.setHeader(ExecBinding.EXEC_COMMAND_ARGS, constant(args))
.to("exec:/bin/sh");
}

或者您可以将 curl 和 grep 命令包装在一个 shell 脚本中,然后让 camel-exec 调用它。

关于java - 在 Camel route ,使用 exec 组件使用 grep 进行 curl ,但使用 ${HOSTNAME} 进行 grep 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53755741/

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