3.3. Camel 경로 생성 및 실행
init 명령을 사용하여 새 기본 경로를 생성할 수 있습니다. 예를 들어 XML 경로를 생성하려면 다음 명령을 실행합니다.
camel init cheese.xml
camel init cheese.xml
이렇게 하면 샘플 경로를 사용하여 현재 디렉토리에 있는 파일 encode .xml 이 생성됩니다.
파일을 실행하려면 다음을 실행합니다.
camel run cheese.xml
camel run cheese.xml
YAML, XML, Java, Groovy와 같이 Camel에서 지원되는 모든 DSL 을 생성하고 실행할 수 있습니다.
새 .java 경로를 생성하려면 다음을 실행합니다.
camel init foo.java
camel init foo.java
init 명령을 사용하면 기본적으로 Camel이 현재 디렉터리에 파일을 생성합니다. 그러나 --directory 옵션을 사용하여 지정된 디렉터리에 파일을 생성할 수 있습니다. 예를 들어 foobar 라는 폴더에 생성하려면 다음을 실행합니다.
camel init foo.java --directory=foobar
camel init foo.java --directory=foobar
directory 옵션을 사용하면 이미 존재하는 경우 Camel은 이 디렉터리를 자동으로 정리합니다.
3.3.1. 여러 파일에서 경로 실행 링크 복사링크가 클립보드에 복사되었습니다!
두 개 이상의 파일의 경로를 실행하여 두 개의 YAML 파일을 실행할 수 있습니다.
camel run one.yaml two.yaml
camel run one.yaml two.yaml
yaml 및 Java와 같은 두 개의 다른 파일의 경로를 실행할 수 있습니다.
camel run one.yaml hello.java
camel run one.yaml hello.java
와일드카드(예: *)를 사용하여 모든 yaml 파일 실행과 같은 여러 파일을 일치시킬 수 있습니다.
camel run *.yaml
camel run *.yaml
foo* 로 시작하는 모든 파일을 실행할 수 있습니다.
camel run foo*
camel run foo*
디렉터리의 모든 파일을 실행하려면 다음을 사용합니다.
camel run *
camel run *
실행 목표는 또한 application. 와 같은 속성인 파일을 감지할 수 있습니다.
properties
3.3.2. 입력 매개변수에서 경로 실행 링크 복사링크가 클립보드에 복사되었습니다!
매우 작은 Java 경로의 경우 아래와 같이 CLI 인수로 경로를 제공할 수 있습니다.
camel run --code='from("kamelet:beer-source").to("log:beer")'
camel run --code='from("kamelet:beer-source").to("log:beer")'
CLI 인수는 파일보다 사용하기가 약간 복잡하기 때문에 이는 매우 제한적입니다. input 매개변수에서 경로를 실행하는 경우 다음 사항에 유의하십시오.
- Java DSL 코드만 지원됩니다.
- 코드는 작은 따옴표로 래핑되므로 Java DSL에서 double quote를 사용할 수 있습니다.
- 코드는 터미널 및 JBang에서 제공할 수 있는 리터럴 값으로 제한됩니다.
-
모든 경로는 단일
--code매개변수로 정의해야 합니다.
--code 를 사용하는 것은 매우 빠르고 작은 시제품에만 사용할 수 있습니다.
3.3.3. 라이브 다시 로드가 있는 dev 모드 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 --dev 옵션을 사용하여 소스 파일이 업데이트(saved)될 때 경로의 실시간 다시 로드와 함께 제공되는 dev 모드를 활성화할 수 있습니다.
camel run foo.yaml --dev
camel run foo.yaml --dev
그런 다음 Camel 통합이 실행 중인 동안 YAML 경로를 업데이트하고 저장할 때 업데이트할 수 있습니다. 이 옵션은 java 를 포함한 모든 DLS에서 작동합니다. 예를 들면 다음과 같습니다.
camel run hello.java --dev
camel run hello.java --dev
실시간 재로드 옵션은 개발 목적으로만 사용되며 JVM 클래스 로드 문제와 같은 문제를 다시 로드하는 데 문제가 발생하면 통합을 다시 시작해야 할 수 있습니다.
3.3.4. 개발자 콘솔 링크 복사링크가 클립보드에 복사되었습니다!
개발자에게 다양한 정보를 제공하는 개발자 콘솔을 활성화할 수 있습니다. 개발자 콘솔을 활성화하려면 다음을 실행합니다.
camel run hello.java --console
camel run hello.java --console
그런 다음 웹 브라우저에서 http://localhost:8080/q/dev (기본적으로)에 액세스할 수 있습니다. Camel이 시작될 때 링크도 로그에 표시됩니다.
콘솔은 메시지를 처리하는 데 가장 오랜 시간이 걸리는 주요 경로 보고와 같이 실행 중인 Camel 통합에 대한 통찰력을 제공할 수 있습니다. 그런 다음 이러한 경로에서 가장 느린 개별 EIP를 식별할 수 있습니다.
개발자 콘솔은 타사 툴링에서 정보를 캡처하는 데 사용할 수 있는 JSON 형식으로 데이터를 출력할 수도 있습니다. 예를 들어 curl을 통해 상위 경로를 출력하려면 다음을 실행합니다.
curl -s -H "Accept: application/json" http://0.0.0.0:8080/q/dev/top/
curl -s -H "Accept: application/json" http://0.0.0.0:8080/q/dev/top/
jq 가 설치되어 있으면 다음과 같이 JSON 데이터를 포맷하고 출력할 수 있습니다.
curl -s -H "Accept: application/json" http://0.0.0.0:8080/q/dev/top/ | jq
curl -s -H "Accept: application/json" http://0.0.0.0:8080/q/dev/top/ | jq
3.3.5. 프로필 사용 링크 복사링크가 클립보드에 복사되었습니다!
Camel JBang의 프로필 은 Camel JBang으로 자동으로 로드되는 구성을 참조하는 이름(id)입니다. 기본 프로파일의 이름은 Camel JBang 자동 로드 (있는 경우)를 제공하기 위한 (스마트 기본) 애플리케이션의 이름이 지정됩니다. 즉, 동일한 이름의 특정 속성 파일과 일치하는 프로필을 만들 수 있습니다.
application.properties
예를 들어 local 이라는 프로필로 실행하면 Camel JBang이 application.properties 대신 local.properties 를 로드합니다. 프로필을 사용하려면 다음과 같이 명령줄 옵션 --profile 을 지정합니다.
camel run hello.java --profile=local
camel run hello.java --profile=local
한 번에 하나의 프로필 이름만 지정할 수 있습니다(예: --profile=local,two 는 유효하지 않습니다.
속성 파일에서 Camel Main 의 모든 구성을 구성할 수 있습니다. 로그 마스킹을 끄고 활성화하려면 다음 명령을 실행합니다.
camel.main.streamCaching=false camel.main.logMask=true
camel.main.streamCaching=false
camel.main.logMask=true
브로커에 URL을 선언하도록 camel-kafka 와 같은 Camel 구성 요소를 구성할 수도 있습니다.
camel.component.kafka.brokers=broker1:9092,broker2:9092,broker3:9092
camel.component.kafka.brokers=broker1:9092,broker2:9092,broker3:9092
camel.jbang 으로 시작하는 키는 Camel JBang에서 내부적으로 사용하는 예약 키이며 Camel JBang 명령에 대한 인수를 사전 구성할 수 있습니다.
3.3.6. 인터넷을 통해 JAR 다운로드 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Camel JBang은 Camel을 실행하는 데 필요한 종속성을 자동으로 해결합니다. 이 작업은 JBang 및 Camel에서 각각 수행합니다. Camel 자체는 현재 classpath에서 사용할 수 없는 JARs에 대한 필요성이 있는지 런타임 시 감지한 다음 JAR을 자동으로 다운로드할 수 있습니다.
Camel은 다음 순서로 이러한 JAR를 다운로드합니다.
-
~/.m2/repository의 로컬 디스크에서 - Maven Central의 인터넷에서
- 사용자 지정 타사 Maven 리포지토리의 인터넷에서
-
~/.m2/settings.xml의 활성 프로필에 있는 모든 리포지토리 또는--maven-settings옵션을 사용하여 지정된 설정 파일에서 찾을 수 있습니다.
Camel JBang이 인터넷을 통해 다운로드하지 않도록 하려면 다음과 같이 --download 옵션을 사용하여 이 기능을 해제할 수 있습니다.
camel run foo.java --download=false
camel run foo.java --download=false
3.3.7. 사용자 정의 JAR 추가 링크 복사링크가 클립보드에 복사되었습니다!
Camel JBang은 자체 릴리스에서 Camel 구성 요소, 언어 및 데이터 형식의 종속성을 자동으로 감지합니다. 즉, 사용할 JAR를 지정할 필요가 없습니다. 그러나 타사 사용자 정의 JAR를 추가해야 하는 경우 다음과 같은 Maven GAV 구문에서 --deps 를 CLI 인수로 지정할 수 있습니다(예:groupId:artifactId:version).
camel run foo.java --deps=com.foo:acme:1.0
camel run foo.java --deps=com.foo:acme:1.0
To add a Camel dependency explicitly you can use a shorthand syntax (starting with `camel:` or `camel-`):
To add a Camel dependency explicitly you can use a shorthand syntax (starting with `camel:` or `camel-`):
camel run foo.java --deps=camel-saxon
camel run foo.java --deps=camel-saxon
다음과 같이 쉼표로 구분된 여러 종속성을 지정할 수 있습니다.
camel run foo.java --deps=camel-saxon,com.foo:acme:1.0
camel run foo.java --deps=camel-saxon,com.foo:acme:1.0
3.3.8. 타사 Maven 리포지토리 사용 링크 복사링크가 클립보드에 복사되었습니다!
Camel JBang은 먼저 로컬 리포지토리에서 다운로드한 다음 온라인 Maven Central 리포지토리에서 다운로드합니다. 타사 Maven 리포지토리에서 다운로드하려면 이를 CLI 인수 또는 application.properties 파일에 지정해야 합니다.
camel run foo.java --repos=https://packages.atlassian.com/maven-external
camel run foo.java --repos=https://packages.atlassian.com/maven-external
여러 리포지토리를 쉼표로 구분하여 지정할 수 있습니다.
3rd-party Maven 리포지토리의 구성은 다음과 같이 키가 camel.jbang.repos 를 사용하여 application.properties 파일에 구성됩니다.
camel.jbang.repos=https://packages.atlassian.com/maven-external
camel.jbang.repos=https://packages.atlassian.com/maven-external
Camel 경로를 실행하면 application.properties 가 자동으로 로드됩니다.
camel run foo.java
camel run foo.java
사용할 속성 파일을 명시적으로 지정할 수도 있습니다.
camel run foo.java application.properties
camel run foo.java application.properties
또는 이를 프로필로 지정할 수 있습니다.
camel run foo.java --profile=application
camel run foo.java --profile=application
여기서 profile id는 속성 파일의 이름입니다.
3.3.9. Maven 사용 구성 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 기존 ~/.m2/settings.xml 파일이 로드되므로 Maven 확인 프로세스의 동작을 변경할 수 있습니다. Maven 설정 파일은 Maven 미러, 인증 정보 구성(옵션으로 암호화) 또는 활성 프로필 및 추가 리포지토리에 대한 정보를 제공합니다.
Maven 리포지토리는 인증 및 Maven-way를 사용하여 인증 정보를 구성하는 데 < server> 요소를 통해 이루어집니다.
<server>
<id>external-repository</id>
<username>camel</username>
<password>{SSVqy/PexxQHvubrWhdguYuG7HnTvHlaNr6g3dJn7nk=}</password>
</server>
<server>
<id>external-repository</id>
<username>camel</username>
<password>{SSVqy/PexxQHvubrWhdguYuG7HnTvHlaNr6g3dJn7nk=}</password>
</server>
일반 텍스트를 사용하여 암호를 지정할 수 있지만 먼저 maven 마스터 암호를 구성한 다음 이를 사용하여 리포지토리 암호를 구성하는 것이 좋습니다.
mvn -emp
$ mvn -emp
Master password: camel
{hqXUuec2RowH8dA8vdqkF6jn4NU9ybOsDjuTmWvYj4U=}
위의 암호는 다음과 같이 ~/.m2/settings-security.xml 파일에 추가해야 합니다.
<settingsSecurity>
<master>{hqXUuec2RowH8dA8vdqkF6jn4NU9ybOsDjuTmWvYj4U=}</master>
</settingsSecurity>
<settingsSecurity>
<master>{hqXUuec2RowH8dA8vdqkF6jn4NU9ybOsDjuTmWvYj4U=}</master>
</settingsSecurity>
그런 다음 일반 암호를 구성할 수 있습니다.
mvn -ep
$ mvn -ep
Password: camel
{SSVqy/PexxQHvubrWhdguYuG7HnTvHlaNr6g3dJn7nk=}
그런 다음 < server>/<password> 구성에서 이 암호를 사용할 수 있습니다.
기본적으로 Maven은 ~/.m2/settings-security.xml 파일에서 마스터 암호를 읽을 수 있지만 재정의할 수 있습니다. settings.xml 파일 자체의 위치는 다음과 같이 지정할 수 있습니다.
camel run foo.java --maven-settings=/path/to/settings.xml --maven-settings-security=/path/to/settings-security.xml
camel run foo.java --maven-settings=/path/to/settings.xml --maven-settings-security=/path/to/settings-security.xml
위치(~~. m2/settings.xml 라고도 함)를 가정하지 않고 Camel 애플리케이션을 실행하려면 다음 옵션을 사용하십시오.
camel run foo.java --maven-settings=false
camel run foo.java --maven-settings=false
3.3.10. GitHub에서 호스팅되는 경로 실행 링크 복사링크가 클립보드에 복사되었습니다!
Camels 리소스 로더를 사용하여 GitHub에서 호스팅되는 경로를 실행할 수 있습니다. 예를 들어 Camel K 예제 중 하나를 실행하려면 다음을 사용합니다.
camel run github:apache:camel-kamelets-examples:jbang/hello-java/Hey.java
camel run github:apache:camel-kamelets-examples:jbang/hello-java/Hey.java
GitHub의 https URL을 사용할 수도 있습니다. 예를 들어 웹 브라우저에서 예제를 검색한 다음 브라우저 창에서 URL을 복사하고 Camel JBang으로 예제를 실행할 수 있습니다.
camel run https://github.com/apache/camel-kamelets-examples/tree/main/jbang/hello-java
camel run https://github.com/apache/camel-kamelets-examples/tree/main/jbang/hello-java
와일드카드(예: \*)를 사용하여 모든 groovy 파일을 실행하는 등 여러 파일을 일치시킬 수도 있습니다.
camel run https://github.com/apache/camel-kamelets-examples/tree/main/jbang/languages/*.groovy
camel run https://github.com/apache/camel-kamelets-examples/tree/main/jbang/languages/*.groovy
또는 rou*로 시작하는 모든 파일을 실행할 수 있습니다.
camel run https://github.com/apache/camel-kamelets-examples/tree/main/jbang/languages/rou*
camel run https://github.com/apache/camel-kamelets-examples/tree/main/jbang/languages/rou*
3.3.10.1. GitHub gists에서 경로 실행 링크 복사링크가 클립보드에 복사되었습니다!
GitHub의 gists를 사용하면 쉽게 실행할 수 있는 소형 Camel 경로를 빠르게 공유할 수 있습니다. 예를 들어 gist를 실행하려면 다음을 사용합니다.
camel run https://gist.github.com/davsclaus/477ddff5cdeb1ae03619aa544ce47e92
camel run https://gist.github.com/davsclaus/477ddff5cdeb1ae03619aa544ce47e92
gist는 하나 이상의 파일을 포함할 수 있으며 Camel JBang은 모든 관련 파일을 수집하므로 gist는 여러 경로, 속성 파일 및 Java 빈을 포함할 수 있습니다.
3.3.11. GitHub에서 호스팅되는 경로 다운로드 링크 복사링크가 클립보드에 복사되었습니다!
Camel JBang을 사용하여 GitHub에서 로컬 디스크로 기존 예제를 다운로드하여 예제를 수정하고 로컬에서 실행할 수 있습니다. 예를 들어 다음 명령을 실행하여 종속성 삽입 예제를 다운로드할 수 있습니다.
camel init https://github.com/apache/camel-kamelets-examples/tree/main/jbang/dependency-injection
camel init https://github.com/apache/camel-kamelets-examples/tree/main/jbang/dependency-injection
그런 다음 파일(하위 폴더 아님)이 현재 디렉터리로 다운로드됩니다. 그런 다음 다음을 사용하여 로컬로 예제를 실행할 수 있습니다.
camel run *
camel run *
예를 들어 myproject 라는 폴더에 파일을 다운로드하려면 --directory 옵션을 사용하여 새 폴더에 파일을 다운로드할 수도 있습니다.
camel init https://github.com/apache/camel-kamelets-examples/tree/main/jbang/dependency-injection --directory=myproject
camel init https://github.com/apache/camel-kamelets-examples/tree/main/jbang/dependency-injection --directory=myproject
directory 옵션을 사용하는 경우 Camel은 이미 존재하는 경우 이 디렉터리를 자동으로 정리합니다.
dev 모드에서 예제를 실행하여 소스 코드 변경 시 핫 디플로이먼트할 수 있습니다.
camel run * --dev
camel run * --dev
예를 들어 Camel K 예제 중 하나를 다운로드하여 단일 파일을 다운로드할 수 있습니다.
camel init https://github.com/apache/camel-k-examples/blob/main/generic-examples/languages/simple.groovy
camel init https://github.com/apache/camel-k-examples/blob/main/generic-examples/languages/simple.groovy
이것은 실행할 수 있는 groovy 경로입니다 (또는 *).
camel run simple.groovy
camel run simple.groovy
3.3.11.1. 경로를 다운로드하면 GitHub gists 링크 복사링크가 클립보드에 복사되었습니다!
표시된 대로 gists에서 파일을 다운로드할 수 있습니다.
camel init https://gist.github.com/davsclaus/477ddff5cdeb1ae03619aa544ce47e92
camel init https://gist.github.com/davsclaus/477ddff5cdeb1ae03619aa544ce47e92
이렇게 하면 파일이 로컬 디스크에 다운로드되고 나중에 실행할 수 있습니다.
camel run *
camel run *
예를 들어 foobar 라는 폴더에 다운로드하려면 --directory 옵션을 사용하여 새 폴더에 다운로드할 수 있습니다.
camel init https://gist.github.com/davsclaus/477ddff5cdeb1ae03619aa544ce47e92 --directory=foobar
camel init https://gist.github.com/davsclaus/477ddff5cdeb1ae03619aa544ce47e92 --directory=foobar
directory 옵션을 사용하는 경우 Camel은 이미 존재하는 경우 이 디렉터리를 자동으로 정리합니다.
3.3.12. 특정 Camel 버전 사용 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 실행할 Camel 버전을 지정할 수 있습니다.
jbang run -Dcamel.jbang.version=3.20.1 camel@apache/camel [command]
jbang run -Dcamel.jbang.version=3.20.1 camel@apache/camel [command]
이전 버전의 Camel은 Camel JBang 최신 버전으로도 작동하지 않을 수 있습니다. Camel 3.18부터 시작하는 버전을 사용하는 것이 좋습니다.
다음과 같은 SNAPSHOT을 사용하여 최신 개발을 시도 할 수도 있습니다.
jbang run --fresh -Dcamel.jbang.version=3.20.1-SNAPSHOT camel@apache/camel [command]
jbang run --fresh -Dcamel.jbang.version=3.20.1-SNAPSHOT camel@apache/camel [command]
3.3.13. Camel K 통합 또는 바인딩 실행 링크 복사링크가 클립보드에 복사되었습니다!
Camel은 CRD 형식(Kubernetes Custom Resource Definitions)에 있는 Camel K 통합 및 바인딩 파일을 실행할 수 있도록 지원합니다. 예를 들어, idea .yaml이라는 kamelet 바인딩 파일을 실행할 수 있습니다.
camel run joke.yaml
camel run joke.yaml
3.3.14. 클립보드에서 실행 링크 복사링크가 클립보드에 복사되었습니다!
OS 클립보드에서 Camel 경로를 직접 실행할 수 있습니다. 이렇게 하면 일부 코드를 복사한 다음 경로를 빠르게 실행할 수 있습니다.
camel run clipboard.<extension>
camel run clipboard.<extension>
다음은 java,xml 또는 yaml 과 같은 클립보드 콘텐츠 유형입니다. <extension>
예를 들어 이를 클립보드에 복사한 다음 경로를 실행할 수 있습니다.
<route> <from uri="timer:foo"/> <log message="Hello World"/> </route>
<route>
<from uri="timer:foo"/>
<log message="Hello World"/>
</route>
camel run clipboard.xml
camel run clipboard.xml
3.3.15. 로컬 Camel 통합 제어 링크 복사링크가 클립보드에 복사되었습니다!
현재 실행 중인 Camel 통합을 나열하려면 ps 옵션을 사용합니다.
camel ps PID NAME READY STATUS AGE 61818 sample.camel.MyCamelApplica… 1/1 Running 26m38s 62506 test1 1/1 Running 4m34s
camel ps
PID NAME READY STATUS AGE
61818 sample.camel.MyCamelApplica… 1/1 Running 26m38s
62506 test1 1/1 Running 4m34s
통합의 PID, 이름 및 기간이 나열됩니다.
stop 명령을 사용하여 실행 중인 Camel 통합을 중지할 수 있습니다. 예를 들어 test1 을 중지하려면 다음을 실행합니다.
camel stop test1 Stopping running Camel integration (pid: 62506)
camel stop test1
Stopping running Camel integration (pid: 62506)
PID를 사용하여 통합을 중지할 수 있습니다.
camel stop 62506 Stopping running Camel integration (pid: 62506)
camel stop 62506
Stopping running Camel integration (pid: 62506)
stop 명령이 입력으로 시작하는 통합과 일치하므로 전체 이름을 입력할 필요가 없습니다. 예를 들어 t 로 시작하는 모든 통합을 중지하려면 camel stop t 를 입력할 수 있습니다.
모든 통합을 중지하려면 다음과 같이 --all 옵션을 사용합니다.
camel stop --all Stopping running Camel integration (pid: 61818) Stopping running Camel integration (pid: 62506)
camel stop --all
Stopping running Camel integration (pid: 61818)
Stopping running Camel integration (pid: 62506)
3.3.16. Spring Boot 및 Quarkus 통합 제어 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Camel JBang CLI는 CLI를 사용하여 실행 중인 Camel 통합만 제어합니다(예: camel run foo.java ).
CLI에서 Spring Boot 또는 Quarkus 애플리케이션을 제어하고 관리하려면 Camel CLI와 통합하기 위해 이러한 프로젝트에 종속성을 추가해야 합니다.
Spring Boot
Spring Boot 애플리케이션에서 다음 종속성을 추가합니다.
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cli-connector-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cli-connector-starter</artifactId>
</dependency>
Quarkus
Quarkus 애플리케이션에서 다음 종속성을 추가합니다.
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-cli-connector</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-cli-connector</artifactId>
</dependency>
3.3.17. Camel 통합의 상태 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
Camel JBang의 get 명령은 실행 중인 Camel 통합 중 하나 또는 전체에 대한 Camel 특정 상태를 가져오는 데 사용됩니다. 실행 중인 Camel 통합 상태를 표시하려면 다음을 실행합니다.
camel get PID NAME CAMEL PLATFORM READY STATUS AGE TOTAL FAILED INFLIGHT SINCE-LAST 61818 MyCamel 3.20.1-SNAPSHOT Spring Boot v2.7.3 1/1 Running 28m34s 854 0 0 0s/0s/- 63051 test1 3.20.1-SNAPSHOT JBang 1/1 Running 18s 14 0 0 0s/0s/- 63068 mygroovy 3.20.1-SNAPSHOT JBang 1/1 Running 5s 2 0 0 0s/0s/-
camel get
PID NAME CAMEL PLATFORM READY STATUS AGE TOTAL FAILED INFLIGHT SINCE-LAST
61818 MyCamel 3.20.1-SNAPSHOT Spring Boot v2.7.3 1/1 Running 28m34s 854 0 0 0s/0s/-
63051 test1 3.20.1-SNAPSHOT JBang 1/1 Running 18s 14 0 0 0s/0s/-
63068 mygroovy 3.20.1-SNAPSHOT JBang 1/1 Running 5s 2 0 0 0s/0s/-
camel get 명령은 camel get 통합 또는 명령을 입력하는 것과 동일한 기본 통합을 표시합니다.
camel get int
그러면 모든 Camel 통합에 대한 전체 정보가 표시됩니다. 여기에서 처리된 총 메시지 수를 확인할 수 있습니다. 이후 마지막 열은 3단계(시작/완료/실패)에 대해 마지막으로 처리된 메시지의 시간을 표시합니다.
0s/0s/- 값은 마지막 시작 및 완료 메시지가 0초 전에 발생했으며 아직 실패한 메시지가 없음을 의미합니다. 이 예에서 9s/9s/1h3m 은 마지막 시작 및 완료 메시지가 9초 전이며 마지막 실패는 1시간 3분 전입니다.
또한 camel get route 와 모든 로컬 Camel 통합에서 모든 경로의 상태를 확인할 수 있습니다.
camel get route PID NAME ID FROM STATUS AGE TOTAL FAILED INFLIGHT MEAN MIN MAX SINCE-LAST 61818 MyCamel hello timer://hello?period=2000 Running 29m2s 870 0 0 0 0 14 0s/0s/- 63051 test1 java timer://java?period=1000 Running 46s 46 0 0 0 0 9 0s/0s/- 63068 mygroovy groovy timer://groovy?period=1000 Running 34s 34 0 0 0 0 5 0s/0s/-
camel get route
PID NAME ID FROM STATUS AGE TOTAL FAILED INFLIGHT MEAN MIN MAX SINCE-LAST
61818 MyCamel hello timer://hello?period=2000 Running 29m2s 870 0 0 0 0 14 0s/0s/-
63051 test1 java timer://java?period=1000 Running 46s 46 0 0 0 0 9 0s/0s/-
63068 mygroovy groovy timer://groovy?period=1000 Running 34s 34 0 0 0 0 5 0s/0s/-
사용 가능한 모든 명령을 표시하려면 camel get --help 를 사용합니다.
3.3.17.1. Camel 통합의 최상위 상태 링크 복사링크가 클립보드에 복사되었습니다!
camel top 명령은 실행 중인 Camel 통합의 최고 사용률 통계(가장 낮은 힙 사용 메모리)를 얻는 데 사용됩니다.
camel top PID NAME JAVA CAMEL PLATFORM STATUS AGE HEAP NON-HEAP GC THREADS CLASSES 22104 chuck 11.0.13 3.20.1-SNAPSHOT JBang Running 2m10s 131/322/4294 MB 70/73 MB 17ms (6) 7/8 7456/7456 14242 MyCamel 11.0.13 3.20.1-SNAPSHOT Spring Boot v2.7.3 Running 33m40s 115/332/4294 MB 62/66 MB 37ms (6) 16/16 8428/8428 22116 bar 11.0.13 3.20.1-SNAPSHOT JBang Running 2m7s 33/268/4294 MB 54/58 MB 20ms (4) 7/8 6104/6104
camel top
PID NAME JAVA CAMEL PLATFORM STATUS AGE HEAP NON-HEAP GC THREADS CLASSES
22104 chuck 11.0.13 3.20.1-SNAPSHOT JBang Running 2m10s 131/322/4294 MB 70/73 MB 17ms (6) 7/8 7456/7456
14242 MyCamel 11.0.13 3.20.1-SNAPSHOT Spring Boot v2.7.3 Running 33m40s 115/332/4294 MB 62/66 MB 37ms (6) 16/16 8428/8428
22116 bar 11.0.13 3.20.1-SNAPSHOT JBang Running 2m7s 33/268/4294 MB 54/58 MB 20ms (4) 7/8 6104/6104
HEAP 열에는 힙 메모리(사용/커밋/max) 및 비-heap(사용/커밋)이 표시됩니다. GC 열에는 가비지 수집 정보(시간 및 총 실행)가 표시됩니다. CLASSES 열에는 클래스 수(로드/total)가 표시됩니다.
camel 최상위 경로와의 모든 로컬 Camel 통합에서 모든 경로(최고에서 가장 낮은 평균 처리 시간)를 수행하는 상위 경로 (가장 낮음에서 가장 낮은 평균 처리 시간)도 확인할 수 있습니다.
사용 가능한 모든 명령을 표시하려면 camel top --help 를 사용합니다.
3.3.17.2. 경로 시작 및 중지 링크 복사링크가 클립보드에 복사되었습니다!
camel cmd 는 실행 중인 Camel 통합에서 기타 명령을 실행하는 데 사용됩니다(예: 경로를 시작하고 중지하는 명령).
chuck 통합의 모든 경로를 중지하려면 다음을 실행합니다.
camel cmd stop-route chuck
camel cmd stop-route chuck
그런 다음 chuck 통합을 위해 상태가 Stopped 로 변경됩니다.
경로를 시작하려면 다음을 실행합니다.
camel cmd start-route chuck
camel cmd start-route chuck
모든 Camel 통합에서 모든 경로를 중지하려면 다음과 같이 --all 플래그를 사용합니다.
camel cmd stop-route --all
camel cmd stop-route --all
모든 경로를 시작하려면 다음을 사용합니다.
camel cmd start-route --all
camel cmd start-route --all
쉼표를 사용하여 ID로 하나 이상의 경로를 중지할 수 있습니다(예: cmd start-route --id=route1,hello ). 자세한 내용은 camel cmd start-route --help 명령을 사용하십시오.
3.3.17.3. 로깅 수준 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음을 통해 실행 중인 Camel 통합의 현재 로깅 수준을 확인할 수 있습니다.
camel cmd logger PID NAME AGE LOGGER LEVEL 90857 bar 2m48s root INFO 91103 foo 20s root INFO
camel cmd logger
PID NAME AGE LOGGER LEVEL
90857 bar 2m48s root INFO
91103 foo 20s root INFO
로깅 수준은 런타임에서 변경할 수 있습니다. 예를 들어 foo 의 수준을 DEBUG로 변경하려면 다음을 실행합니다.
camel cmd logger --level=DEBUG foo
camel cmd logger --level=DEBUG foo
--all 을 사용하여 실행 중인 모든 통합의 로깅 수준을 변경할 수 있습니다.
3.3.17.4. 서비스 나열 링크 복사링크가 클립보드에 복사되었습니다!
일부 Camel 통합에서는 TCP 프로토콜을 사용하여 클라이언트가 REST 또는 iPXE-WS 또는 소켓 수준 서비스와 같이 호출할 수 있는 서비스를 호스팅할 수 있습니다. 아래 예제와 같이 사용 가능한 서비스를 나열할 수 있습니다.
camel get service
PID NAME COMPONENT PROTOCOL SERVICE
1912 netty netty tcp tcp:localhost:4444
2023 greetings platform-http rest http://0.0.0.0:7777/camel/greetings/{name} (GET)
2023 greetings platform-http http http://0.0.0.0:7777/q/dev
camel get service
PID NAME COMPONENT PROTOCOL SERVICE
1912 netty netty tcp tcp:localhost:4444
2023 greetings platform-http rest http://0.0.0.0:7777/camel/greetings/{name} (GET)
2023 greetings platform-http http http://0.0.0.0:7777/q/dev
여기에서는 두 개의 Camel 통합을 확인할 수 있습니다. 순차 통합은 포트 4444에서 사용할 수 있는 TCP 서비스를 호스팅합니다. 다른 Camel 통합에서는 GET을 통해서만 호출할 수 있는 REST 서비스를 호스팅합니다. 세 번째 통합은 포함된 웹 콘솔( --console 옵션으로 시작)과 함께 제공됩니다.
서비스가 나열되려면 Camel 콘솔을 사용하여 서비스를 알릴 수 있어야 합니다.
3.3.17.5. 회로 차단기 나열 링크 복사링크가 클립보드에 복사되었습니다!
Camel 통합에서 링크https://camel.apache.org/components/3.20.x/eips/circuitBreaker-eip.html [Circuit Breaker]를 사용하는 경우 Camel JBang을 사용하여 차단기 상태를 출력할 수 있습니다.
camel get circuit-breaker PID NAME COMPONENT ROUTE ID STATE PENDING SUCCESS FAIL REJECT 56033 mycb resilience4j route1 circuitBreaker1 HALF_OPEN 5 2 3 0
camel get circuit-breaker
PID NAME COMPONENT ROUTE ID STATE PENDING SUCCESS FAIL REJECT
56033 mycb resilience4j route1 circuitBreaker1 HALF_OPEN 5 2 3 0
여기에서 회로 차단기가 절반 열려 있는 상태임을 확인할 수 있습니다. 즉, 차단기에서 실패가 드롭되기 시작하면 차단기에서 Close로 다시 전환하려는 상태입니다.
watch 옵션과 함께 명령을 실행하여 최신 상태 (예: watch camel get circuit-breaker )를 표시할 수 있습니다.
3.3.18. Jolokia 및 Hawtio 사용 링크 복사링크가 클립보드에 복사되었습니다!
웹 콘솔을 사용하면 실시간 성능 지표를 사용하여 Camel 경로를 시각화할 뿐만 아니라 모든 10.0.0.1 관리 정보와 같은 Camel 통합 실행을 검사할 수 있습니다.
Hawtio가 Camel 통합을 검사할 수 있도록 하려면 Jolokia JVM 에이전트를 실행 중인 통합에 설치해야 합니다. 다음과 같이 명시적으로 수행됩니다.
camel ps PID NAME READY STATUS AGE 61818 sample.camel.MyCamelApplica… 1/1 Running 26m38s 62506 test1.java 1/1 Running 4m34s
camel ps
PID NAME READY STATUS AGE
61818 sample.camel.MyCamelApplica… 1/1 Running 26m38s
62506 test1.java 1/1 Running 4m34s
PID를 사용하여 Jolokia를 연결할 수 있습니다.
camel jolokia 62506 Started Jolokia for PID 62506 http://127.0.0.1:8778/jolokia/
camel jolokia 62506
Started Jolokia for PID 62506
http://127.0.0.1:8778/jolokia/
PID를 사용하는 대신 이름 패턴으로 연결할 수도 있습니다. 이 예에서 두 Camel 통합에는 고유한 이름(foo 및 test1)이 있으며 다음과 같이 PID 없이 Jolokia를 연결할 수 있습니다.
camel jolokia te Started Jolokia for PID 62506 http://127.0.0.1:8778/jolokia/
camel jolokia te
Started Jolokia for PID 62506
http://127.0.0.1:8778/jolokia/
그런 다음 Camel JBang을 사용하여 Hawtio를 시작할 수 있습니다.
camel hawtio
camel hawtio
이렇게 하면 자동으로 다운로드하여 Hawtio를 시작한 다음 웹 브라우저에서 열립니다.
자세한 내용은 camel hawtio --help 를 참조하십시오.
웹 브라우저에서 Hawtio가 시작되면 Discover 탭을 클릭하여 사용 가능한 모든 로컬 Jolokia Agents를 나열합니다. camel jolokia PID 를 사용하여 여러 Camel 통합에 연결할 수 있으며 이 목록에서 로드할 항목을 선택할 수 있습니다.
녹색 표시 아이콘을 클릭하여 실행 중인 특정 Camel 통합에 연결합니다.
더 이상 필요하지 않은 경우 실행 중인 Camel 통합에서 Jolokia JVM 에이전트를 설치 제거할 수 있습니다.
camel jolokia 62506 --stop Stopped Jolokia for PID 62506
camel jolokia 62506 --stop
Stopped Jolokia for PID 62506
다음과 같이 하나의 명령만 사용하여 이 작업을 수행할 수도 있습니다.
camel hawtio test1
camel hawtio test1
여기서 test1 은 실행 중인 Camel 통합의 이름입니다. Hawtio( ctrl + c사용)를 중지하면 Camel은 Jolokia JVM 에이전트를 제거하려고 하지만, JVM이 종료되고 있는 경우 camel-jbang이 종료되는 것을 방지할 수 있으므로 Camel이 실행 중인 Camel 통합에 대한 JVM 프로세스 통신을 수행할 수 없기 때문입니다.
3.3.19. 파이프를 사용하여 터미널에서 스크립팅 링크 복사링크가 클립보드에 복사되었습니다!
파이프 및 필터를 사용하여 터미널 스크립팅에 사용되는 스크립트로 Camel JBang 파일을 실행할 수 있습니다.
스크립트가 실행될 때마다 Camel을 사용하여 JVM을 시작합니다. 메모리 사용량은 빠르거나 낮기 때문에 Camel JBang 터미널 스크립팅을 사용하여 여러 Camel 구성 요소 또는 Kamelets를 사용하여 분산된 IT 시스템에서 데이터를 더 쉽게 보내거나 받을 수 있습니다.
파일 상단에 다음 행을 추가해야 합니다(예: 아래의 upper.yaml 파일).
이를 스크립트로 실행하려면 실행 파일 권한을 설정해야 합니다.
chmod +x upper.yaml
chmod +x upper.yaml
그러면 이를 스크립트로 실행할 수 있습니다.
echo "Hello\nWorld" | ./upper.yaml
echo "Hello\nWorld" | ./upper.yaml
이 출력은 다음과 같습니다.
HELLO WORLD
HELLO
WORLD
--logging=true 를 사용하여 로깅을 켜고 .camel-jbang/camel-pipe.log 파일에 로그를 기록할 수 있습니다. 로깅 파일의 이름은 구성할 수 없습니다.
echo "Hello\nWorld" | ./upper.yaml --logging=true
echo "Hello\nWorld" | ./upper.yaml --logging=true
3.3.19.1. 행 vs raw 모드와 함께 stream:in 사용 링크 복사링크가 클립보드에 복사되었습니다!
stream:in 을 사용하여 시스템의 데이터를 읽을 때 스트림 구성 요소는 다음 두 가지 모드에서 작동합니다.
-
줄 모드(기본값) - 입력을 줄 바꿈으로 구분된 단일 행으로 읽습니다. 메시지 본문은
문자열입니다. -
raw mode - 스트림이 끝날 때까지 전체 스트림을 읽습니다. 메시지 본문은
byte[]입니다.
기본 모드는 스트림 구성 요소가 생성되는 방법에 오래되었기 때문입니다. 따라서 raw 모드를 사용하기 위해 stream:in?readLine=false 를 설정할 수 있습니다.
3.3.20. 로컬 Kamelets 실행 링크 복사링크가 클립보드에 복사되었습니다!
Camel JBang을 사용하여 GitHub에 게시하거나 ScanSetting에 패키지하지 않고도 로컬 Kamelets를 시도할 수 있습니다.
camel run --local-kamelet-dir=/path/to/local/kamelets earthquake.yaml
camel run --local-kamelet-dir=/path/to/local/kamelets earthquake.yaml
kamelets가 로컬 파일 시스템의 경우 --dev 모드에서 Camel JBang을 실행할 때 업데이트되면 실시간으로 다시 로드할 수 있습니다.
GitHub 리포지토리에서 폴더를 가리킬 수도 있습니다. 예를 들면 다음과 같습니다.
camel run --local-kamelet-dir=https://github.com/apache/camel-kamelets-examples/tree/main/custom-kamelets user.java
camel run --local-kamelet-dir=https://github.com/apache/camel-kamelets-examples/tree/main/custom-kamelets user.java
kamelet이 GitHub에서 로드되면 실시간으로 다시 로드할 수 없습니다.
3.3.21. platform-http 구성 요소 사용 링크 복사링크가 클립보드에 복사되었습니다!
platform-http 에서 경로를 시작하면 Camel JBang에 포트 8080에서 실행되는 VertX HTTP 서버가 자동으로 포함됩니다. 다음 예제는 server.yaml 이라는 파일의 경로를 보여줍니다.
- from:
uri: "platform-http:/hello"
steps:
- set-body:
constant: "Hello World"
- from:
uri: "platform-http:/hello"
steps:
- set-body:
constant: "Hello World"
다음을 사용하여 이 예제를 실행할 수 있습니다.
camel run server.yaml
camel run server.yaml
그런 다음 다음을 사용하여 HTTP 서비스를 호출합니다.
curl http://localhost:8080/hello
$ curl http://localhost:8080/hello
Hello World%
3.3.22. Java 빈 및 프로세서 사용 링크 복사링크가 클립보드에 복사되었습니다!
Camel 경로와 함께 일반 Java 소스 파일을 포함한 기본 지원이 있으며 Camel JBang 런타임이 Java 소스를 컴파일하도록 합니다. 즉, 애플리케이션에 필요한 소형 유틸리티 클래스, 192.0.2.s, Camel Processors를 포함할 수 있습니다.
Java 소스 파일은 패키지 이름을 사용할 수 없습니다.
3.3.23. 종속성: Java 클래스의 종속성 링크 복사링크가 클립보드에 복사되었습니다!
Camel 통합을 camel-jbang 과 함께 실행할 때 런타임은 camel-main 기반입니다. 즉, Spring Boot 또는 Quarkus를 사용할 수 없습니다. 그러나 Java 클래스에서 주석 기반 종속성 주입 사용에 대한 지원이 있습니다.
3.3.23.1. Spring Boot 종속성 주입 사용 링크 복사링크가 클립보드에 복사되었습니다!
다음 Spring Boot 주석을 사용할 수 있습니다.
-
클래스 수준의
@org.springframework.stereotype.Component또는@org.springframework.stereotype.Service클래스 인스턴스를 생성하고 레지스트리에 등록합니다. -
@org.springframework.ovns.factory.annotation.Autowired는 클래스 필드에 빈을 주입할 수 있습니다.@org.springframework.ovns.factory.annotation.Qualifier를 사용하여 빈 ID를 지정할 수 있습니다. -
@org.springframework.ovns.factory.annotation.Value를 사용하여 속성 자리 표시자 를 삽입합니다.application.properties에 정의된 속성과 같습니다. -
메서드를 호출하여 빈을 생성하는 방법의
@org.springframework.context.annotation.Bean.
3.3.24. 디버깅 링크 복사링크가 클립보드에 복사되었습니다!
디버깅에는 다음 두 가지 유형이 있습니다.
-
Java 디버깅- Java 코드 디버깅 (ECDHE Java) -
Camel 경로 디버깅- Camel 경로 디버깅 디버깅( Camel 툴링 플러그인 필요)
3.3.24.1. Java 디버깅 링크 복사링크가 클립보드에 복사되었습니다!
JBang에서 제공하는 --debug 플래그를 사용하여 통합 스크립트를 디버깅할 수 있습니다. 그러나 JVM을 시작할 때 Java 디버깅을 활성화하려면 다음과 같이 camel 대신 jbang 명령을 사용합니다.
jbang --debug camel@apache/camel run hello.yaml Listening for transport dt_socket at address: 4004
jbang --debug camel@apache/camel run hello.yaml
Listening for transport dt_socket at address: 4004
기본 수신 대기 포트가 4004임을 볼 수 있지만 JBang 디버깅 에 설명된 대로 구성할 수 있습니다.
이는 표준 Java debug 소켓입니다. 그런 다음 선택한 IDE를 사용할 수 있습니다. 프로세서를 추가하여 라우팅 정의 생성과 달리 경로 실행 중에 10.0.0.1s가 적중하도록 할 수 있습니다.
3.3.24.2. Camel 경로 디버깅 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Camel 경로 디버거를 사용할 수 있습니다( camel-debug 구성 요소가 classpath에 자동으로 추가됨). 기본적으로 URL 서비스:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi/camel 에서 ScanSetting을 통해 연결할 수 있습니다. 그런 다음 선택한 IDE (Integrated Development Environment)를 사용할 수 있습니다.
3.3.25. 상태 점검 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 CLI에서 Camel JBang을 사용하여 상태 점검 상태에 액세스할 수 있습니다.
camel get health PID NAME AGE ID RL STATE RATE SINCE MESSAGE 61005 mybind 8s camel/context R UP 2/2/- 1s/3s/-
camel get health
PID NAME AGE ID RL STATE RATE SINCE MESSAGE
61005 mybind 8s camel/context R UP 2/2/- 1s/3s/-
여기에서 Camel이 UP 임을 확인할 수 있습니다. 애플리케이션이 8초 동안 실행되고 있으며 상태 점검이 호출되었습니다.
출력에는 기본 검사 수준이 다음과 같이 표시됩니다.
-
CamelContext상태 점검 -
구성 요소별 상태 점검(예:
camel-kafka또는camel-aws') - 사용자 정의 상태 점검
-
UP이 아닌 검사
RATE 열에는 / 로 구분된 세 개의 숫자가 표시됩니다. 따라서 2/2/- 는 총 2개의 점검, 2개의 성공 및 실패를 의미합니다. 마지막 두 열은 상태 점검 상태가 변경될 때 이 숫자가 성공 또는 실패의 연속 점검 수이므로 재설정됩니다. 따라서 상태 점검이 실패하면 다음과 같은 숫자가 발생할 수 있습니다.
camel get health PID NAME AGE ID RL STATE RATE SINCE MESSAGE 61005 mybind 3m2s camel/context R UP 77/-/3 1s/-/17s some kind of error
camel get health
PID NAME AGE ID RL STATE RATE SINCE MESSAGE
61005 mybind 3m2s camel/context R UP 77/-/3 1s/-/17s some kind of error
여기서 숫자가 77//3 으로 변경되었음을 확인할 수 있습니다. 이는 총 검사 횟수가 77임을 의미합니다. 성공은 없지만 검사에 실패하면 3번 연속으로 오류가 발생했습니다. SINCE 열은 RATE 에 해당합니다. 이 경우 마지막 수표가 1초 전인지 확인할 수 있으며 검사에 17초 연속으로 실패했습니다.
--level=full 을 사용하여 소비자 및 경로 수준 점검을 포함하는 모든 상태 점검을 출력할 수 있습니다.
--trace 플래그를 사용하여 표시할 수 있는 예외로 인해 상태 점검이 실패하는 경우가 많습니다.
여기에서 잘못된 구성: bootstrap.servers: 값의 잘못된 URL 로 인해 org.apache.kafka.common.config.ConfigException 으로 인해 상태 점검이 실패하는 것을 확인할 수 있습니다.
camel get health --help 를 사용하면 다양한 옵션을 볼 수 있습니다.