热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:在驼峰路由使用exec组件使用grep进行curl但使用${HOSTNAME}无效的grep

篇首语:本文由编程笔记#小编为大家整理,主要介绍了在驼峰路由使用exec组件使用grep进行curl但使用${HOSTNAME}无效的grep相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了在驼峰路由使用exec组件使用grep进行curl但使用$ {HOSTNAME}无效的grep相关的知识,希望对你有一定的参考价值。



在驼峰路线中,我使用exec组件使用grep进行curl但使用$ {HOSTNAME}无效的grep,下面是我的驼峰路径。请在此方面需要帮助。

@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 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 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调用它。



推荐阅读
author-avatar
雅芳07866
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有