4.4. Camel K 통합 종속 항목 구성

Camel K는 통합 코드를 실행하는 데 필요한 광범위한 종속성을 자동으로 해결합니다. 그러나 kamel run --dependency 옵션을 사용하여 런타임에 명령줄에 종속 항목을 명시적으로 추가할 수 있습니다.

다음 예제 통합에서는 Camel K 자동 종속성 확인을 사용합니다.

...
  from("imap://admin@myserver.com")
    .to("seda:output")
...

이 통합에는 imap: 접두사로 시작하는 끝점이 있으므로 Camel K는 필수 종속성 목록에 camel-mail 구성 요소를 자동으로 추가할 수 있습니다. seda: 엔드포인트는 모든 통합에 자동으로 추가되는 camel-core 에 속하므로 Camel K는 이 구성 요소에 대한 추가 종속 항목은 추가되지 않습니다.

Camel K 자동 종속성 확인은 런타임에 사용자에게 투명하게 제공됩니다. 이는 개발 루프를 종료하지 않고 필요한 모든 구성 요소를 빠르게 추가할 수 있기 때문에 개발 모드에서 매우 유용합니다.

kamel run --dependency 또는 -d 옵션을 사용하여 명시적으로 종속성을 추가할 수 있습니다. Camel 카탈로그에 포함되지 않은 종속성을 지정하려면 이 값을 사용해야 할 수 있습니다. 명령줄에서 여러 종속성을 지정할 수 있습니다.

사전 요구 사항

절차

  • kamel run 명령을 입력하고 -d 옵션을 사용하여 종속성을 지정합니다. 예를 들면 다음과 같습니다.

    kamel run -d mvn:com.google.guava:guava:26.0-jre -d camel-mina2 Integration.java
참고

종속성 특성을 비활성화하여 자동 종속성 확인을 비활성화할 수 있습니다. -trait dependencies.enabled=false. 그러나 대부분의 경우 권장되지 않습니다.

종속성 유형

kamel run 명령의 -d 플래그는 유연하며 여러 종류의 종속성을 지원합니다.

Camel 종속 항목은 다음과 같이 -d 플래그를 사용하여 직접 추가할 수 있습니다.

kamel run -d camel:http Integration.java

이 경우 올바른 버전으로 종속성이 추가됩니다. Camel 종속성을 지정하는 표준 표기법은 camel:xxx 이지만 kamel 은 사용성을 위해 camel-xxx 도 허용합니다.

-d 플래그, mvn 접두사 및 maven 좌표를 사용하여 외부 종속성 을 추가할 수 있습니다.

kamel run -d mvn:com.google.guava:guava:26.0-jre Integration.java

종속 항목이 프라이빗 리포지토리에 속하는 경우 이 리포지토리를 정의해야 합니다. Configure maven 를 참조하십시오.

-d 플래그와 file:// 접두사를 사용하여 로컬 종속성 을 추가할 수 있습니다.

kamel run -d file://path/to/integration-dep.jar Integration.java

그런 다음 integration-dep.jar 의 내용은 사용할 수 있도록 통합에서 액세스할 수 있습니다.

실행 중인 컨테이너에 마운트할 데이터 파일을 지정할 수도 있습니다.

kamel run -d file://path/to/data.csv:path/in/container/data.csv Integration.java

디렉터리를 지정하는 작업은 재귀적으로 수행됩니다.

이 기능은 정확하게 설정된 이미지 레지스트리에 의존합니다.

Jitpack 종속 항목

종속성이 maven 리포지토리에 게시되지 않은 경우 런타임 통합 환경에 사용자 지정 종속성을 제공하는 방법으로 Jitpack 을 찾을 수 있습니다. 경우에 따라 경로 정의뿐만 아니라 통합 동작을 정의하는 동안 사용해야 하는 일부 도우미 클래스 또는 기타 클래스를 포함하는 것이 유용할 수 있습니다. Jitpack 을 사용하면 원격 리포지토리에서 호스팅되는 java 프로젝트를 실행하면서 생성된 패키지를 통합 종속성으로 사용할 수 있습니다.

사용법은 maven 종속성에 대해 위에서 정의한 것과 동일합니다. -d 플래그를 사용하여 추가할 수 있지만, 이번에는 사용 중인 프로젝트 리포지토리(즉, github)에 대해 예상대로 접두사를 정의해야 합니다. repository-kind:user/repo/version 형식으로 제공해야 합니다. 예를 들어 다음을 실행하여 Apache Commons CSV 종속성을 제공할 수 있습니다.

kamel run -d github:apache/commons-csv/1.1 Integration.java

가장 중요한 공용 코드 리포지토리를 지원합니다.

github:user/repo/version
gitlab:user/repo/version
bitbucket:user/repo/version
gitee:user/repo/version
azure:user/repo/version

기본 분기를 사용하려는 경우 버전을 생략할 수 있습니다. 그렇지 않으면 프로젝트 리포지터리에 사용된 분기 또는 태그를 나타냅니다.

동적 URI

Camel K가 모든 종속 항목을 항상 검색하는 것은 아닙니다. URI를 동적으로 생성할 때 Camel K에 -d 매개변수를 사용하여 로드할 구성 요소를 지시해야 합니다. 다음 코드 조각에서는 이를 보여줍니다.

DynamicURI.java

String myTopic = "purchases"
from("kafka:" + myTopic + "? ... ")
    .to(...)
...

여기서 URI는 런타임 시 확인된 일부 변수에 의해 동적으로 생성됩니다. 이와 같은 경우 통합에 로드할 구성 요소와 관련된 종속성을 지정해야 합니다.In cases like this, you must specify the component and the related dependency to load into the Integration.