Вопрос

При использовании exec Компонент можно указать Args Inline, а не на необходимости установить их в ExecBinding.EXEC_COMMAND_ARGS?

Например, у меня есть этот маршрут:

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}")

Однако я бы подумал, что могу использовать простой язык выражения, чтобы упростить его так:

from("seda:getPolicyListStart")
.to("exec:some_command?useStderrOnEmptyStdout=true&args=${body.client} ${body.sort}")
.convertBodyTo(String.class)
.log("Executed OS cmd and received: ${body}")

Подобно тому, как вы можете использовать язык файла (подмножество простых) при использовании файлового компонента.

Является ли это возможным? Если нет, может быть упрощен первым примером?

ОБНОВИТЬ решение] :

    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);

Спасибо.

Это было полезно?

Решение

Ответ находится в шаблонах EIP. Вам необходимо использовать динамический список динамического списка получателей, когда вы вычислите пункт назначения конечного точка во время выполнения.

http://camel.apache.org/recipient-List.html.

Список получателей принимает выражение, которое означает, что вы можете использовать простой язык для создания параметров во время выполнения

Другие советы

Это взяло меня гораздо дольше, чтобы понять, чем он должен был сделать, поэтому для других, которые наткнулись здесь и запутались.

Весной XML вышеуказанный выглядит

<recipientList>
   <simple>exec:/usr/bin/php?args=yii individual-participant-report/runreport ${body[assessment_id]} ${body[scope_id]} ${body[participation_id]} ${body[participation_email]}&amp;workingDir={{reporting.folder}}</simple>
</recipientList>

В этом примере я создаю динамический запрос для запуска некоторых PHP (в частности, команда Yii 2), которая заполняется через переменные в теле HASHMAP / $, которое было создано из запроса SQL ранее в маршруте.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top