Lors de l'utilisation du composant exec
, est-il possible de spécifier des arguments en ligne plutôt que de les définir dans le ExecBinding.EXEC_COMMAND_ARGS
?Apache Camel exec avec arguments
Par exemple, j'ai cette route:
from("seda:getPolicyListStart")
.process(new Processor() {
public void process(Exchange e) {
ClientRequestBean requestBean = (ClientRequestBean)e.getIn().getBody();
List<String> args = new ArrayList<String>();
args.add(requestBean.getClient());
args.add(requestBean.getSort());
e.getOut().setHeader(ExecBinding.EXEC_COMMAND_ARGS, args);
}
})
.to("exec:some_command?useStderrOnEmptyStdout=true")
.convertBodyTo(String.class)
.log("Executed OS cmd and received: ${body}")
Cependant, j'aurais pensé que je pouvais utiliser le langage simple d'expression pour simplifier comme ceci:
from("seda:getPolicyListStart")
.to("exec:some_command?useStderrOnEmptyStdout=true&args=${body.client} ${body.sort}")
.convertBodyTo(String.class)
.log("Executed OS cmd and received: ${body}")
similaires à la façon dont vous pouvez utiliser File Language (un sous-ensemble de Simple) lorsque vous utilisez le composant de fichier.
Est-ce possible? Si non, le premier exemple peut-il être simplifié?
MISE À JOUR [solution]:
from(requestNode)
.routeId(routeId)
.recipientList(simple("exec:"+osCmd+"?useStderrOnEmptyStdout=true&args=${body.client}"))
.convertBodyTo(String.class)
.log("Executed OS cmd and received: ${body}")
.to(responseNode);
Merci.
Merci. Je vais vérifier ça. – Damo
Génial. Cela fonctionne un régal. J'ai mis à jour ma question avec la solution. – Damo