Пусть Apache Camel регистрирует вызываемый URL-адрес

#logging #apache-camel

#ведение журнала #apache-camel

Вопрос:

У меня есть маршрут, который сводится к следующему:

 from("direct:"   routeId)
        .routeId(routeId)
        .setHeader(Exchange.HTTP_PATH, simple("${header.path}")).removeHeader("path")
        .setHeader(Exchange.HTTP_QUERY, simple("${header.queryString}")).removeHeader("queryString")
        .toD(COMPONENT_NAME   "://"   myEndpoint   "?"   camelQueryParams)
  

Я хотел бы зарегистрировать URL-адрес и, желательно, заголовки, которые toD заканчивает отправкой. Если я отправлю обмен в компонент ведения журнала, например

 .to("log:DEBUG?showBody=trueamp;showHeaders=true")
  

это просто завершает регистрацию exchange, и я не получаю URL, который был вызван.
Любые советы о том, как записать URL-адрес из toD?

Ответ №1:

Установите заголовок перед отправкой сообщения:

        .setHeader("URL", simple(COMPONENT_NAME   "://"   myEndpoint   "?"   camelQueryParams))
       .to("log:DEBUG?showBody=trueamp;showHeaders=true")
       .toD(COMPONENT_NAME   "://"   myEndpoint   "?"   camelQueryParams)