Как вы упомянули, вы можете использовать конструктор (или сеттеры или любые другие инструменты Java / Framework), если параметры статичны с точки зрения верблюда .
Параметры настраиваются в приложении, но после запуска приложения они больше не изменяются. Таким образом, каждое сообщение, обработанное маршрутом Camel, использует одно и то же значение.
В отличие от этого, когда параметры являются динамическими, то есть они могут изменяться для каждого обработанного сообщения, вы можете использовать динамическую конечную точку toD()
Camel. Эти адреса конечных точек могут содержать выражения, которые вычисляются во время выполнения. Например маршрут
from("direct:start")
.toD("${header.foo}");
отправляет сообщения в динамическую конечную точку и получает значение из заголовка сообщения с именем foo
.
Или использовать ваш пример
.toD("cxf:bean:inventoryEndpoint?dataFormat=${header.dataFormat}");
Таким образом, вы можете установить формат данных для каждого сообщения индивидуально через заголовок.
Подробнее о динамических конечных точках можно узнать на на этой странице документации Camel