264.27. 사용자 정의 함수 사용
Camel 2.14.1로 사용 가능
속성 구성 요소를 사용하면 속성 자리 표시자의 구문 분석 중에 사용할 수 있는 타사 함수를 플러그인할 수 있습니다. 그런 다음 이러한 함수는 사용자 지정 논리를 수행하여 데이터베이스 검색, 사용자 지정 계산 또는 whatnot와 같은 자리 표시자를 해결할 수 있습니다. 함수의 이름은 자리 표시자에 사용된 접두사가 됩니다. 이는 아래 예제 코드에서 가장 잘 설명되어 있습니다.
<bean id="beerFunction" class="MyBeerFunction"/> <camelContext xmlns="http://camel.apache.org/schema/blueprint"> <propertyPlaceholder id="properties"> <propertiesFunction ref="beerFunction"/> </propertyPlaceholder> <route> <from uri="direct:start"/> <to uri="{`{beer:FOO}`}"/> <to uri="{`{beer:BAR}`}"/> </route> </camelContext>
camel 2.19.0 에서 location 속성 ( propertyPlaceholder tag의 경우)은 더 의무적이지 않습니다.
여기에서는 < propertyPlaceholder
>를 정의한 Camel XML 경로가 있습니다. 이 경로는 sum id(예: beer functions )를 참조하는 사용자 지정 함수
를 사용합니다. beer 함수는 "beer"
를 이름으로 사용하므로 자리 표시자 구문은 beer:value
로 시작하여 beer 함수를 트리거할 수 있습니다.
함수의 구현은 다음과 같이 두 가지 메서드일 뿐입니다.
public static final class MyBeerFunction implements PropertiesFunction { @Override public String getName() { return "beer"; } @Override public String apply(String remainder) { return "mock:" + remainder.toLowerCase(); } }
이 함수는 org.apache.camel.component.properties.PropertiesFunction
인터페이스를 구현해야 합니다. getName
메서드는 함수의 이름입니다(예: beer). apply
메서드는 사용자 지정 논리를 구현하는 위치입니다. 단위 테스트에서 샘플 코드는 mock 엔드포인트를 참조하는 값을 반환합니다.
Java 코드에서 사용자 지정 기능을 등록하려면 다음과 같습니다.
PropertiesComponent pc = context.getComponent("properties", PropertiesComponent.class); pc.addFunction(new MyBeerFunction());