Как получить протокол, используемый конечной точкой Apache Camel

Я хочу разработать общий java-компонент, который будет включен во все мои верблюжьи маршруты (для целей персонализированной регистрации). Маршрут вызовет мою java-функцию в процессоре и передаст ей объект обмена (и другие вещи, если необходимо).

Как определить тип первой конечной точки, которую прослушивает маршрут? это может быть ftp, http, jms и т. д., и соответствующая информация, которую я хотел бы записать, находится в разных заголовках в соответствии с протоколом конечной точки, например "CamelFileName" для ftp.

У меня есть обходной тест, существует ли заголовок «CamelFilename», тогда я знаю, что конечная точка слушает ftp-сервер, или я мог бы проанализировать endpointURI, но есть ли более надежная / засеянная функция, чтобы получить это?


person Loko    schedule 23.02.2017    source источник


Ответы (1)


Вы можете получить маршрут from на бирже, используя getFromEndpoint и getFromRouteId.

См. Документацию по Exchange javadoc: http://static.javadoc.io/org.apache.camel/camel-core/2.18.2/org/apache/camel/Exchange.html

person Claus Ibsen    schedule 23.02.2017
comment
Спасибо, Клаус. Как я уже сказал, я могу получить конечную точку, но затем не могу найти, какое из ее свойств даст мне протокол. getFromRouteId также возвращает строку с URI, вы имеете в виду, что мне нужно искать в ней подстроки? Нет более точного свойства или функции для получения этой информации? - person Loko; 24.02.2017
comment
С конечной точки вы можете получить URL-адрес, и там вы можете узнать протокол - person Claus Ibsen; 24.02.2017
comment
Но именно об этом я и говорил в своем первом сообщении. Я могу это сделать, но я готов, если есть более надежный способ сделать это с истинной функцией свойства. - person Loko; 24.02.2017