Apache Camel 구성 요소 참조
Camel 구성 요소에 대한 구성 참조
초록
1장. 구성 요소 개요 링크 복사링크가 클립보드에 복사되었습니다!
이 장에서는 Apache Camel에 사용할 수 있는 모든 구성 요소에 대한 요약 정보를 제공합니다.
1.1. 컨테이너 유형 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Fuse는 Camel 애플리케이션을 배포할 수 있는 다양한 컨테이너 유형을 제공합니다.
- Spring Boot
- Apache Karaf
- JBoss EAP(JBoss Enterprise Application Platform)
또한 Camel 애플리케이션을 containerless 로 실행할 수 있습니다. 즉, Camel 애플리케이션이 특별한 컨테이너 없이 JVM에서 직접 실행됩니다.
Fuse는 한 컨테이너에서 Camel 구성 요소를 지원할 수 있지만 다른 컨테이너는 지원하지 않는 경우가 있습니다. 이에 대한 여러 가지 이유가 있지만 경우에 따라 구성 요소가 모든 컨테이너 유형에 적합하지 않습니다. 예를 들어, camel-ejb 구성 요소는 Java EE(즉, JBoss EAP)용으로 특별히 설계되었으며 다른 컨테이너 유형에서는 지원되지 않습니다.
1.2. 지원되는 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
다음 키를 확인합니다.
| 기호 | 설명 |
|---|---|
| ✔ | 지원됨 |
| ❌ | 지원되지 않거나 아직 지원되지 않음 |
| deprecated | 향후 릴리스에서 제거 가능 |
표 1.1. “Apache Camel 구성 요소 지원 매트릭스” 어떤 컨테이너에서 지원되는 Camel 구성 요소에 대한 포괄적인 세부 정보를 제공합니다.
| 구성 요소 | 유형 | Containerless | Spring Boot 1.x | Spring Boot 2.x | Karaf | JBoss EAP |
|---|---|---|---|---|---|---|
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ❌ | ❌ | ✔ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ❌ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ❌ | ❌ | ✔ | ❌ |
|
| 끝점 | ✔ | ❌ | ❌ | ❌ | ❌ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | deprecated | deprecated | deprecated | deprecated | ✔ |
|
| 끝점 | ✔ | ❌ | ❌ | deprecated | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | ❌ | ❌ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| deprecated | ❌ | ❌ | ❌ | ❌ | |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ❌ | ❌ | ❌ | ✔ |
|
| 언어 | deprecated | ❌ | ❌ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ❌ | ❌ | ✔ | ❌ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ❌ | ❌ | ✔ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ❌ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | ❌ | ❌ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ❌ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ❌ | ❌ | ✔ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| deprecated | ❌ | ❌ | ❌ | ❌ | |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | ❌ | ❌ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ❌ | ❌ |
|
| 끝점 | deprecated | ❌ | ❌ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ | ✔ | |
|
| 데이터 형식 | deprecated | deprecated | deprecated | deprecated | deprecated |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | ❌ | ❌ | ❌ | ❌ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ❌ | ❌ | ❌ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ❌ | ❌ | ✔ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ❌ | ❌ | ❌ | ❌ | ❌ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | ❌ | ❌ | ❌ | ❌ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ❌ | ❌ | ❌ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ❌ | ❌ | ✔ | ❌ |
|
| 끝점 | ✔ | ❌ | ❌ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ❌ |
|
| 끝점 | ❌ | ❌ | ❌ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ❌ |
|
| 언어 | deprecated | ❌ | ❌ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ❌ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ❌ | ❌ | ✔ | ❌ | |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ❌ | ❌ | ❌ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ❌ | ❌ | ❌ | ✔ | |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ | ❌ | |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ❌ | ❌ | ✔ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | ❌ | ❌ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | deprecated |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | ✔ | ❌ |
|
| 끝점 | deprecated | deprecated | deprecated | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 끝점 | ❌ | ❌ | ✔ | ❌ | ❌ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | ❌ | ❌ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ | ✔ | |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ❌ | ❌ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | deprecated | deprecated | deprecated | ❌ | deprecated |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 언어 | deprecated | deprecated | deprecated | ❌ | deprecated |
|
| 끝점 | deprecated | ❌ | ❌ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ | ✔ | |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ❌ | ✔ | |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | ❌ | ❌ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | deprecated | deprecated | deprecated | ❌ | deprecated |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ❌ |
|
| 끝점 | ❌ | ❌ | ✔ | ❌ | ❌ |
|
| 끝점 | ❌ | ❌ | ❌ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | ✔ | ✔ | deprecated | ❌ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | deprecated |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ❌ | ❌ | ✔ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ❌ | ❌ |
|
| 언어 | ✔ | ✔ | ✔ | ❌ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ❌ | ❌ | |
|
| 끝점 | ❌ | ❌ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ❌ | ❌ | |
|
| 끝점 | ❌ | ❌ | ✔ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ❌ | ✔ |
|
| 끝점 | ✔ | ❌ | ❌ | ❌ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ❌ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ❌ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | ❌ | ❌ | deprecated | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | deprecated | deprecated | deprecated | deprecated | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ❌ | ❌ | ✔ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ❌ |
|
| 데이터 형식 | deprecated | deprecated | deprecated | deprecated | ✔ |
|
| 데이터 형식 | deprecated | deprecated | deprecated | deprecated | deprecated |
|
| 끝점 | ❌ | ❌ | ❌ | ❌ | ❌ |
|
| 데이터 형식 | ❌ | ❌ | ❌ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 언어 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ❌ | ❌ | ❌ | ❌ | ❌ |
|
| 끝점 | ✔ | ✔ | ✔ | ❌ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 데이터 형식 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
|
| 끝점 | ✔ | ✔ | ✔ | ✔ | ✔ |
2장. ActiveMQ 링크 복사링크가 클립보드에 복사되었습니다!
2.1. ActiveMQ Component 링크 복사링크가 클립보드에 복사되었습니다!
ActiveMQ 구성 요소를 사용하면 메시지를 JMS Queue 또는 Topic으로 보내거나 Apache ActiveMQ 를 사용하여 JMS Queue 또는 Topic에서 사용할 메시지를 보낼 수 있습니다.
이 구성 요소는 177장. JMS 구성 요소 를 기반으로 하며 Spring의 JmsTemplate 을 사용하여 소비하기 위해 MessageListenerContainer 를 사용하여 선언적 트랜잭션에 대해 Spring의 JMS 지원을 사용합니다. 177장. JMS 구성 요소 구성 요소의 모든 옵션이 이 구성 요소에도 적용됩니다.
이 구성 요소를 사용하려면 camel-core.jar,camel-spring.jar 및 camel-jms.jar 와 같은 모든 Apache Camel 종속 항목과 함께 클래스 경로에 activemq.jar 또는 activemq-core.jar 가 있는지 확인하십시오.
JMS 와 함께 트랜잭션을 사용하는 경우 성능에 영향을 줄 수 있으므로 JMS가 포함된 트랜잭션을 사용하는 경우 JMS 페이지에서 아래 섹션 트랜잭션 및 캐시 수준 을 참조하십시오.
2.2. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
activemq:[queue:|topic:]destinationName
여기서 destinationName 은 ActiveMQ 대기열 또는 주제 이름입니다. 기본적으로 destinationName 은 큐 이름으로 해석됩니다. 예를 들어 큐에 연결하려면 FOO.BAR 을 사용합니다.
activemq:FOO.BAR
원하는 경우 선택적 queue: 접두사를 포함할 수 있습니다.
activemq:queue:FOO.BAR
항목에 연결하려면 topic: 접두사를 포함해야 합니다. 예를 들어 주제, Stocks.Prices 에 연결하려면 다음을 사용합니다.
activemq:topic:Stocks.Prices
2.3. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
이 구성 요소에도 적용되는 모든 옵션이 적용되므로 177장. JMS 구성 요소 구성 요소의 옵션을 참조하십시오.
2.4. EAP 배포용 Camel 링크 복사링크가 클립보드에 복사되었습니다!
이 구성 요소는 Red Hat JBoss EAP(JBoss Enterprise Application Platform) 컨테이너에서 단순화된 배포 모델을 제공하는 Camel on EAP(Wildfly Camel) 프레임워크에서 지원합니다.
포함된 브로커 또는 외부 브로커와 함께 작동하도록 ActiveMQ Camel 구성 요소를 구성할 수 있습니다. JBoss EAP 컨테이너에 브로커를 포함하려면 EAP 컨테이너 구성 파일에서 ActiveMQ 리소스 어댑터를 구성하고 ActiveMQ 리소스 어댑터 구성 을 참조하십시오.
2.5. 연결 팩토리 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 테스트 사례 는 ActiveMQ 연결에 사용되는 brokerURL 을 지정하는 동안 activeMQComponent() 메서드 를 사용하여 ActiveMQ Component를 CamelContext 에 추가하는 방법을 보여줍니다.
camelContext.addComponent("activemq", activeMQComponent("vm://localhost?broker.persistent=false"));
2.6. Spring XML을 사용하여 연결 팩토리 구성 링크 복사링크가 클립보드에 복사되었습니다!
ActiveMQComponent에서 다음과 같이 ActiveMQ 브로커 URL을 구성할 수 있습니다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<camelContext xmlns="http://camel.apache.org/schema/spring">
</camelContext>
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="brokerURL" value="tcp://somehost:61616"/>
</bean>
</beans>
2.7. 연결 풀링 사용 링크 복사링크가 클립보드에 복사되었습니다!
Camel을 사용하여 ActiveMQ 브로커로 전송하는 경우 풀링된 연결 팩토리를 사용하여 JMS 연결, 세션 및 생산자의 효율적인 풀링을 처리하는 것이 좋습니다. 이 내용은 ActiveMQ Spring Support 페이지에 설명되어 있습니다.
Maven으로 Jencks AMQ 풀을 캡처할 수 있습니다.
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.3.2</version>
</dependency>
그런 다음 다음과 같이 activemq 구성 요소를 설정합니다.
<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616" />
</bean>
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
<property name="maxConnections" value="8" />
<property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>
<bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="pooledConnectionFactory"/>
<property name="concurrentConsumers" value="10"/>
</bean>
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="configuration" ref="jmsConfig"/>
</bean>
풀링된 연결 팩토리의 init 및 destroy 메서드를 확인합니다. 이는 연결 풀이 올바르게 시작되고 종료되었는지 확인하는 것이 중요합니다.
그런 다음 PooledConnectionFactory 가 동시에 사용 중인 최대 8개의 연결이 있는 연결 풀을 생성합니다. 각 연결은 여러 세션에서 공유할 수 있습니다. 연결당 최대 세션 수를 구성하는 데 사용할 수 있는 maxActive 옵션이 있습니다. 기본값은 500 입니다. ActiveMQ 5.7 이후 옵션은 용도를 보다 잘 반영하기 위해 옵션이 변경되었으며 maxActiveSessionPerConnection 로 이름이 지정되었습니다. concurrentConsumers 가 maxConnections 보다 더 높은 값으로 설정되어 있습니다. 이는 각 소비자가 세션을 사용하고 있으며 세션으로서 동일한 연결을 공유할 수 있으므로 이는 괜찮습니다. 이 예제에서는 8 * 500 = 4000 활성 세션을 동시에 가질 수 있습니다.
2.8. 경로에서 MessageListener POJO 호출 링크 복사링크가 클립보드에 복사되었습니다!
ActiveMQ 구성 요소는 또한 JMS MessageListener에서 프로세서 로 도우미 유형 변환기 를 제공합니다. 즉, 43장. 빈 구성 요소 구성 요소는 모든 경로 내에서 직접 JMS MessageListener 빈을 호출할 수 있습니다.
예를 들어 다음과 같이 JMS에서 MessageListener를 생성할 수 있습니다.
public class MyListener implements MessageListener {
public void onMessage(Message jmsMessage) {
// ...
}
}
그런 다음 다음과 같이 경로에 사용하십시오.
from("file://foo/bar").
bean(MyListener.class);
즉, Apache Camel 구성 요소를 재사용하고 JMS MessageListener POJO\에 쉽게 통합할 수 있습니다!
2.9. ActiveMQ 대상 옵션 사용 링크 복사링크가 클립보드에 복사되었습니다!
ActiveMQ 5.6에서 사용 가능
"destination." 접두사를 사용하여 끝점 URI에서 대상 옵션 을 구성할 수 있습니다. 예를 들어 소비자를 배타적으로 표시하고 prefetch 크기를 50으로 설정하려면 다음과 같이 수행할 수 있습니다.
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="file://src/test/data?noop=true"/>
<to uri="activemq:queue:foo"/>
</route>
<route>
<!-- use consumer.exclusive ActiveMQ destination option, notice we have to prefix with destination. -->
<from uri="activemq:foo?destination.consumer.exclusive=true&destination.consumer.prefetchSize=50"/>
<to uri="mock:results"/>
</route>
</camelContext>
2.10. 권고 메시지 사용 링크 복사링크가 클립보드에 복사되었습니다!
ActiveMQ는 사용할 수 있는 항목에 배치된 권고 메시지 를 생성할 수 있습니다. 이러한 메시지는 느린 소비자를 감지하거나 통계(일별 메시지/생성된 메시지 수 등)를 작성하는 경우에 알림을 보내는 데 도움이 될 수 있습니다. 다음 Spring DSL 예제에서는 주제에서 메시지를 읽는 방법을 보여줍니다.
<route>
<from uri="activemq:topic:ActiveMQ.Advisory.Connection?mapJmsMessage=false" />
<convertBodyTo type="java.lang.String"/>
<transform>
<simple>${in.body} </simple>
</transform>
<to uri="file://data/activemq/?fileExist=Append&ileName=advisoryConnection-${date:now:yyyyMMdd}.txt" />
</route>
큐에서 메시지를 사용하는 경우 data/activemq 폴더에 다음 파일이 표시됩니다.If you consume a message on a queue, you should see the following files under data/activemq folder:
advisoryConnection-20100312.txt advisoryProducer-20100312.txt
문자열을 포함하는 경우:
ActiveMQMessage {commandId = 0, responseRequired = false, messageId = ID:dell-charles-3258-1268399815140
-1:0:0:0:221, originalDestination = null, originalTransactionId = null, producerId = ID:dell-charles-
3258-1268399815140-1:0:0:0, destination = topic://ActiveMQ.Advisory.Connection, transactionId = null,
expiration = 0, timestamp = 0, arrival = 0, brokerInTime = 1268403383468, brokerOutTime = 1268403383468,
correlationId = null, replyTo = null, persistent = false, type = Advisory, priority = 0, groupID = null,
groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = null,
marshalledProperties = org.apache.activemq.util.ByteSequence@17e2705, dataStructure = ConnectionInfo
{commandId = 1, responseRequired = true, connectionId = ID:dell-charles-3258-1268399815140-2:50,
clientId = ID:dell-charles-3258-1268399815140-14:0, userName = , password = *****,
brokerPath = null, brokerMasterConnector = false, manageable = true, clientMaster = true},
redeliveryCounter = 0, size = 0, properties = {originBrokerName=master, originBrokerId=ID:dell-charles-
3258-1268399815140-0:0, originBrokerURL=vm://master}, readOnlyProperties = true, readOnlyBody = true,
droppable = false}
2.11. 구성 요소 JAR 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
이 종속성이 필요합니다.
-
activemq-camel
ActiveMQ는 ActiveMQ 프로젝트 와 함께 릴리스된 177장. JMS 구성 요소 구성 요소의 확장입니다.
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-camel</artifactId>
<version>5.6.0</version>
</dependency>
3장. AHC 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.8에서 사용 가능
ahc: 구성 요소는 외부 HTTP 리소스를 사용하기 위해 HTTP 기반 엔드포인트를 제공합니다(HTTP를 사용하여 외부 서버를 호출하는 클라이언트로).
구성 요소는 Async Http Client 라이브러리를 사용합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-ahc</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
3.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
ahc:http://hostname[:port][/resourceUri][?options]
ahc:https://hostname[:port][/resourceUri][?options]
는 기본적으로 HTTP용 포트 80 및 443을 HTTPS에 사용합니다.
다음 형식 ?option=value&option=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
3.2. AhcEndpoint 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AHC 끝점은 URI 구문을 사용하여 구성됩니다.
ahc:httpUri
다음 경로 및 쿼리 매개변수를 사용합니다.
3.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| httpUri | required: http://hostname:port/path과 같이 사용할 URI | URI |
3.2.2. 쿼리 매개변수(13 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| bridgeEndpoint (producer) | 옵션이 true인 경우 Exchange.HTTP_URI 헤더가 무시되고 요청 끝점의 URI를 사용합니다. 또한 AhcProducer가 모든 오류 응답을 다시 보낼 수 있도록 throwExceptionOnFailure를 false로 설정할 수도 있습니다. | false | boolean |
| bufferSize (producer) | Camel과 AHC Client 간에 데이터를 전송할 때 사용되는 초기 메모리 버퍼 크기입니다. | 4096 | int |
| connectionClose (producer) | Connection Close 헤더를 HTTP 요청에 추가해야 하는지 정의합니다. 이 매개변수는 기본적으로 false입니다. | false | boolean |
| cookieHandler (producer) | HTTP 세션을 유지 관리하도록 쿠키 처리기 구성 | CookieHandler | |
| headerFilterStrategy (producer) | 사용자 지정 HeaderFilterStrategy를 사용하여 Camel 메시지와의 헤더를 필터링합니다. | HeaderFilterStrategy | |
| throwExceptionOnFailure (producer) | 원격 서버에서 응답이 실패한 경우 AhcOperationFailedException의 throw를 비활성화하는 옵션입니다. 이를 통해 HTTP 상태 코드와 관계없이 모든 응답을 얻을 수 있습니다. | true | boolean |
| transferException (producer) | 소비자 측에서 Exchange가 실패하고 발생한 Exception이 애플리케이션/x-java-serialized-object 콘텐츠 유형으로 응답에서 직렬화된 경우 (예: Jetty 또는 Servlet Camel 구성 요소 사용) 생산자 측에서 예외는 AhcOperationFailedException 대신 deserialize되고 그대로 발생합니다. 원인된 예외는 직렬화해야 합니다. 이 설정은 기본적으로 꺼져 있습니다. 이를 활성화하면 Java가 요청에서 Java로 들어오는 데이터를 역직렬화하고 잠재적인 보안 위험이 될 수 있다는 점에 유의하십시오. | false | boolean |
| 바인딩 (advanced) | AHC와 Camel 간에 바인딩하는 방법을 제어할 수 있는 사용자 지정 AhcBinding을 사용합니다. | AhcBinding | |
| clientConfig (advanced) | 사용자 지정 com.ning.http.client.AsyncHttpClient 인스턴스를 사용하도록 AsyncHttpClient를 구성합니다. | AsyncHttpClientConfig | |
| clientConfigOptions (고급) | 맵의 키/값을 사용하여 AsyncHttpClientConfig를 구성하려면 다음을 수행합니다. | map | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| clientConfigRealmOptions (보안) | 맵의 키/값을 사용하여 AsyncHttpClientConfig Realm을 구성하려면 다음을 수행합니다. | map | |
| sslContextParameters (security) | 레지스트리의 org.apache.camel.util.jsse.SSLContextParameters에 대한 참조입니다. 이 참조는 구성 요소 수준에서 구성된 모든 SSLContextParameter를 재정의합니다. JSSE 구성 유틸리티 사용을 참조하십시오. 이 옵션을 구성하면 끝점 또는 구성 요소 수준에서 clientConfig 옵션을 통해 제공되는 모든 SSL/TLS 구성 옵션을 재정의합니다. | SSLContextParameters |
3.3. AhcComponent Options 링크 복사링크가 클립보드에 복사되었습니다!
AHC 구성 요소는 아래에 나열된 8 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 클라이언트 (고급) | 사용자 정의 AsyncHttpClient 사용 | AsyncHttpClient | |
| 바인딩 (advanced) | AHC와 Camel 간에 바인딩하는 방법을 제어할 수 있는 사용자 지정 AhcBinding을 사용합니다. | AhcBinding | |
| clientConfig (advanced) | 사용자 지정 com.ning.http.client.AsyncHttpClient 인스턴스를 사용하도록 AsyncHttpClient를 구성합니다. | AsyncHttpClientConfig | |
| sslContextParameters (security) | 레지스트리의 org.apache.camel.util.jsse.SSLContextParameters에 대한 참조입니다. 이 옵션을 구성하면 끝점 또는 구성 요소 수준에서 clientConfig 옵션을 통해 제공되는 모든 SSL/TLS 구성 옵션을 재정의합니다. | SSLContextParameters | |
| JavaSerialized Object (advanced) 허용 | 요청이 context-type=application/x-java-serialized-object를 사용할 때 java serialization을 허용할지 여부입니다. 기본적으로 꺼집니다. 이를 활성화하면 Java가 요청에서 Java로 들어오는 데이터를 역직렬화하고 잠재적인 보안 위험이 될 수 있다는 점에 유의하십시오. | false | boolean |
| useGlobalSslContext 매개변수 (보안) | 글로벌 SSL 컨텍스트 매개 변수의 사용을 활성화합니다. | false | boolean |
| headerFilterStrategy (filter) | 사용자 지정 org.apache.camel.spi.HeaderFilterStrategy를 사용하여 Camel 메시지로 헤더를 필터링하려면 다음을 수행합니다. | HeaderFilterStrategy | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AhcComponent 의 모든 옵션을 설정하면 해당 옵션을 생성되는 AhcEndpoints 로 전파합니다. 그러나 AhcEndpoint 는 사용자 지정 옵션을 설정/override할 수도 있습니다. 끝점에 설정된 옵션은 항상 AhcComponent 의 옵션보다 우선합니다.
3.4. 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 유형 | 설명 |
|---|---|---|
|
|
| 호출할 URI입니다. 는 엔드포인트에서 직접 설정된 기존 URI를 재정의합니다. |
|
|
|
요청 URI의 경로, 헤더는 HTTP_URI를 사용하여 요청 URI를 빌드하는 데 사용됩니다. 경로가 "/"로 시작하는 경우 http 생산자는 Exchange.HTTP_BASE_URI 헤더 또는 |
|
|
| Camel 2.11 이후: URI 매개변수. 는 끝점에 직접 설정된 기존 URI 매개 변수를 재정의합니다. |
|
|
| 외부 서버의 HTTP 응답 코드입니다. 200은 OK 입니다. |
|
|
| 문자 인코딩. |
|
|
|
HTTP 콘텐츠 유형입니다. 는 |
|
|
|
HTTP 콘텐츠 인코딩입니다. |
3.5. 메시지 본문 링크 복사링크가 클립보드에 복사되었습니다!
Camel은 외부 서버의 HTTP 응답을 OUT 본문에 저장합니다. IN 메시지의 모든 헤더가 OUT 메시지에 복사되므로 라우팅 중에 헤더가 유지됩니다. 또한 Camel은 HTTP 응답 헤더와 OUT 메시지 헤더에 추가합니다.
3.6. 응답 코드 링크 복사링크가 클립보드에 복사되었습니다!
Camel은 HTTP 응답 코드에 따라 처리합니다.
- 응답 코드는 범위 100.299이며 Camel은 성공 대응과 관련이 있습니다.
-
응답 코드는 범위 300..399에 있으며 Camel은 리디렉션 응답과 관련이 있으며 정보가 포함된
AhcOOperationFailedException이 발생합니다. 응답 코드는 400 이상이며 Camel은 외부 서버 오류로 간주하고 정보가 포함된
AhcOperationFailedException이 발생합니다.throwExceptionOnFailure
실패한 응답 코드에 대해
AhcOperationFailedException이 throw되지 않도록 옵션throwExceptionOnFailure을false로 설정할 수 있습니다. 이를 통해 원격 서버에서 모든 응답을 가져올 수 있습니다.
3.7. AhcOperationFailedException 링크 복사링크가 클립보드에 복사되었습니다!
이 예외에는 다음 정보가 포함됩니다.
- HTTP 상태 코드
- HTTP 상태 줄 (상태 코드의 텍스트)
- 리디렉션 위치, 서버가 리디렉션을 반환하는 경우
-
서버가 응답으로 본문을 제공하는 경우
java.lang.String로서 응답 본문
3.8. GET 또는 POST를 사용하여 호출 링크 복사링크가 클립보드에 복사되었습니다!
다음 알고리즘은 GET 또는 POST HTTP 메서드를 사용해야 하는지 확인하는 데 사용됩니다.
1. 헤더에 제공된 메서드를 사용합니다.
2. 쿼리 문자열이 헤더에 제공되는 경우 GET 입니다.
3. 끝점이 쿼리 문자열로 구성된 경우 GET 입니다.
4. 보낼 데이터가 있는 경우 POST (body가 null이 아님)
5. 그렇지 않으면 GET 입니다.
3.9. 호출할 URI 구성 링크 복사링크가 클립보드에 복사되었습니다!
HTTP 생산자의 URI를 직접 엔드포인트 URI로 설정할 수 있습니다. 아래 경로에서 Camel은 HTTP를 사용하여 외부 서버 oldhost 로 호출합니다.
from("direct:start")
.to("ahc:http://oldhost");
다음과 같은 Spring 샘플이 있습니다.
<camelContext xmlns="http://activemq.apache.org/camel/schema/spring">
<route>
<from uri="direct:start"/>
<to uri="ahc:http://oldhost"/>
</route>
</camelContext>
메시지에 Exchange.HTTP_URI 라는 헤더를 추가하여 HTTP 끝점 URI를 덮어쓸 수 있습니다.
from("direct:start")
.setHeader(Exchange.HTTP_URI, constant("http://newhost"))
.to("ahc:http://oldhost");
3.10. URI 매개변수 구성 링크 복사링크가 클립보드에 복사되었습니다!
ahc 생산자는 HTTP 서버로 보낼 URI 매개 변수를 지원합니다. URI 매개 변수는 끝점 URI에서 직접 설정하거나 메시지에서 Exchange.HTTP_QUERY 키를 사용하는 헤더로 설정할 수 있습니다.
from("direct:start")
.to("ahc:http://oldhost?order=123&detail=short");
또는 헤더에 제공되는 옵션:
from("direct:start")
.setHeader(Exchange.HTTP_QUERY, constant("order=123&detail=short"))
.to("ahc:http://oldhost");
3.11. http 메서드를 HTTP 생산자로 설정하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
HTTP 구성 요소는 메시지 헤더를 설정하여 HTTP 요청 메서드를 설정하는 방법을 제공합니다. 예를 들면 다음과 같습니다.
from("direct:start")
.setHeader(Exchange.HTTP_METHOD, constant("POST"))
.to("ahc:http://www.google.com")
.to("mock:results");
다음과 같은 Spring 샘플이 있습니다.
<camelContext xmlns="http://activemq.apache.org/camel/schema/spring">
<route>
<from uri="direct:start"/>
<setHeader headerName="CamelHttpMethod">
<constant>POST</constant>
</setHeader>
<to uri="ahc:http://www.google.com"/>
<to uri="mock:results"/>
</route>
</camelContext>
3.12. charset 구성 링크 복사링크가 클립보드에 복사되었습니다!
POST 를 사용하여 데이터를 보내는 경우 Exchange 속성을 사용하여 charset을 구성할 수 있습니다.If you are using POST to send data you can configure the charset using the Exchange property:
exchange.setProperty(Exchange.CHARSET_NAME, "iso-8859-1");
3.12.1. 끝점 URI의 URI 매개 변수 링크 복사링크가 클립보드에 복사되었습니다!
이 샘플에는 웹 브라우저에 입력한 전체 URI 엔드포인트가 있습니다. 물론 여러 URI 매개변수는 웹 브라우저에서와 마찬가지로 구분 기호로 & amp; 문자를 사용하여 설정할 수 있습니다. Camel은 여기에서 속임수를 사용하지 않습니다.
// we query for Camel at the Google page
template.sendBody("ahc:http://www.google.com/search?q=Camel", null);
3.12.2. 메시지의 URI 매개 변수 링크 복사링크가 클립보드에 복사되었습니다!
Map headers = new HashMap();
headers.put(Exchange.HTTP_QUERY, "q=Camel&lr=lang_en");
// we query for Camel and English language at Google
template.sendBody("ahc:http://www.google.com/search", null, headers);
위의 헤더 값에서 ? 접두사가 붙 지 않아야 하며 & amp; char를 사용하여 일반적으로 매개 변수를 분리할 수 있습니다.
3.12.3. 응답 코드 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
Exchange.HTTP_RESPONSE_CODE 를 사용하여 출력 메시지 헤더에서 값을 가져와 AHC 구성 요소에서 HTTP 응답 코드를 가져올 수 있습니다.
Exchange exchange = template.send("ahc:http://www.google.com/search", new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(Exchange.HTTP_QUERY, constant("hl=en&q=activemq"));
}
});
Message out = exchange.getOut();
int responseCode = out.getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class);
3.13. AsyncHttpClient 구성 링크 복사링크가 클립보드에 복사되었습니다!
AsyncHttpClient 클라이언트는 AsyncHttpClientConfig 를 사용하여 클라이언트를 구성합니다. 자세한 내용은
Async Http Client 설명서를 참조하십시오.
Camel 2.8 에서 구성은 AsyncHttpClientConfig.Builder 에서 제공하는 빌더 패턴을 사용하도록 제한됩니다. Camel 2.8에서 AsyncHttpClientConfig 는 getter/setter를 지원하지 않으므로 Spring bean 스타일(예: XML 파일의 <bean> 태그)을 사용하여 쉽게 만들고 구성할 수 없습니다.
아래 예제에서는 빌더를 사용하여 AhcComponent 에서 구성하는 AsyncHttpClientConfig 를 생성하는 방법을 보여줍니다.
Camel 2.9 에서 AHC 구성 요소는 Async HTTP 라이브러리 1.6.4를 사용합니다. 이 최신 버전은 일반 빈 스타일 구성에 대한 추가 지원을 제공합니다. AsyncHttpClientConfigBean 클래스는 AsyncHttpClientConfig 에서 사용할 수 있는 구성 옵션에 대한 getter 및 setter를 제공합니다. AsyncHttpClientConfigBean 인스턴스는 AHC 구성 요소로 직접 전달되거나 clientConfig URI를 사용하여 끝점 URI에서 참조될 수 있습니다.
Camel 2.9 에서도 사용할 수 있는 기능은 URI에서 직접 구성 옵션을 설정하는 기능입니다. "clientConfig"로 시작하는 URI 매개 변수를 사용하여 AsyncHttpClientConfig 의 다양한 구성 가능한 속성을 설정할 수 있습니다. 끝점 URI에 지정된 속성은 "clientConfig" 매개변수 사용 우선 순위를 사용하여 설정되는 항목과 "clientConfig" URI 매개변수에서 참조하는 구성에 지정된 특성과 병합됩니다. 참조되는 AsyncHttpClientConfig 인스턴스는 각 엔드포인트에 대해 항상 복사되므로 하나의 끝점의 설정이 이전에 생성된 끝점의 설정과 관계없이 유지됩니다. 아래 예제에서는 "clientConfig" 유형 URI 매개 변수를 사용하여 AHC 구성 요소를 구성하는 방법을 보여줍니다.
from("direct:start")
.to("ahc:http://localhost:8080/foo?clientConfig.maxRequestRetry=3&clientConfig.followRedirects=true")
3.14. SSL 지원(HTTPS) 링크 복사링크가 클립보드에 복사되었습니다!
JSSE 구성 유틸리티 사용
Camel 2.9부터 AHC 구성 요소는 Camel JSSE 구성 유틸리티를 통해 SSL/TLS 구성을 지원합니다. 이 유틸리티는 작성하는 데 필요한 구성 요소별 코드의 양을 크게 줄이고 엔드포인트 및 구성 요소 수준에서 구성할 수 있습니다. 다음 예제에서는 AHC 구성 요소에서 유틸리티를 사용하는 방법을 보여줍니다.
구성 요소의 프로그래밍 구성
KeyStoreParameters ksp = new KeyStoreParameters();
ksp.setResource("/users/home/server/keystore.jks");
ksp.setPassword("keystorePassword");
KeyManagersParameters kmp = new KeyManagersParameters();
kmp.setKeyStore(ksp);
kmp.setKeyPassword("keyPassword");
SSLContextParameters scp = new SSLContextParameters();
scp.setKeyManagers(kmp);
AhcComponent component = context.getComponent("ahc", AhcComponent.class);
component.setSslContextParameters(scp));
끝점의 Spring DSL 기반 구성
...
<camel:sslContextParameters
id="sslContextParameters">
<camel:keyManagers
keyPassword="keyPassword">
<camel:keyStore
resource="/users/home/server/keystore.jks"
password="keystorePassword"/>
</camel:keyManagers>
</camel:sslContextParameters>...
...
<to uri="ahc:https://localhost/foo?sslContextParameters=#sslContextParameters"/>
...
3.15. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
4장. AHC Websocket 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.14로 사용 가능
ahc-ws 구성 요소는 Websocket을 통해 외부 서버와 통신하는 클라이언트를 위해 Websocket 기반 엔드포인트를 제공합니다(클라이언트가 외부 서버에 대한 Websocket 연결을 여는 경우).
구성 요소는 Async Http Client 라이브러리를 차례로 사용하는 AHC 구성 요소를 사용합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-ahc-ws</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
4.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
ahc-ws://hostname[:port][/resourceUri][?options]
ahc-wss://hostname[:port][/resourceUri][?options]
는 기본적으로 ahc-ws에 포트 80을 사용하고 ahc-ws에는 443 포트를 사용합니다.
4.2. AHC-WS Options 링크 복사링크가 클립보드에 복사되었습니다!
AHC-WS 구성 요소는 AHC 구성 요소의 다양한 구성 옵션을 사용할 수 있습니다.
AHC Websocket 구성 요소는 아래에 나열된 8 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 클라이언트 (고급) | 사용자 정의 AsyncHttpClient 사용 | AsyncHttpClient | |
| 바인딩 (advanced) | AHC와 Camel 간에 바인딩하는 방법을 제어할 수 있는 사용자 지정 AhcBinding을 사용합니다. | AhcBinding | |
| clientConfig (advanced) | 사용자 지정 com.ning.http.client.AsyncHttpClient 인스턴스를 사용하도록 AsyncHttpClient를 구성합니다. | AsyncHttpClientConfig | |
| sslContextParameters (security) | 레지스트리의 org.apache.camel.util.jsse.SSLContextParameters에 대한 참조입니다. 이 옵션을 구성하면 끝점 또는 구성 요소 수준에서 clientConfig 옵션을 통해 제공되는 모든 SSL/TLS 구성 옵션을 재정의합니다. | SSLContextParameters | |
| JavaSerialized Object (advanced) 허용 | 요청이 context-type=application/x-java-serialized-object를 사용할 때 java serialization을 허용할지 여부입니다. 기본적으로 꺼집니다. 이를 활성화하면 Java가 요청에서 Java로 들어오는 데이터를 역직렬화하고 잠재적인 보안 위험이 될 수 있다는 점에 유의하십시오. | false | boolean |
| useGlobalSslContext 매개변수 (보안) | 글로벌 SSL 컨텍스트 매개 변수의 사용을 활성화합니다. | false | boolean |
| headerFilterStrategy (filter) | 사용자 지정 org.apache.camel.spi.HeaderFilterStrategy를 사용하여 Camel 메시지로 헤더를 필터링하려면 다음을 수행합니다. | HeaderFilterStrategy | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AHC Websocket 끝점은 URI 구문을 사용하여 구성됩니다.
ahc-ws:httpUri
다음 경로 및 쿼리 매개변수를 사용합니다.
4.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| httpUri | required: http://hostname:port/path과 같이 사용할 URI | URI |
4.2.2. 쿼리 매개변수(18 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| bridgeEndpoint (common) | 옵션이 true인 경우 Exchange.HTTP_URI 헤더가 무시되고 요청 끝점의 URI를 사용합니다. 또한 AhcProducer가 모든 오류 응답을 다시 보낼 수 있도록 throwExceptionOnFailure를 false로 설정할 수도 있습니다. | false | boolean |
| bufferSize (일반) | Camel과 AHC Client 간에 데이터를 전송할 때 사용되는 초기 메모리 버퍼 크기입니다. | 4096 | int |
| headerFilterStrategy (common) | 사용자 지정 HeaderFilterStrategy를 사용하여 Camel 메시지와의 헤더를 필터링합니다. | HeaderFilterStrategy | |
| throwExceptionOnFailure (일반) | 원격 서버에서 응답이 실패한 경우 AhcOperationFailedException의 throw를 비활성화하는 옵션입니다. 이를 통해 HTTP 상태 코드와 관계없이 모든 응답을 얻을 수 있습니다. | true | boolean |
| transferException (일반) | 소비자 측에서 Exchange가 실패하고 발생한 Exception이 애플리케이션/x-java-serialized-object 콘텐츠 유형으로 응답에서 직렬화된 경우 (예: Jetty 또는 Servlet Camel 구성 요소 사용) 생산자 측에서 예외는 AhcOperationFailedException 대신 deserialize되고 그대로 발생합니다. 원인된 예외는 직렬화해야 합니다. 이 설정은 기본적으로 꺼져 있습니다. 이를 활성화하면 Java가 요청에서 Java로 들어오는 데이터를 역직렬화하고 잠재적인 보안 위험이 될 수 있다는 점에 유의하십시오. | false | boolean |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| sendMessageOnError (consumer) | web-socket 리스너가 오류를 수신한 경우 메시지를 보낼지 여부입니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| connectionClose (producer) | Connection Close 헤더를 HTTP 요청에 추가해야 하는지 정의합니다. 이 매개변수는 기본적으로 false입니다. | false | boolean |
| cookieHandler (producer) | HTTP 세션을 유지 관리하도록 쿠키 처리기 구성 | CookieHandler | |
| Streaming(producer) 사용 | 스트리밍이 여러 개의 텍스트 조각으로 데이터를 보낼 수 있도록 합니다. | false | boolean |
| 바인딩 (advanced) | AHC와 Camel 간에 바인딩하는 방법을 제어할 수 있는 사용자 지정 AhcBinding을 사용합니다. | AhcBinding | |
| clientConfig (advanced) | 사용자 지정 com.ning.http.client.AsyncHttpClient 인스턴스를 사용하도록 AsyncHttpClient를 구성합니다. | AsyncHttpClientConfig | |
| clientConfigOptions (고급) | 맵의 키/값을 사용하여 AsyncHttpClientConfig를 구성하려면 다음을 수행합니다. | map | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| clientConfigRealmOptions (보안) | 맵의 키/값을 사용하여 AsyncHttpClientConfig Realm을 구성하려면 다음을 수행합니다. | map | |
| sslContextParameters (security) | 레지스트리의 org.apache.camel.util.jsse.SSLContextParameters에 대한 참조입니다. 이 참조는 구성 요소 수준에서 구성된 모든 SSLContextParameter를 재정의합니다. JSSE 구성 유틸리티 사용을 참조하십시오. 이 옵션을 구성하면 끝점 또는 구성 요소 수준에서 clientConfig 옵션을 통해 제공되는 모든 SSL/TLS 구성 옵션을 재정의합니다. | SSLContextParameters |
4.3. Websocket을 통한 데이터 쓰기 및 읽기 링크 복사링크가 클립보드에 복사되었습니다!
ahc-ws 끝점은 엔드포인트가 생산자 또는 소비자로 구성되어 있는지 여부에 따라 소켓에 데이터를 쓰거나 소켓에서 읽을 수 있습니다.
4.4. 데이터를 쓰거나 읽을 URI 구성 링크 복사링크가 클립보드에 복사되었습니다!
아래 경로에서 Camel은 지정된 websocket 연결에 씁니다.
from("direct:start")
.to("ahc-ws://targethost");
다음과 같은 Spring 샘플이 있습니다.
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
<to uri="ahc-ws://targethost"/>
</route>
</camelContext>
아래 경로에서 Camel은 지정된 websocket 연결에서 읽습니다.
from("ahc-ws://targethost")
.to("direct:next");
다음과 같은 Spring 샘플이 있습니다.
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="ahc-ws://targethost"/>
<to uri="direct:next"/>
</route>
</camelContext>
4.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AHC
- Atmosphere-Websocket
5장. AMQP 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 1.2로 사용 가능
amqp: 구성 요소는 Qpid 프로젝트의 JMS 클라이언트 API를 사용하여 AMQP 1.0 프로토콜 을 지원합니다. AMQP 0.9(특히 RabbitMQ)를 사용하려는 경우 Camel RabbitMQ 구성 요소에도 관심이 있을 수 있습니다. Camel 2.17.0 AMQP 구성 요소가 AMQP 0.9 이상을 지원하기 전에 먼저 Camel 2.17.0은 AMQP 1.0만 지원했습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-amqp</artifactId>
<version>${camel.version}</version> <!-- use the same version as your Camel core version -->
</dependency>
5.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
amqp:[queue:|topic:]destinationName[?options]
5.2. AMQP 옵션 링크 복사링크가 클립보드에 복사되었습니다!
대상 이름 뒤에 JMS 구성 요소의 모든 다양한 구성 옵션을 지정할 수 있습니다.
AMQP 구성 요소는 아래에 나열된 80 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | 공유 JMS 구성 사용 | JmsConfiguration | |
| acceptMessages whilee Stopping (consumer) | 소비자가 중지되는 동안 메시지를 수락하는지 여부를 지정합니다. 대기열에 포함된 메시지가 여전히 있는 동안 런타임에 JMS 경로를 시작하고 중지하는 경우 이 옵션을 활성화할 수 있습니다. 이 옵션이 false이고 JMS 경로를 중지하면 메시지가 거부될 수 있으며 JMS 브로커는 재전송을 시도해야 하지만 다시 거부될 수 있으며 결국 메시지가 JMS 브로커의 dead letter 큐에서 이동될 수 있습니다. 이 옵션을 사용하려면 이 옵션을 사용하는 것이 좋습니다. | false | boolean |
| allowReplyManagerQuick Stop (consumer) | 요청-reply 메시징에 대해 응답 관리자에게 사용되는 DefaultMessageListenerContainer에서 사용되는지 여부에 따라 JmsConfigurationisAcceptMessagesWhileStopping이 활성화되어 있고 org.apache.camel.CamelContext가 현재 중지되는 경우 DefaultMessageListenerContainer.runningAllowed 플래그를 빠르게 중지할 수 있습니다. 이 빠른 중지 기능은 일반 JMS 소비자에서 기본적으로 활성화되어 있지만 응답 관리자를 위해 이 플래그를 활성화해야 합니다. | false | boolean |
| acknowledgementMode (consumer) | Integer로 정의된 JMS 승인 모드입니다. 벤더별 확장을 acknowledgment 모드로 설정할 수 있습니다. 일반 모드에서는 acknowledgementModeName을 대신 사용하는 것이 좋습니다. | int | |
| ReLoadingOf Properties (Consumer) | JMS 속성이 필요하지 않기 때문에 일반적으로 비효율적인 메시지가 로드되는 즉시 JMS 속성을 신속하게 로드할 수 있지만 기본 JMS 공급자 및 JMS 속성 사용과 관련된 문제를 조기에 포착할 수 있습니다. | false | boolean |
| acknowledgementModeName (consumer) | SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE 중 하나인 JMS 승인 이름 | AUTO_ ACKNOWLEDGE | 문자열 |
| AutoStartup (consumer) | 소비자 컨테이너가 자동으로 시작되어야 하는지 여부를 지정합니다. | true | boolean |
| cacheLevel (consumer) | 기본 JMS 리소스의 ID별 캐시 수준을 설정합니다. 자세한 내용은 cacheLevelName 옵션을 참조하십시오. | int | |
| cacheLevelName (consumer) | 기본 JMS 리소스의 이름으로 캐시 수준을 설정합니다. 가능한 값은 CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE 및 CACHE_SESSION입니다. 기본 설정은 CACHE_AUTO입니다. 자세한 내용은 Spring 문서 및 트랜잭션 캐시 수준을 참조하십시오. | CACHE_AUTO | 문자열 |
| replyToCacheLevelName (producer) | JMS를 통해 요청/반복을 수행할 때 응답 소비자의 이름으로 캐시 수준을 설정합니다. 이 옵션은 고정 응답 대기열(임시 아님)을 사용하는 경우에만 적용됩니다. Camel은 기본적으로 배타적 또는 공유 w/ replyToSelectorName에 대해 CACHE_CONSUMER를 사용합니다. 그리고 replyToSelectorName 없이 공유의 경우 CACHE_SESSION을 사용합니다. IBM WebSphere와 같은 일부 JMS 브로커는 작동하도록 replyToCacheLevelName=CACHE_NONE을 설정해야 할 수 있습니다. 참고: 임시 대기열을 사용하는 경우 CACHE_NONE이 허용되지 않으며 CACHE_CONSUMER 또는 CACHE_SESSION과 같은 더 높은 값을 사용해야 합니다. | 문자열 | |
| clientID( 일반) | 사용할 JMS 클라이언트 ID를 설정합니다. 이 값은 지정된 경우 고유해야 하며 단일 JMS 연결 인스턴스에서만 사용할 수 있습니다. 일반적으로 내구성 주제 서브스크립션에만 필요합니다. Apache ActiveMQ를 사용하는 경우 대신 가상 주제를 사용할 수 있습니다. | 문자열 | |
| concurrentConsumers (consumer) | JMS에서 사용할 때 기본 동시 소비자 수를 지정합니다( JMS를 통한 요청/복제용 아님). 스레드의 동적 확장/다운을 제어하려면 maxMessagesPerTask 옵션도 참조하십시오. JMS를 통해 요청/응답 시 replyToConcurrentConsumers 옵션은 응답 메시지 리스너에서 동시 소비자 수를 제어하는 데 사용됩니다. | 1 | int |
| replyToConcurrent Consumers (producer) | JMS를 통해 요청/reply를 수행할 때 기본 동시 소비자 수를 지정합니다. 스레드의 동적 확장/다운을 제어하려면 maxMessagesPerTask 옵션도 참조하십시오. | 1 | int |
| ConnectionFactory (일반) | 사용할 연결 팩토리입니다. 구성 요소 또는 끝점에서 연결 팩토리를 구성해야 합니다. | ConnectionFactory | |
| 사용자 이름 (보안) | ConnectionFactory와 함께 사용할 사용자 이름입니다. ConnectionFactory에서 사용자 이름/암호를 직접 구성할 수도 있습니다. | 문자열 | |
| 암호 (보안) | ConnectionFactory에 사용할 암호입니다. ConnectionFactory에서 사용자 이름/암호를 직접 구성할 수도 있습니다. | 문자열 | |
| deliveryPersistent (producer) | 기본적으로 영구 제공이 사용되는지 여부를 지정합니다. | true | boolean |
| deliveryMode (producer) | 사용할 전달 모드를 지정합니다. 가능한 값은 javax.jms.DeliveryMode에서 정의한 값입니다. NON_PERSISTENT = 1 및 PERSISTENT = 2. | 정수 | |
| durableSubscriptionName (common) | 내구성 주제 서브스크립션을 지정하기 위한 내구성 있는 구독자 이름입니다. clientId 옵션도 구성해야 합니다. | 문자열 | |
| exceptionListener (advanced) | 기본 JMS 예외에 대해 알림을 받을 JMS Exception Listener를 지정합니다. | ExceptionListener | |
| errorHandler (advanced) | 메시지를 처리하는 동안 throw되지 않은 예외의 경우 호출될 org.springframework.util.ErrorHandler를 지정합니다. 기본적으로 이러한 예외는 errorHandler가 구성되지 않은 경우 WARN 수준에서 기록됩니다. 로깅 수준 및 스택 추적을 errorHandlerLoggingLevel 및 errorHandlerLogStackTrace 옵션을 사용하여 기록해야 하는지 여부를 구성할 수 있습니다. 이렇게 하면 사용자 지정 오류 처리기를 코딩하는 것보다 훨씬 쉽게 구성할 수 있습니다.This makes it much easier to configure, than having to code a custom errorHandler. | ErrorHandler | |
| errorHandlerLogging Level (logging) | 은 로깅되지 않은 예외에 대해 기본 errorHandler 로깅 수준을 구성할 수 있습니다. | WARN | LoggingLevel |
| errorHandlerLogStack Trace (logging) | 기본 errorHandler로 stacktrace를 기록해야 하는지 여부를 제어할 수 있습니다. | true | boolean |
| explicitQosEnabled (producer) | 메시지를 보낼 때 서비스의 deliveryMode, 우선순위 또는 timeToLive 특성을 사용해야 하는 경우 설정합니다. 이 옵션은 Spring의 JmsTemplate을 기반으로 합니다. deliveryMode, priority 및 timeToLive 옵션이 현재 엔드포인트에 적용됩니다. 이는 메시지 세분화에서 작동하는 preserveMessageQos 옵션과 달리 Camel In 메시지 헤더에서만 QoS 속성을 읽습니다. | false | boolean |
| exposeListenerSession (consumer) | 메시지를 사용할 때 리스너 세션을 노출해야 하는지 여부를 지정합니다. | false | boolean |
| idleTaskExecutionLimit (advanced) | 수신 작업의 유휴 실행에 대한 제한을 지정하고 해당 실행 내에 메시지를 받지 못했습니다. 이 제한에 도달하면 작업이 종료되고 다른 실행 작업에 대한 수신을 그대로 둡니다(동적 스케줄링의 경우 maxConcurrentConsumers 설정을 참조). Spring에서 사용할 수 있는 추가 doc가 있습니다. | 1 | int |
| idleConsumerLimit (advanced) | 언제든지 유휴 상태일 수 있는 소비자 수에 대한 제한을 지정합니다. | 1 | int |
| includeAmqpAnnotations (consumer) |
AMQP에서 Camel Message로 매핑할 때 AMQP 주석을 포함할지 여부를 지정합니다. 이 옵션을
참고: | false | boolean |
| maxConcurrentConsumers (Consumer) | JMS에서 사용할 때 최대 동시 소비자 수를 지정합니다( JMS를 통한 요청/복제용 아님). 스레드의 동적 확장/다운을 제어하려면 maxMessagesPerTask 옵션도 참조하십시오. JMS를 통해 요청/응답 시 replyToMaxConcurrentConsumers 옵션은 응답 메시지 리스너에서 동시 소비자 수를 제어하는 데 사용됩니다. | int | |
| replyToMaxConcurrent Consumers (producer) | JMS에서 요청/reply를 사용할 때 최대 동시 소비자 수를 지정합니다. 스레드의 동적 확장/다운을 제어하려면 maxMessagesPerTask 옵션도 참조하십시오. | int | |
| replyOnTimeoutToMax ConcurrentConsumers (producer) | JMS를 통해 요청/reply를 사용할 때 시간 초과가 발생한 경우 계속 라우팅할 수 있는 최대 동시 소비자 수를 지정합니다. | 1 | int |
| maxMessagesPerTask (advanced) | 작업당 메시지 수입니다. -1은 무제한입니다. 동시 소비자에 범위(예: max)를 사용하는 경우 이 옵션을 사용하여 더 적은 작업이 필요할 때 소비자의 속도를 축소하는 방법을 제어하기 위해 값을 100으로 설정할 수 있습니다. | -1 | int |
| messageConverter (advanced) | 사용자 지정 Spring org.springframework.jms.support.converter.MessageConverter를 사용하려면 javax.jms.Message에 매핑할 수 있는 방법을 제어할 수 있습니다. | MessageConverter | |
| mapJmsMessage (advanced) | Camel이 수신된 JMS 메시지를 javax.jms.TextMessage와 같은 적절한 페이로드 유형에 자동 매핑해야 하는지 여부를 문자열 등에 지정합니다. | true | boolean |
| messageIdEnabled (advanced) | 전송할 때 메시지 ID를 추가해야 하는지 여부를 지정합니다. 이는 JMS 브로커에 대한 힌트일 뿐입니다. JMS 공급자가 이 힌트를 수락하는 경우 이러한 메시지에는 메시지 ID가 null로 설정되어야 합니다. 공급자가 힌트를 무시하는 경우 메시지 ID를 일반 고유 값으로 설정해야 합니다. | true | boolean |
| messageTimestampEnabled (advanced) | 메시지 전송 시 기본적으로 타임스탬프를 활성화할지 여부를 지정합니다. 이는 JMS 브로커에 대한 힌트일 뿐입니다. JMS 공급자가 이 힌트를 수락하는 경우 이러한 메시지에는 타임스탬프가 0으로 설정되어야 합니다. 공급자가 힌트를 무시하면 타임스탬프를 정규 값으로 설정해야 합니다. | true | boolean |
| alwaysCopyMessage (producer) | true인 경우 Camel은 전송을 위해 생산자에 전달될 때 항상 메시지의 JMS 메시지 사본을 만듭니다. replyToDestinationSelectorName이 설정된 경우와 같이 메시지를 복사하는 데 필요한 경우 Camel은 replyToDestinationSelectorName이 설정된 경우 alwaysCopyMessage 옵션을 true로 설정합니다. | false | boolean |
| useMessageIDAs CorrelationID (advanced) | JMSMessageID를 항상 InOut 메시지의 JMSCorrelationID로 사용할지 여부를 지정합니다. | false | boolean |
| 우선 순위 (producer) | 1보다 큰 값은 보낼 때 메시지 우선 순위를 지정합니다(여기서 0이 가장 낮은 우선 순위이고 9가 가장 높은 경우). 이 옵션을 적용하려면 explicitQosEnabled 옵션도 활성화해야 합니다. | 4 | int |
| pubSubNoLocal (advanced) | 자체 연결에서 게시한 메시지 배달을 금지할지 여부를 지정합니다.Specifies whether to inhibit the delivery of messages published by its own connection. | false | boolean |
| receiveTimeout (advanced) | 메시지 수신 시간(밀리초)입니다. | 1000 | long |
| 복구Interval (advanced) | 연결이 새로 고쳐질 때(즉, 밀리초) 복구 시도 사이의 간격을 지정합니다. 기본값은 5000ms, 즉 5초입니다. | 5000 | long |
| taskExecutor (consumer) | 메시지를 사용하기 위한 사용자 지정 작업 executor를 지정할 수 있습니다. | TaskExecutor | |
| TimeToLive (producer) | 메시지를 보낼 때 메시지의 TTL(밀리초)을 지정합니다. | -1 | long |
| 트랜잭션(Transaction acted ) | transacted 모드를 사용할지 여부를 지정합니다. | false | boolean |
| lazyCreateTransaction Manager (transaction) | true인 경우 Camel은 옵션을 transacted=true할 때 삽입된 transactionManager가 없는 경우 JmsTransactionManager를 생성합니다. | true | boolean |
| TransactionManager (transaction) | 사용할 Spring 트랜잭션 관리자입니다. | PlatformTransaction Manager | |
| transactionName (transaction) | 사용할 트랜잭션의 이름입니다. | 문자열 | |
| TransactionTimeout (transaction) | 트랜잭션 모드를 사용하는 경우 트랜잭션의 시간 초과 값(초 단위)입니다. | -1 | int |
| testConnectionOn 시작 (일반) | 시작 시 연결을 테스트할지 여부를 지정합니다.Specifies whether to test the connection on startup. 이를 통해 Camel이 모든 JMS 소비자가 JMS 브로커에 대한 유효한 연결을 시작하게 합니다. 연결을 허용할 수 없는 경우 Camel은 시작 시 예외를 throw합니다. 이렇게 하면 Camel이 실패한 연결로 시작되지 않습니다. JMS 생산자도 테스트 중입니다. | false | boolean |
| asyncStartListener (advanced) | 경로를 시작할 때 JmsConsumer 메시지 리스너를 비동기적으로 시작할지 여부입니다. 예를 들어 JmsConsumer가 원격 JMS 브로커에 대한 연결을 가져올 수 없는 경우 재시도 및/또는 페일오버를 시도하는 동안 차단될 수 있습니다. 이로 인해 Camel이 경로를 시작하는 동안 차단됩니다. 이 옵션을 true로 설정하면 JmsConsumer가 비동기 모드에서 전용 스레드를 사용하여 JMS 브로커에 연결하는 동안 시작 경로를 지정할 수 있습니다. 이 옵션을 사용하면 연결을 설정할 수 없는 경우 예외가 WARN 수준에서 기록되고 소비자는 메시지를 수신할 수 없습니다. 그런 다음 다시 시도하도록 경로를 다시 시작할 수 있습니다. | false | boolean |
| asyncStopListener (advanced) | 경로를 중지할 때 JmsConsumer 메시지 리스너를 비동기적으로 중지할지 여부입니다. | false | boolean |
| forceSendOriginal Message (producer) | mapJmsMessage=false Camel을 사용하면 경로 중 헤더를 만났을 때 새 JMS 대상에 보낼 새 JMS 메시지가 생성됩니다. 수신한 원래 JMS 메시지를 전송하도록 Camel을 강제 적용하려면 이 옵션을 true로 설정합니다. | false | boolean |
| requestTimeout (producer) | InOut Exchange Pattern(밀리초)을 사용할 때 응답을 기다리는 시간 초과입니다. 기본값은 20초입니다. 이 엔드포인트 구성 시간 값을 재정의하기 위해 CamelJmsRequestTimeout 헤더를 포함할 수 있으므로 메시지당 개별 시간 제한 값이 있습니다. requestTimeoutCheckerInterval 옵션도 참조하십시오. | 20000 | long |
| requestTimeoutChecker Interval (advanced) | Camel이 JMS를 통해 요청/반복 시 Exchange 시간 초과를 확인하는 빈도를 설정합니다. 기본적으로 Camel은 초당 한 번 확인합니다. 그러나 시간 초과가 발생할 때 더 빠르게 대응해야 하는 경우 이 간격을 낮추어 더 자주 확인할 수 있습니다. 시간 제한은 옵션 requestTimeout에 따라 결정됩니다. | 1000 | long |
| transferExchange (advanced) | 당신은 단지 바디와 헤더 대신 전선을 통해 교환을 전송할 수 있습니다. 다음 필드가 전송됩니다. 본문, 외부 본문, Fault 본문, 헤더, 외부 헤더, Fault 헤더, 교환 속성, 교환 예외. 이렇게 하려면 개체가 직렬화 가능 해야 합니다.This requires that the objects are serializable. Camel은 non-serializable 오브젝트를 제외하고 WARN 수준에서 로깅합니다. 제작자와 소비자 측에서 이 옵션을 모두 활성화해야 하므로 Camel은 페이로드가 Exchange이고 일반 페이로드가 아닌 Exchange임을 알고 있습니다. | false | boolean |
| transferException (advanced) | 활성화되고 소비자 측면에서 Request Reply messaging(InOut)을 사용하고 Exchange 실패를 사용하는 경우 원인 Exception이 다시 javax.jms.ObjectMessage로 응답으로 다시 전송됩니다. 클라이언트가 Camel인 경우 반환된 Exception은 rethrown입니다. 이를 통해 라우팅에서 Camel JMS를 브리지로 사용할 수 있습니다. 예를 들어 영구 대기열을 사용하여 강력한 라우팅을 활성화할 수 있습니다. 또한 transferExchange를 사용하도록 설정한 경우 이 옵션이 우선합니다. catch 예외는 직렬화 가능 해야 합니다.The caught exception is required to be serializable. 소비자 측의 원래 예외는 생산자로 반환될 때 org.apache.camel.RuntimeCamelException과 같은 외부 예외로 래핑될 수 있습니다. | false | boolean |
| transferFault (advanced) | 활성화된 경우 Request Reply messaging (InOut)을 사용하고 Exchange가 소비자 측에서 SOAP 오류 ( exception 아님)와 함께 실패한 경우 MessageisFault()의 오류 플래그는 키 org.apache.camel.component.jmsConstel.jms.JmsConstConstantJMS_TRANSTER_FATER_FATER_FATER_FATER_FATER_FATER_FATER_JMST_FATER_FAT 클라이언트가 Camel인 경우 반환된 fault 플래그가 링크 org.apache.camel.MessagesetFault(boolean)에 설정됩니다. Cxf 또는 Spring-ws와 같은 SOAP과 같은 결함을 지원하는 Camel 구성 요소를 사용할 때 이를 활성화할 수 있습니다. | false | boolean |
| jmsOperations (advanced) | org.springframework.jms.core.JmsOperations 인터페이스의 자체 구현을 사용할 수 있습니다. Camel은 JmsTemplate을 기본값으로 사용합니다. 테스트 목적으로 사용할 수 있지만 스프링 API 문서에 명시된 대로 많이 사용되지는 않습니다. | JmsOperations | |
| destinationResolver (advanced) | 고유한 확인자를 사용할 수 있는 플러그형 org.springframework.jms.support.DestinationResolver(예: JNDI 레지스트리에서 실제 대상을 조회하기 위해). | DestinationResolver | |
| replyToType (producer) | 를 사용하면 JMS를 통해 요청/reply를 수행할 때 replyTo 큐에 사용할 유형의 전략을 명시적으로 지정할 수 있습니다. 가능한 값은 임시, 공유 또는 제외입니다. 기본적으로 Camel은 임시 대기열을 사용합니다. 그러나 replyTo가 구성된 경우 기본적으로 Shared가 사용됩니다. 이 옵션을 사용하면 공유 대기열 대신 전용 대기열을 사용할 수 있습니다. 자세한 내용은 Camel JMS 설명서를 참조하십시오. 특히 클러스터형 환경에서 실행 중인 경우 미치는 영향에 대한 참고 사항 및 공유 응답 대기열이 대체 시간 및 필수 값보다 성능이 낮다는 사실에서 참조하십시오. | ReplyToType | |
| preserveMessageQos (producer) | JMS 끝점의 QoS 설정이 아니라 메시지에 지정된 QoS 설정을 사용하여 메시지를 보내려면 true로 설정합니다. 다음 세 가지 헤더는 JMSPriority, JMSDeliveryMode 및 JMSExpiration으로 간주됩니다. 전부 또는 일부만 제공할 수 있습니다. 제공되지 않는 경우 Camel은 엔드포인트의 값을 사용하도록 대체합니다. 따라서 이 옵션을 사용하면 헤더가 끝점의 값을 재정의합니다. 반면 explicitQosEnabled 옵션은 메시지 헤더의 값이 아닌 끝점에 설정된 옵션만 사용합니다. | false | boolean |
| asyncConsumer (Consumer) | JmsConsumer가 Exchange를 비동기적으로 처리하는지 여부입니다. 활성화된 경우 JmsConsumer는 이전 메시지가 비동기적으로(Asynchronous Routing Engine에 의해) 비동기적으로 처리되는 동안 JMS 대기열에서 다음 메시지를 선택할 수 있습니다. 즉, 메시지가 100% 엄격하게 정렬되어 처리되지 않을 수 있습니다. 비활성화된 경우 Exchange는 JmsConsumer가 JMS 대기열에서 다음 메시지를 선택하기 전에 완전히 처리됩니다. 트랜잭션이 활성화된 경우 트랜잭션이 동기적으로 실행되어야 하므로 비동기Consumer=true가 비동기적으로 실행되지 않습니다(Camel 3.0은 비동기 트랜잭션을 지원할 수 있음). | false | boolean |
| allownullBody (producer) | 본문 없이 메시지를 보낼 수 있는지 여부입니다. 이 옵션이 false이고 메시지 본문이 null이면 JMSException이 발생합니다. | true | boolean |
| includeSentJMS MessageID (producer) | InOnly(예: fire 및 forget)를 사용하여 JMS 대상으로 보낼 때만 적용됩니다. 이 옵션을 사용하면 메시지가 JMS 대상으로 전송될 때 JMS 클라이언트에서 사용하는 실제 JMSMessageID로 Camel Exchange가 강화됩니다. | false | boolean |
| include allJMSX Properties (advanced) | JMS에서 Camel Message로 매핑할 때 모든 JMSXxxx 속성을 포함할지 여부입니다. 이 값을 true로 설정하면 JMSXAppID 및 JMSXUserID 등과 같은 속성이 포함됩니다. 참고: 사용자 지정 headerFilterStrategy를 사용하는 경우 이 옵션이 적용되지 않습니다. | false | boolean |
| defaultTaskExecutor 유형 (consumer) | 소비자 끝점과 생산자 끝점의 ReplyTo 소비자 모두에 대해 DefaultMessageListenerContainer에서 사용할 기본 TaskExecutor 유형을 지정합니다. 가능한 값: SimpleAsync (SAP의 SimpleAsyncTaskExecutor) 또는 ThreadPool (s Spring의 ThreadPoolTaskExecutor 사용) - 캐시된 threadpool-like입니다. 설정하지 않으면 기본적으로 소비자 엔드포인트에 대해 캐시된 스레드 풀을 사용하고 응답 소비자에게 SimpleAsync를 사용하는 이전 동작으로 설정됩니다. ThreadPool은 동적으로 늘어나고 동시 소비자를 줄이는 탄력적 구성의 스레드 쓰레기를 줄이는 것이 좋습니다. | DefaultTaskExecutor Type | |
| jmsKeyFormatStrategy (advanced) | JMS 사양을 준수하는 데 사용할 수 있도록 JMS 키를 인코딩 및 디코딩하는 플러그인 전략입니다. Camel은 기본 및 패스스루의 두 가지 구현을 제공합니다. 기본 전략은 점과 하이픈을 안전하게 마샬링합니다(. 및 -). 통과 전략은 다음과 같이 키를 남겨 둡니다. JMS 헤더 키에 불법 문자가 포함되어 있는지 여부를 고려하지 않는 JMS 브로커에 사용할 수 있습니다. org.apache.camel.component.jms.JmsKeyFormatStrategy의 자체 구현을 제공하고 표기법을 사용하여 참조할 수 있습니다. | JmsKeyFormatStrategy | |
| additional Headers(producer) 허용 | 이 옵션은 JMS 사양에 따라 유효하지 않은 값이 있을 수 있는 추가 헤더를 허용하는 데 사용됩니다. 예를 들어 WMQ와 같은 일부 메시지 시스템은 바이트 배열 또는 기타 잘못된 유형의 값이 포함된 접두사 JMS_IBM_MQMD_를 사용하여 헤더 이름으로 이 작업을 수행합니다. 여러 헤더 이름을 쉼표로 구분하여 지정하고 와일드카드 일치에 접미사로 사용할 수 있습니다. | 문자열 | |
| queueBrowseStrategy (advanced) | 큐를 탐색할 때 사용자 정의 QueueBrowseStrategy 사용 | QueueBrowseStrategy | |
| messageCreatedStrategy (advanced) | Camel이 JMS 메시지를 보낼 때 Camel이 javax.jms.Message 오브젝트의 새 인스턴스를 생성할 때 호출되는 지정된 MessageCreatedStrategy를 사용합니다. | MessageCreatedStrategy | |
| waitForrelationToBeUpdated Counter (advanced) | JMS를 통해 요청/응답할 때 및 useMessageIDAsCorrelationID 옵션이 활성화된 경우 provisional correlation id가 실제 상관 관계 ID로 업데이트될 때까지 대기하는 횟수입니다. | 50 | int |
| waitForrelationToBeUpdated ThreadSleepingTime (advanced) | 프로비저닝 상관 ID가 업데이트될 때까지 기다리는 동안 밀리코어가 잠기지 않는 간격입니다. | 100 | long |
| correlationProperty (producer) | 이 JMS 속성을 사용하여 JMSCorrelationID 속성 대신 InOut exchange 패턴(request-reply) 메시지의 상관 관계를 유지할 수 있습니다. 이렇게 하면 JMSCorrelationID JMS 속성을 사용하여 메시지의 상관 관계가 없는 시스템과 메시지를 교환할 수 있습니다. 사용된 JMSCorrelationID는 Camel에 의해 사용되거나 설정되지 않습니다. 이 속성의 값은 동일한 이름의 메시지 헤더에 제공되지 않는 경우 생성됩니다. | 문자열 | |
| SubscriptionDurable (consumer) | 서브스크립션의 내구성을 유지할지 여부를 설정합니다. 사용할 내구성 서브스크립션 이름은 subscriptionName 속성을 통해 지정할 수 있습니다. 기본값은 false입니다. 일반적으로 subscriptionName 값과 함께 사용 가능한 서브스크립션을 등록하려면 true로 설정합니다(메시지 리스너 클래스 이름이 서브스크립션 이름으로 충분하지 않은 경우). 주제(pub-sub 도메인)를 청취할 때만 의미가 있으므로 이 방법은 pubSubDomain 플래그를 전환합니다. | false | boolean |
| subscriptionShared (consumer) | 서브스크립션을 공유할지 여부를 설정합니다. 사용할 공유 서브스크립션 이름은 subscriptionName 속성을 통해 지정할 수 있습니다. 기본값은 false입니다. 일반적으로 subscriptionName 값과 함께 공유 서브스크립션을 등록하려면 true로 설정합니다(메시지 리스너 클래스 이름이 서브스크립션 이름으로 충분하지 않은 경우). 공유 서브스크립션도 내구성이 있을 수 있으므로 이 플래그도 subscriptionDurable과 결합될 수 있습니다. 주제(pub-sub 도메인)를 청취할 때만 의미가 있으므로 이 방법은 pubSubDomain 플래그를 전환합니다. JMS 2.0 호환 메시지 브로커가 필요합니다. | false | boolean |
| subscriptionName (consumer) | 생성할 서브스크립션의 이름을 설정합니다. 공유 또는 내구성이 있는 주제(pub-sub 도메인)의 경우 적용됩니다. 서브스크립션 이름은 이 클라이언트의 JMS 클라이언트 ID 내에서 고유해야 합니다. 기본값은 지정된 메시지 리스너의 클래스 이름입니다. 참고: JMS 2.0이 필요한 공유 서브스크립션을 제외하고 각 서브스크립션에 대해 1개의 동시 소비자(이 기본값은 이 메시지 리스너 컨테이너)만 허용됩니다. | 문자열 | |
| streamMessageType Enabled (producer) | StreamMessage 유형이 활성화되어 있는지 여부를 설정합니다. 파일, InputStream 등과 같은 스트리밍 종류의 메시지 페이로드는 BytesMessage 또는 StreamMessage로 전송됩니다. 이 옵션은 사용할 유형을 제어합니다. 기본적으로 BytesMessage는 전체 메시지 페이로드를 메모리로 읽어오도록 적용하는 데 사용됩니다. 이 옵션을 활성화하면 메시지 페이로드가 청크의 메모리에 판독되고 각 청크는 더 이상 데이터가 없을 때까지 StreamMessage에 작성됩니다. | false | boolean |
| formatDateHeadersTo Iso8601 (producer) | ISO 8601 표준에 따라 날짜 헤더를 포맷해야 하는지 여부를 설정합니다. | false | boolean |
| headerFilterStrategy (filter) | 사용자 지정 org.apache.camel.spi.HeaderFilterStrategy를 사용하여 Camel 메시지로 헤더를 필터링하려면 다음을 수행합니다. | HeaderFilterStrategy | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AMQP 엔드포인트는 URI 구문을 사용하여 구성됩니다.
amqp:destinationType:destinationName
다음 경로 및 쿼리 매개변수를 사용합니다.
5.2.1. 경로 매개 변수(2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| destinationType | 사용할 대상의 종류 | queue | 문자열 |
| destinationName | 대상으로 사용할 큐 또는 항목의 이름입니다.The name of the queue or topic to use as destination | 문자열 |
5.2.2. 쿼리 매개변수(91 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| clientID( 일반) | 사용할 JMS 클라이언트 ID를 설정합니다. 이 값은 지정된 경우 고유해야 하며 단일 JMS 연결 인스턴스에서만 사용할 수 있습니다. 일반적으로 내구성 주제 서브스크립션에만 필요합니다. Apache ActiveMQ를 사용하는 경우 대신 가상 주제를 사용할 수 있습니다. | 문자열 | |
| ConnectionFactory (일반) | 사용할 연결 팩토리입니다. 구성 요소 또는 끝점에서 연결 팩토리를 구성해야 합니다. | ConnectionFactory | |
| disableReplyTo (common) | Camel이 메시지의 JMSReplyTo 헤더를 무시할지 여부를 지정합니다. true인 경우 Camel은 JMSReplyTo 헤더에 지정된 대상으로 회신을 다시 보내지 않습니다. Camel을 경로에서 사용하고 Camel이 자동으로 응답 메시지를 처리하므로 응답 메시지를 처리하도록 하려면 이 옵션을 사용할 수 있습니다. Camel을 다른 메시지 브로커 간에 프록시로 사용하고 한 시스템에서 다른 시스템으로 메시지를 라우팅하려는 경우에도 이 옵션을 사용할 수 있습니다. | false | boolean |
| durableSubscriptionName (common) | 내구성 주제 서브스크립션을 지정하기 위한 내구성 있는 구독자 이름입니다. clientId 옵션도 구성해야 합니다. | 문자열 | |
| jmsMessageType (common) | JMS 메시지를 전송하기 위해 특정 javax.jms.Message 구현을 강제로 사용할 수 있습니다. 가능한 값은 Bytes, Map, Object, Stream, Text입니다. 기본적으로 Camel은 본문 유형에서 사용할 JMS 메시지 유형을 결정합니다. 이 옵션을 사용하면 지정할 수 있습니다. | JmsMessageType | |
| testConnectionOnStartup (일반) | 시작 시 연결을 테스트할지 여부를 지정합니다.Specifies whether to test the connection on startup. 이를 통해 Camel이 모든 JMS 소비자가 JMS 브로커에 대한 유효한 연결을 시작하게 합니다. 연결을 허용할 수 없는 경우 Camel은 시작 시 예외를 throw합니다. 이렇게 하면 Camel이 실패한 연결로 시작되지 않습니다. JMS 생산자도 테스트 중입니다. | false | boolean |
| acknowledgementModeName (consumer) | SESSION_TRANSACTED, CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE 중 하나인 JMS 승인 이름 | AUTO_ ACKNOWLEDGE | 문자열 |
| asyncConsumer (Consumer) | JmsConsumer가 Exchange를 비동기적으로 처리하는지 여부입니다. 활성화된 경우 JmsConsumer는 이전 메시지가 비동기적으로(Asynchronous Routing Engine에 의해) 비동기적으로 처리되는 동안 JMS 대기열에서 다음 메시지를 선택할 수 있습니다. 즉, 메시지가 100% 엄격하게 정렬되어 처리되지 않을 수 있습니다. 비활성화된 경우 Exchange는 JmsConsumer가 JMS 대기열에서 다음 메시지를 선택하기 전에 완전히 처리됩니다. 트랜잭션이 활성화된 경우 트랜잭션이 동기적으로 실행되어야 하므로 비동기Consumer=true가 비동기적으로 실행되지 않습니다(Camel 3.0은 비동기 트랜잭션을 지원할 수 있음). | false | boolean |
| AutoStartup (consumer) | 소비자 컨테이너가 자동으로 시작되어야 하는지 여부를 지정합니다. | true | boolean |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| cacheLevel (consumer) | 기본 JMS 리소스의 ID별 캐시 수준을 설정합니다. 자세한 내용은 cacheLevelName 옵션을 참조하십시오. | int | |
| cacheLevelName (consumer) | 기본 JMS 리소스의 이름으로 캐시 수준을 설정합니다. 가능한 값은 CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER, CACHE_NONE 및 CACHE_SESSION입니다. 기본 설정은 CACHE_AUTO입니다. 자세한 내용은 Spring 문서 및 트랜잭션 캐시 수준을 참조하십시오. | CACHE_AUTO | 문자열 |
| concurrentConsumers (consumer) | JMS에서 사용할 때 기본 동시 소비자 수를 지정합니다( JMS를 통한 요청/복제용 아님). 스레드의 동적 확장/다운을 제어하려면 maxMessagesPerTask 옵션도 참조하십시오. JMS를 통해 요청/응답 시 replyToConcurrentConsumers 옵션은 응답 메시지 리스너에서 동시 소비자 수를 제어하는 데 사용됩니다. | 1 | int |
| maxConcurrentConsumers (Consumer) | JMS에서 사용할 때 최대 동시 소비자 수를 지정합니다( JMS를 통한 요청/복제용 아님). 스레드의 동적 확장/다운을 제어하려면 maxMessagesPerTask 옵션도 참조하십시오. JMS를 통해 요청/응답 시 replyToMaxConcurrentConsumers 옵션은 응답 메시지 리스너에서 동시 소비자 수를 제어하는 데 사용됩니다. | int | |
| 응답 대상 (consumer) | Message.getJMSReplyTo()의 들어오는 값을 재정의하는 명시적 ReplyTo 대상을 제공합니다. | 문자열 | |
| replyToDeliveryPersistent (consumer) | 응답에 대해 기본적으로 영구 전달을 사용할지 여부를 지정합니다. | true | boolean |
| 선택기 (소비자) | 사용할 JMS 선택기 설정 | 문자열 | |
| SubscriptionDurable (consumer) | 서브스크립션의 내구성을 유지할지 여부를 설정합니다. 사용할 내구성 서브스크립션 이름은 subscriptionName 속성을 통해 지정할 수 있습니다. 기본값은 false입니다. 일반적으로 subscriptionName 값과 함께 사용 가능한 서브스크립션을 등록하려면 true로 설정합니다(메시지 리스너 클래스 이름이 서브스크립션 이름으로 충분하지 않은 경우). 주제(pub-sub 도메인)를 청취할 때만 의미가 있으므로 이 방법은 pubSubDomain 플래그를 전환합니다. | false | boolean |
| subscriptionName (consumer) | 생성할 서브스크립션의 이름을 설정합니다. 공유 또는 내구성이 있는 주제(pub-sub 도메인)의 경우 적용됩니다. 서브스크립션 이름은 이 클라이언트의 JMS 클라이언트 ID 내에서 고유해야 합니다. 기본값은 지정된 메시지 리스너의 클래스 이름입니다. 참고: JMS 2.0이 필요한 공유 서브스크립션을 제외하고 각 서브스크립션에 대해 1개의 동시 소비자(이 기본값은 이 메시지 리스너 컨테이너)만 허용됩니다. | 문자열 | |
| subscriptionShared (consumer) | 서브스크립션을 공유할지 여부를 설정합니다. 사용할 공유 서브스크립션 이름은 subscriptionName 속성을 통해 지정할 수 있습니다. 기본값은 false입니다. 일반적으로 subscriptionName 값과 함께 공유 서브스크립션을 등록하려면 true로 설정합니다(메시지 리스너 클래스 이름이 서브스크립션 이름으로 충분하지 않은 경우). 공유 서브스크립션도 내구성이 있을 수 있으므로 이 플래그도 subscriptionDurable과 결합될 수 있습니다. 주제(pub-sub 도메인)를 청취할 때만 의미가 있으므로 이 방법은 pubSubDomain 플래그를 전환합니다. JMS 2.0 호환 메시지 브로커가 필요합니다. | false | boolean |
| acceptMessages whileeStopping (consumer) | 소비자가 중지되는 동안 메시지를 수락하는지 여부를 지정합니다. 대기열에 포함된 메시지가 여전히 있는 동안 런타임에 JMS 경로를 시작하고 중지하는 경우 이 옵션을 활성화할 수 있습니다. 이 옵션이 false이고 JMS 경로를 중지하면 메시지가 거부될 수 있으며 JMS 브로커는 재전송을 시도해야 하지만 다시 거부될 수 있으며 결국 메시지가 JMS 브로커의 dead letter 큐에서 이동될 수 있습니다. 이 옵션을 사용하려면 이 옵션을 사용하는 것이 좋습니다. | false | boolean |
| allowReplyManagerQuickStop (consumer) | 요청-reply 메시징에 대해 응답 관리자에게 사용되는 DefaultMessageListenerContainer에서 사용되는지 여부에 따라 JmsConfigurationisAcceptMessagesWhileStopping이 활성화되어 있고 org.apache.camel.CamelContext가 현재 중지되는 경우 DefaultMessageListenerContainer.runningAllowed 플래그를 빠르게 중지할 수 있습니다. 이 빠른 중지 기능은 일반 JMS 소비자에서 기본적으로 활성화되어 있지만 응답 관리자를 위해 이 플래그를 활성화해야 합니다. | false | boolean |
| consumerType (consumer) | 사용할 소비자 유형은 Simple, Default 또는 Custom 중 하나일 수 있습니다. 소비자 유형은 사용할 Spring JMS 리스너를 결정합니다. 기본값은 org.springframework.jms.listener.DefaultMessageListenerContainer를 사용하며 Simple은 org.springframework.jms.listener.SimpleMessageListenerContainer를 사용합니다. Custom이 지정되면 messageListenerContainerFactory 옵션에 의해 정의된 MessageListenerContainerFactory는 사용할 org.springframework.jms.listener.AbstractMessageListenerContainer를 결정합니다. | 기본값 | ConsumerType |
| defaultTaskExecutorType (consumer) | 소비자 끝점과 생산자 끝점의 ReplyTo 소비자 모두에 대해 DefaultMessageListenerContainer에서 사용할 기본 TaskExecutor 유형을 지정합니다. 가능한 값: SimpleAsync (SAP의 SimpleAsyncTaskExecutor) 또는 ThreadPool (s Spring의 ThreadPoolTaskExecutor 사용) - 캐시된 threadpool-like입니다. 설정하지 않으면 기본적으로 소비자 엔드포인트에 대해 캐시된 스레드 풀을 사용하고 응답 소비자에게 SimpleAsync를 사용하는 이전 동작으로 설정됩니다. ThreadPool은 동적으로 늘어나고 동시 소비자를 줄이는 탄력적 구성의 스레드 쓰레기를 줄이는 것이 좋습니다. | DefaultTaskExecutor Type | |
| eagerLoadingOfProperties (consumer) | 메시지가 로드되는 즉시 JMS 속성 및 페이로드를 신속하게 로드할 수 있습니다. 이 경우 JMS 속성이 필요하지 않기 때문에 일반적으로 비효율적일 수 있지만 기본 JMS 공급자 및 JMS 속성의 사용 문제를 조기에 포착할 수 있습니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| exposeListenerSession (consumer) | 메시지를 사용할 때 리스너 세션을 노출해야 하는지 여부를 지정합니다. | false | boolean |
| replyToSameDestination Allowed (consumer) | JMS 소비자가 소비자가 사용할 때 사용하는 것과 동일한 대상으로 응답 메시지를 보낼 수 있는지 여부입니다. 이를 통해 무한 루프를 사용하지 않도록 하고 동일한 메시지를 자체에 보냅니다.This prevents an endless loop by consuming and sending back the same message to itself. | false | boolean |
| taskExecutor (consumer) | 메시지를 사용하기 위한 사용자 지정 작업 executor를 지정할 수 있습니다. | TaskExecutor | |
| deliveryMode (producer) | 사용할 전달 모드를 지정합니다. 가능한 값은 javax.jms.DeliveryMode에서 정의한 값입니다. NON_PERSISTENT = 1 및 PERSISTENT = 2. | 정수 | |
| deliveryPersistent (producer) | 기본적으로 영구 제공이 사용되는지 여부를 지정합니다. | true | boolean |
| explicitQosEnabled (producer) | 메시지를 보낼 때 서비스의 deliveryMode, 우선순위 또는 timeToLive 특성을 사용해야 하는 경우 설정합니다. 이 옵션은 Spring의 JmsTemplate을 기반으로 합니다. deliveryMode, priority 및 timeToLive 옵션이 현재 엔드포인트에 적용됩니다. 이는 메시지 세분화에서 작동하는 preserveMessageQos 옵션과 달리 Camel In 메시지 헤더에서만 QoS 속성을 읽습니다. | false | 부울 |
| formatDateHeadersToIso8601 (producer) | ISO 8601 표준에 따라 JMS 날짜 속성을 포맷해야 하는지 여부를 설정합니다. | false | boolean |
| preserveMessageQos (producer) | JMS 끝점의 QoS 설정이 아니라 메시지에 지정된 QoS 설정을 사용하여 메시지를 보내려면 true로 설정합니다. 다음 세 가지 헤더는 JMSPriority, JMSDeliveryMode 및 JMSExpiration으로 간주됩니다. 전부 또는 일부만 제공할 수 있습니다. 제공되지 않는 경우 Camel은 엔드포인트의 값을 사용하도록 대체합니다. 따라서 이 옵션을 사용하면 헤더가 끝점의 값을 재정의합니다. 반면 explicitQosEnabled 옵션은 메시지 헤더의 값이 아닌 끝점에 설정된 옵션만 사용합니다. | false | boolean |
| 우선 순위 (producer) | 1보다 큰 값은 보낼 때 메시지 우선 순위를 지정합니다(여기서 0이 가장 낮은 우선 순위이고 9가 가장 높은 경우). 이 옵션을 적용하려면 explicitQosEnabled 옵션도 활성화해야 합니다. | 4 | int |
| replyToConcurrentConsumers (producer) | JMS를 통해 요청/reply를 수행할 때 기본 동시 소비자 수를 지정합니다. 스레드의 동적 확장/다운을 제어하려면 maxMessagesPerTask 옵션도 참조하십시오. | 1 | int |
| replyToMaxConcurrent Consumers (producer) | JMS에서 요청/reply를 사용할 때 최대 동시 소비자 수를 지정합니다. 스레드의 동적 확장/다운을 제어하려면 maxMessagesPerTask 옵션도 참조하십시오. | int | |
| replyToOnTimeoutMax ConcurrentConsumers (producer) | JMS를 통해 요청/reply를 사용할 때 시간 초과가 발생한 경우 계속 라우팅할 수 있는 최대 동시 소비자 수를 지정합니다. | 1 | int |
| replyToOverride (producer) | JMS 메시지에서 명시적 ReplyTo 대상을 제공하여 replyTo 설정을 재정의합니다. 메시지를 원격 대기열로 전달하고 ReplyTo 대상에서 응답 메시지를 수신하려는 경우 유용합니다. | 문자열 | |
| replyToType (producer) | 를 사용하면 JMS를 통해 요청/reply를 수행할 때 replyTo 큐에 사용할 유형의 전략을 명시적으로 지정할 수 있습니다. 가능한 값은 임시, 공유 또는 제외입니다. 기본적으로 Camel은 임시 대기열을 사용합니다. 그러나 replyTo가 구성된 경우 기본적으로 Shared가 사용됩니다. 이 옵션을 사용하면 공유 대기열 대신 전용 대기열을 사용할 수 있습니다. 자세한 내용은 Camel JMS 설명서를 참조하십시오. 특히 클러스터형 환경에서 실행 중인 경우 미치는 영향에 대한 참고 사항 및 공유 응답 대기열이 대체 시간 및 필수 값보다 성능이 낮다는 사실에서 참조하십시오. | ReplyToType | |
| requestTimeout (producer) | InOut Exchange Pattern(밀리초)을 사용할 때 응답을 기다리는 시간 초과입니다. 기본값은 20초입니다. 이 엔드포인트 구성 시간 값을 재정의하기 위해 CamelJmsRequestTimeout 헤더를 포함할 수 있으므로 메시지당 개별 시간 제한 값이 있습니다. requestTimeoutCheckerInterval 옵션도 참조하십시오. | 20000 | long |
| TimeToLive (producer) | 메시지를 보낼 때 메시지의 TTL(밀리초)을 지정합니다. | -1 | long |
| additional Headers(producer) 허용 | 이 옵션은 JMS 사양에 따라 유효하지 않은 값이 있을 수 있는 추가 헤더를 허용하는 데 사용됩니다. 예를 들어 WMQ와 같은 일부 메시지 시스템은 바이트 배열 또는 기타 잘못된 유형의 값이 포함된 접두사 JMS_IBM_MQMD_를 사용하여 헤더 이름으로 이 작업을 수행합니다. 여러 헤더 이름을 쉼표로 구분하여 지정하고 와일드카드 일치에 접미사로 사용할 수 있습니다. | 문자열 | |
| allownullBody (producer) | 본문 없이 메시지를 보낼 수 있는지 여부입니다. 이 옵션이 false이고 메시지 본문이 null이면 JMSException이 발생합니다. | true | boolean |
| alwaysCopyMessage (producer) | true인 경우 Camel은 전송을 위해 생산자에 전달될 때 항상 메시지의 JMS 메시지 사본을 만듭니다. replyToDestinationSelectorName이 설정된 경우와 같이 메시지를 복사하는 데 필요한 경우 Camel은 replyToDestinationSelectorName이 설정된 경우 alwaysCopyMessage 옵션을 true로 설정합니다. | false | boolean |
| correlationProperty (producer) | InOut 교환 패턴을 사용하는 경우 JMSCorrelationID JMS 속성 대신 이 JMS 속성을 사용하여 메시지를 서로 연관시킵니다. 설정 메시지가 이 속성의 값에만 상관되는 경우 JMSCorrelationID 속성은 무시되고 Camel에 의해 설정되지 않습니다. | 문자열 | |
| disableTimeToLive (producer) | 이 옵션을 사용하여 실행 중인 시간을 강제 비활성화하십시오. 예를 들어 JMS를 요청/재정하는 경우 Camel은 기본적으로 requestTimeout 값을 전송 중인 메시지 라이브 시간으로 사용합니다. 문제는 발신자와 수신자 시스템이 시계를 동기화해야 하므로 시계가 동기화되어 있다는 것입니다. 항상 압축하기가 쉽지는 않습니다. so you can use disableTimeToLive=true to not set a time to live value on the sent message. 그러면 메시지가 수신자 시스템에서 만료되지 않습니다. 자세한 내용은 아래 섹션을 참조하십시오. | false | boolean |
| forceSendOriginalMessage (producer) | mapJmsMessage=false Camel을 사용하면 경로 중 헤더를 만났을 때 새 JMS 대상에 보낼 새 JMS 메시지가 생성됩니다. 수신한 원래 JMS 메시지를 전송하도록 Camel을 강제 적용하려면 이 옵션을 true로 설정합니다. | false | boolean |
| includeSentJMSMessageID (producer) | InOnly(예: fire 및 forget)를 사용하여 JMS 대상으로 보낼 때만 적용됩니다. 이 옵션을 사용하면 메시지가 JMS 대상으로 전송될 때 JMS 클라이언트에서 사용하는 실제 JMSMessageID로 Camel Exchange가 강화됩니다. | false | boolean |
| replyToCacheLevelName (producer) | JMS를 통해 요청/반복을 수행할 때 응답 소비자의 이름으로 캐시 수준을 설정합니다. 이 옵션은 고정 응답 대기열(임시 아님)을 사용하는 경우에만 적용됩니다. Camel은 기본적으로 배타적 또는 공유 w/ replyToSelectorName에 대해 CACHE_CONSUMER를 사용합니다. 그리고 replyToSelectorName 없이 공유의 경우 CACHE_SESSION을 사용합니다. IBM WebSphere와 같은 일부 JMS 브로커는 작동하도록 replyToCacheLevelName=CACHE_NONE을 설정해야 할 수 있습니다. 참고: 임시 대기열을 사용하는 경우 CACHE_NONE이 허용되지 않으며 CACHE_CONSUMER 또는 CACHE_SESSION과 같은 더 높은 값을 사용해야 합니다. | 문자열 | |
| replyToDestinationSelector 이름 (producer) | 공유 대기열을 사용할 때(즉, 임시 응답 대기열을 사용하지 않는 경우) 다른 이름에서 자체 응답을 필터링할 수 있도록 사용할 고정 이름을 사용하여 JMS Selector를 설정합니다. | 문자열 | |
| streamMessageTypeEnabled (producer) | StreamMessage 유형이 활성화되어 있는지 여부를 설정합니다. 파일, InputStream 등과 같은 스트리밍 종류의 메시지 페이로드는 BytesMessage 또는 StreamMessage로 전송됩니다. 이 옵션은 사용할 유형을 제어합니다. 기본적으로 BytesMessage는 전체 메시지 페이로드를 메모리로 읽어오도록 적용하는 데 사용됩니다. 이 옵션을 활성화하면 메시지 페이로드가 청크의 메모리에 판독되고 각 청크는 더 이상 데이터가 없을 때까지 StreamMessage에 작성됩니다. | false | boolean |
| allowSerializedHeaders (advanced) | 직렬화된 헤더를 포함할지 여부를 제어합니다. 이는 transferExchange가 true인 경우에만 적용됩니다. 이렇게 하려면 개체가 직렬화 가능 해야 합니다.This requires that the objects are serializable. Camel은 non-serializable 오브젝트를 제외하고 WARN 수준에서 로깅합니다. | false | boolean |
| asyncStartListener (advanced) | 경로를 시작할 때 JmsConsumer 메시지 리스너를 비동기적으로 시작할지 여부입니다. 예를 들어 JmsConsumer가 원격 JMS 브로커에 대한 연결을 가져올 수 없는 경우 재시도 및/또는 페일오버를 시도하는 동안 차단될 수 있습니다. 이로 인해 Camel이 경로를 시작하는 동안 차단됩니다. 이 옵션을 true로 설정하면 JmsConsumer가 비동기 모드에서 전용 스레드를 사용하여 JMS 브로커에 연결하는 동안 시작 경로를 지정할 수 있습니다. 이 옵션을 사용하면 연결을 설정할 수 없는 경우 예외가 WARN 수준에서 기록되고 소비자는 메시지를 수신할 수 없습니다. 그런 다음 다시 시도하도록 경로를 다시 시작할 수 있습니다. | false | boolean |
| asyncStopListener (advanced) | 경로를 중지할 때 JmsConsumer 메시지 리스너를 비동기적으로 중지할지 여부입니다. | false | boolean |
| destinationResolver (advanced) | 고유한 확인자를 사용할 수 있는 플러그형 org.springframework.jms.support.DestinationResolver(예: JNDI 레지스트리에서 실제 대상을 조회하기 위해). | DestinationResolver | |
| errorHandler (advanced) | 메시지를 처리하는 동안 throw되지 않은 예외의 경우 호출될 org.springframework.util.ErrorHandler를 지정합니다. 기본적으로 이러한 예외는 errorHandler가 구성되지 않은 경우 WARN 수준에서 기록됩니다. 로깅 수준 및 스택 추적을 errorHandlerLoggingLevel 및 errorHandlerLogStackTrace 옵션을 사용하여 기록해야 하는지 여부를 구성할 수 있습니다. 이렇게 하면 사용자 지정 오류 처리기를 코딩하는 것보다 훨씬 쉽게 구성할 수 있습니다.This makes it much easier to configure, than having to code a custom errorHandler. | ErrorHandler | |
| exceptionListener (advanced) | 기본 JMS 예외에 대해 알림을 받을 JMS Exception Listener를 지정합니다. | ExceptionListener | |
| headerFilterStrategy (advanced) | 사용자 지정 HeaderFilterStrategy를 사용하여 Camel 메시지와의 헤더를 필터링합니다. | HeaderFilterStrategy | |
| idleConsumerLimit (advanced) | 언제든지 유휴 상태일 수 있는 소비자 수에 대한 제한을 지정합니다. | 1 | int |
| idleTaskExecutionLimit (advanced) | 수신 작업의 유휴 실행에 대한 제한을 지정하고 해당 실행 내에 메시지를 받지 못했습니다. 이 제한에 도달하면 작업이 종료되고 다른 실행 작업에 대한 수신을 그대로 둡니다(동적 스케줄링의 경우 maxConcurrentConsumers 설정을 참조). Spring에서 사용할 수 있는 추가 doc가 있습니다. | 1 | int |
| includeAllJMSXProperties (advanced) | JMS에서 Camel Message로 매핑할 때 모든 JMSXxxx 속성을 포함할지 여부입니다. 이 값을 true로 설정하면 JMSXAppID 및 JMSXUserID 등과 같은 속성이 포함됩니다. 참고: 사용자 지정 headerFilterStrategy를 사용하는 경우 이 옵션이 적용되지 않습니다. | false | boolean |
| jmsKeyFormatStrategy (advanced) | JMS 사양을 준수하는 데 사용할 수 있도록 JMS 키를 인코딩 및 디코딩하는 플러그인 전략입니다. Camel은 기본 및 패스스루의 두 가지 구현을 제공합니다. 기본 전략은 점과 하이픈을 안전하게 마샬링합니다(. 및 -). 통과 전략은 다음과 같이 키를 남겨 둡니다. JMS 헤더 키에 불법 문자가 포함되어 있는지 여부를 고려하지 않는 JMS 브로커에 사용할 수 있습니다. org.apache.camel.component.jms.JmsKeyFormatStrategy의 자체 구현을 제공하고 표기법을 사용하여 참조할 수 있습니다. | 문자열 | |
| mapJmsMessage (advanced) | Camel이 수신된 JMS 메시지를 javax.jms.TextMessage와 같은 적절한 페이로드 유형에 자동 매핑해야 하는지 여부를 문자열 등에 지정합니다. | true | boolean |
| maxMessagesPerTask (advanced) | 작업당 메시지 수입니다. -1은 무제한입니다. 동시 소비자에 범위(예: max)를 사용하는 경우 이 옵션을 사용하여 더 적은 작업이 필요할 때 소비자의 속도를 축소하는 방법을 제어하기 위해 값을 100으로 설정할 수 있습니다. | -1 | int |
| messageConverter (advanced) | 사용자 지정 Spring org.springframework.jms.support.converter.MessageConverter를 사용하려면 javax.jms.Message에 매핑할 수 있는 방법을 제어할 수 있습니다. | MessageConverter | |
| messageCreatedStrategy (advanced) | Camel이 JMS 메시지를 보낼 때 Camel이 javax.jms.Message 오브젝트의 새 인스턴스를 생성할 때 호출되는 지정된 MessageCreatedStrategy를 사용합니다. | MessageCreatedStrategy | |
| messageIdEnabled (advanced) | 전송할 때 메시지 ID를 추가해야 하는지 여부를 지정합니다. 이는 JMS 브로커에 대한 힌트일 뿐입니다. JMS 공급자가 이 힌트를 수락하는 경우 이러한 메시지에는 메시지 ID가 null로 설정되어야 합니다. 공급자가 힌트를 무시하는 경우 메시지 ID를 일반 고유 값으로 설정해야 합니다. | true | boolean |
| messageListenerContainer Factory (advanced) | 메시지를 사용하는 데 사용할 org.springframework.jms.listener.AbstractMessageListenerContainer를 결정하는 데 사용되는 MessageListenerContainer의 레지스트리 ID입니다. 이를 설정하면 consumerType이 Custom으로 자동 설정됩니다. | MessageListener ContainerFactory | |
| messageTimestampEnabled (advanced) | 메시지 전송 시 기본적으로 타임스탬프를 활성화할지 여부를 지정합니다. 이는 JMS 브로커에 대한 힌트일 뿐입니다. JMS 공급자가 이 힌트를 수락하는 경우 이러한 메시지에는 타임스탬프가 0으로 설정되어야 합니다. 공급자가 힌트를 무시하면 타임스탬프를 정규 값으로 설정해야 합니다. | true | boolean |
| pubSubNoLocal (advanced) | 자체 연결에서 게시한 메시지 배달을 금지할지 여부를 지정합니다.Specifies whether to inhibit the delivery of messages published by its own connection. | false | boolean |
| receiveTimeout (advanced) | 메시지 수신 시간(밀리초)입니다. | 1000 | long |
| 복구Interval (advanced) | 연결이 새로 고쳐질 때(즉, 밀리초) 복구 시도 사이의 간격을 지정합니다. 기본값은 5000ms, 즉 5초입니다. | 5000 | long |
| requestTimeoutChecker Interval (advanced) | Camel이 JMS를 통해 요청/반복 시 Exchange 시간 초과를 확인하는 빈도를 설정합니다. 기본적으로 Camel은 초당 한 번 확인합니다. 그러나 시간 초과가 발생할 때 더 빠르게 대응해야 하는 경우 이 간격을 낮추어 더 자주 확인할 수 있습니다. 시간 제한은 옵션 requestTimeout에 따라 결정됩니다. | 1000 | long |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| transferException (advanced) | 활성화되고 소비자 측면에서 Request Reply messaging(InOut)을 사용하고 Exchange 실패를 사용하는 경우 원인 Exception이 다시 javax.jms.ObjectMessage로 응답으로 다시 전송됩니다. 클라이언트가 Camel인 경우 반환된 Exception은 rethrown입니다. 이를 통해 라우팅에서 Camel JMS를 브리지로 사용할 수 있습니다. 예를 들어 영구 대기열을 사용하여 강력한 라우팅을 활성화할 수 있습니다. 또한 transferExchange를 사용하도록 설정한 경우 이 옵션이 우선합니다. catch 예외는 직렬화 가능 해야 합니다.The caught exception is required to be serializable. 소비자 측의 원래 예외는 생산자로 반환될 때 org.apache.camel.RuntimeCamelException과 같은 외부 예외로 래핑될 수 있습니다. | false | boolean |
| transferExchange (advanced) | 당신은 단지 바디와 헤더 대신 전선을 통해 교환을 전송할 수 있습니다. 다음 필드가 전송됩니다. 본문, 외부 본문, Fault 본문, 헤더, 외부 헤더, Fault 헤더, 교환 속성, 교환 예외. 이렇게 하려면 개체가 직렬화 가능 해야 합니다.This requires that the objects are serializable. Camel은 non-serializable 오브젝트를 제외하고 WARN 수준에서 로깅합니다. 제작자와 소비자 측에서 이 옵션을 모두 활성화해야 하므로 Camel은 페이로드가 Exchange이고 일반 페이로드가 아닌 Exchange임을 알고 있습니다. | false | boolean |
| transferFault (advanced) | 활성화된 경우 Request Reply messaging (InOut)을 사용하고 Exchange가 소비자 측에서 SOAP 오류 ( exception 아님)와 함께 실패한 경우 MessageisFault()의 오류 플래그는 키 org.apache.camel.component.jmsConstel.jms.JmsConstConstantJMS_TRANSTER_FATER_FATER_FATER_FATER_FATER_FATER_FATER_JMST_FATER_FAT 클라이언트가 Camel인 경우 반환된 fault 플래그가 링크 org.apache.camel.MessagesetFault(boolean)에 설정됩니다. Cxf 또는 Spring-ws와 같은 SOAP과 같은 결함을 지원하는 Camel 구성 요소를 사용할 때 이를 활성화할 수 있습니다. | false | boolean |
| useMessageIDAsCorrelation ID (advanced) | JMSMessageID를 항상 InOut 메시지의 JMSCorrelationID로 사용할지 여부를 지정합니다. | false | boolean |
| waitForProvisionCorrelation ToBeUpdatedCounter (advanced) | JMS를 통해 요청/응답할 때 및 useMessageIDAsCorrelationID 옵션이 활성화된 경우 provisional correlation id가 실제 상관 관계 ID로 업데이트될 때까지 대기하는 횟수입니다. | 50 | int |
| waitForProvisionCorrelation ToBeUpdatedThreadSleeping Time (advanced) | 프로비저닝 상관 ID가 업데이트될 때까지 기다리는 동안 밀리코어가 잠기지 않는 간격입니다. | 100 | long |
| errorHandlerLoggingLevel (logging) | 은 로깅되지 않은 예외에 대해 기본 errorHandler 로깅 수준을 구성할 수 있습니다. | WARN | LoggingLevel |
| errorHandlerLogStackTrace (logging) | 기본 errorHandler로 stacktrace를 기록해야 하는지 여부를 제어할 수 있습니다. | true | boolean |
| 암호 (보안) | ConnectionFactory에 사용할 암호입니다. ConnectionFactory에서 사용자 이름/암호를 직접 구성할 수도 있습니다. | 문자열 | |
| 사용자 이름 (보안) | ConnectionFactory와 함께 사용할 사용자 이름입니다. ConnectionFactory에서 사용자 이름/암호를 직접 구성할 수도 있습니다. | 문자열 | |
| 트랜잭션(Transaction acted ) | transacted 모드를 사용할지 여부를 지정합니다. | false | boolean |
| lazyCreateTransaction Manager (transaction) | true인 경우 Camel은 옵션을 transacted=true할 때 삽입된 transactionManager가 없는 경우 JmsTransactionManager를 생성합니다. | true | boolean |
| TransactionManager (transaction) | 사용할 Spring 트랜잭션 관리자입니다. | PlatformTransaction Manager | |
| transactionName (transaction) | 사용할 트랜잭션의 이름입니다. | 문자열 | |
| TransactionTimeout (transaction) | 트랜잭션 모드를 사용하는 경우 트랜잭션의 시간 초과 값(초 단위)입니다. | -1 | int |
5.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
AMQP 구성 요소가 JMS 구성 요소에서 상속되므로 전자 사용은 후자의 사용과 거의 동일합니다.
AMQP 구성 요소 사용
// Consuming from AMQP queue
from("amqp:queue:incoming").
to(...);
// Sending message to the AMQP topic
from(...).
to("amqp:topic:notify");
5.4. AMQP 구성 요소 구성 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.16.1부터 AMQPComponent#amqp10Component(String connectionURI) 팩토리 메서드를 사용하여 사전 구성된 주제 접두사가 있는 AMQP 1.0 구성 요소를 반환할 수도 있습니다.
AMQP 1.0 구성 요소 생성
AMQPComponent amqp = AMQPComponent.amqp10Component("amqp://guest:guest@localhost:5672");
Camel 2.17부터 AMQPComponent#amqp10Component(String connectionURI) 팩토리 방법(String connectionURI)의 경우 AMQPComponent#amqpComponent(String connectionURI) 를 대신하여 더 이상 사용되지 않습니다.
AMQP 1.0 구성 요소 생성
AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672");
AMQPComponent authorizedAmqp = AMQPComponent.amqpComponent("amqp://localhost:5672", "user", "password");
AMQP 구성 요소를 자동으로 구성하기 위해 Camel 2.17부터 레지스트리에 org.apache.camel.component.amqp.AMQPConnectionDetails 인스턴스를 추가할 수도 있습니다. 예를 들어 Spring Boot의 경우 빈을 정의해야 합니다.
AMQP 연결 세부 정보 자동 구성
@Bean
AMQPConnectionDetails amqpConnection() {
return new AMQPConnectionDetails("amqp://localhost:5672");
}
@Bean
AMQPConnectionDetails securedAmqpConnection() {
return new AMQPConnectionDetails("amqp://lcoalhost:5672", "username", "password");
}
마찬가지로 Camel-CDI를 사용할 때 CDI 생산자 방법을 사용할 수도 있습니다.
AMQP 연결 세부 정보 CDI의 자동 구성
@Produces
AMQPConnectionDetails amqpConnection() {
return new AMQPConnectionDetails("amqp://localhost:5672");
}
Camel 속성 을 사용하여 AMQP 연결 세부 정보를 읽을 수도 있습니다. 팩토리 방법 AMQPConnectionDetails.discoverAMQP() 는 아래 스니펫에서와 같이 Kubernetes와 유사한 규칙에서 Camel 속성을 읽으려고 합니다.
AMQP 연결 세부 정보 자동 구성
export AMQP_SERVICE_HOST = "mybroker.com"
export AMQP_SERVICE_PORT = "6666"
export AMQP_SERVICE_USERNAME = "username"
export AMQP_SERVICE_PASSWORD = "password"
...
@Bean
AMQPConnectionDetails amqpConnection() {
return AMQPConnectionDetails.discoverAMQP();
}
AMQP 관련 옵션 활성화
예를 들어, 다음 예제 와 같이 옵션을 URI에 추가하여mqp.traceFrames 를 활성화해야 합니다.
AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672?amqp.traceFrames=true");
참조는 QPID JMS 클라이언트 구성을 참조하십시오.
5.5. 주제 사용 링크 복사링크가 클립보드에 복사되었습니다!
camel-amqp 로 작업하는 주제를 사용하려면 다음과 같이 topic:// 를 주제 접두사로 사용하도록 구성 요소를 구성해야 합니다.
<bean id="amqp" class="org.apache.camel.component.amqp.AmqpComponent">
<property name="connectionFactory">
<bean class="org.apache.qpid.jms.JmsConnectionFactory" factory-method="createFromURL">
<property name="remoteURI" value="amqp://localhost:5672" />
<property name="topicPrefix" value="topic://" /> <!-- only necessary when connecting to ActiveMQ over AMQP 1.0 -->
</bean>
</property>
</bean>
AMQPComponent#amqpComponent() 메서드와 AMQPConnectionDetails 둘 다 주제 접두사로 구성 요소를 미리 구성하므로 이를 명시적으로 구성할 필요가 없습니다.
5.6. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
6장. APNS 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.8에서 사용 가능
apns 구성 요소는 iOS 장치에 알림을 보내는 데 사용됩니다. apns 구성 요소는 javapns 라이브러리를 사용합니다.
구성 요소는 Apple Push Notification Servers(APNS)에 알림을 보내고 서버에서 피드백을 사용할 수 있도록 지원합니다.
소비자는 Apple Push Notification Servers에서 때때로 피드백 스트림을 사용하는 것이 최상의 관행이기 때문에 기본적으로 3600초로 구성됩니다. 예를 들어, 서버 홍수를 방지하기 위해 1시간마다.
피드백 스트림은 비활성 장치에 대한 정보를 제공합니다. 모바일 애플리케이션이 크게 사용되지 않은 경우에만 몇 시간마다 이 정보를 얻을 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-apns</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
6.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
알림을 보내려면 다음을 수행합니다.
apns:notify[?options]
피드백을 사용하려면 다음을 수행합니다.
apns:consumer[?options]
6.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
APNS 구성 요소는 아래 나열된 두 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| apnsService (일반) | 사용할 ApnsService가 필요합니다. org.apache.camel.component.apns.factory.ApnsServiceFactory를 사용하여 ApnsService를 빌드할 수 있습니다. | ApnsService | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
APNS 끝점은 URI 구문을 사용하여 구성됩니다.
apns:name
다음 경로 및 쿼리 매개변수를 사용합니다.
6.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| name | 끝점의 이름입니다. | 문자열 |
6.2.2. 쿼리 매개변수 (20 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 토큰 (공용) | 알림하려는 장치와 관련된 토큰을 정적으로 선언하려는 경우 이 속성을 구성합니다. 토큰은 쉼표로 구분됩니다. | 문자열 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| sendEmptyMessageWhenIdle (consumer) | 폴링 소비자가 파일을 폴링하지 않은 경우 이 옵션을 활성화하여 빈 메시지( 본문 없음)를 대신 보낼 수 있습니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| pollStrategy (consumer) | 플러그형 org.apache.camel.PollingConsumerPollingStrategy를 사용하면 Camel에서 Exchange를 생성하고 라우팅하기 전에 폴링 작업 중에 일반적으로 발생한 오류 처리를 제어하는 사용자 정의 구현을 제공할 수 있습니다. | PollingConsumerPoll Strategy | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| backoffErrorThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 오류 폴링(일부 오류 발생) 수입니다. | int | |
| backoffIdleThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 유휴 폴링 수입니다. | int | |
| backoffMultiplier (scheduler) | 예약된 폴링 소비자 백오프가 연속된 여러 개의 유휴/errors가 있는 경우 해당 행에 사용할 수 있습니다. multiplier는 다음 실제 시도가 다시 발생하기 전에 건너뛸 폴링 수입니다. 이 옵션을 사용하는 경우 backoffIdleThreshold 및/또는 backoffErrorThreshold도 구성해야 합니다. | int | |
| 지연 (scheduler) | 다음 폴링보다 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 500 | long |
| greedy (scheduler) | greedy가 활성화된 경우 ScheduledPollConsumer는 이전 실행이 1개 이상의 메시지를 폴링하면 즉시 다시 실행됩니다. | false | boolean |
| initialDelay (scheduler) | 첫 번째 폴링이 시작되기 전까지의 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 1000 | long |
| runLoggingLevel (scheduler) | 소비자는 폴링할 때 시작/완료 로그 행을 기록합니다. 이 옵션을 사용하면 로깅 수준을 구성할 수 있습니다. | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 소비자에 사용할 사용자 지정/공유 스레드 풀을 구성할 수 있습니다. 기본적으로 각 소비자는 자체 스레드 스레드 풀이 있습니다. | ScheduledExecutor Service | |
| 스케줄러 (scheduler) | camel-spring 또는 camel-quartz2 구성 요소에서 cron 스케줄러를 사용하려면 | none | ScheduledPollConsumer Scheduler |
| 스케줄러 속성 (scheduler) | 사용자 지정 스케줄러 또는 Quartz2, Spring 기반 스케줄러를 사용할 때 추가 속성을 구성하려면 다음을 수행합니다. | map | |
| StartScheduler (scheduler) | 스케줄러가 자동으로 시작되어야 하는지 여부입니다. | true | boolean |
| timeUnit (scheduler) | initialDelay 및 지연 옵션의 시간 단위입니다. | 밀리초 | TimeUnit |
| UseFixedDelay (scheduler) | 고정 지연 또는 고정 속도가 사용되는 경우 제어합니다. 자세한 내용은 JDK의 ScheduledExecutorService를 참조하십시오. | true | boolean |
다음 형식 ?option=value&option=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
6.2.3. 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
ApnsComponent 는 com.notnoop.apns.ApnsService 로 구성해야 합니다. 서비스는 org.apache.camel.component.apns.factory.ApnsServiceFactory 를 사용하여 생성하고 구성할 수 있습니다. 예제는 아래를 참조하십시오. 또한 테스트 소스 코드에서 도 마찬가지입니다.
6.2.3.1. SSL 설정 링크 복사링크가 클립보드에 복사되었습니다!
보안 연결을 사용하려면 구성 요소를 구성하는 데 사용되는 org.apache.camel.jsse.jsse.SSLContextParameters 의 인스턴스를 org.apache.camel.component.apns.factory.ApnsServiceFactory 에 삽입해야 합니다. 예제는 테스트 리소스를 참조하십시오. SSL 예
6.3. 교환 데이터 형식 링크 복사링크가 클립보드에 복사되었습니다!
Camel이 비활성 장치에 해당하는 피드백 데이터를 가져오면 InactiveDevice 오브젝트 목록을 검색합니다. 검색된 목록의 각 InactiveDevice 오브젝트는 본문으로 설정된 다음 소비자 끝점에서 처리합니다.
6.4. 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
Camel Apns는 이러한 헤더를 사용합니다.
| 속성 | 기본값 | 설명 |
|---|---|---|
|
| 기본적으로 비어 있습니다. | |
|
|
| 메시지 유형에 대해 PAYLOAD를 선택하는 경우, 메시지가 APNS 페이로드로 간주되고 그대로 전송됩니다. STRING을 선택하면 메시지가 APNS 페이로드로 변환됩니다. Camel 2.16 에서 APNS_NOTIFICATION은 메시지 본문을 com.notnoop.apns.ApnsNotification 유형으로 보내는 데 사용됩니다. |
6.5. ApnsServiceFactory 빌더 콜백 링크 복사링크가 클립보드에 복사되었습니다!
ApnsServiceFactory 에는 기본 ApnsServiceBuilder 인스턴스를 구성(또는 대체)하는 데 사용할 수 있는 빈 콜백 메서드가 제공됩니다. 메서드의 서명은 다음과 같이 나타날 수 있습니다.
protected ApnsServiceBuilder configureServiceBuilder(ApnsServiceBuilder serviceBuilder);
다음과 같이 사용할 수 있습니다.
ApnsServiceFactory proxiedApnsServiceFactory = new ApnsServiceFactory(){
@Override
protected ApnsServiceBuilder configureServiceBuilder(ApnsServiceBuilder serviceBuilder) {
return serviceBuilder.withSocksProxy("my.proxy.com", 6666);
}
};
6.6. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
6.6.1. Camel Xml 경로 링크 복사링크가 클립보드에 복사되었습니다!
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<!-- Replace by desired values -->
<bean id="apnsServiceFactory" class="org.apache.camel.component.apns.factory.ApnsServiceFactory">
<!-- Optional configuration of feedback host and port -->
<!-- <property name="feedbackHost" value="localhost" /> -->
<!-- <property name="feedbackPort" value="7843" /> -->
<!-- Optional configuration of gateway host and port -->
<!-- <property name="gatewayHost" value="localhost" /> -->
<!-- <property name="gatewayPort" value="7654" /> -->
<!-- Declaration of certificate used -->
<!-- from Camel 2.11 onwards you can use prefix: classpath:, file: to refer to load the certificate from classpath or file. Default it classpath -->
<property name="certificatePath" value="certificate.p12" />
<property name="certificatePassword" value="MyCertPassword" />
<!-- Optional connection strategy - By Default: No need to configure -->
<!-- Possible options: NON_BLOCKING, QUEUE, POOL or Nothing -->
<!-- <property name="connectionStrategy" value="POOL" /> -->
<!-- Optional pool size -->
<!-- <property name="poolSize" value="15" /> -->
<!-- Optional connection strategy - By Default: No need to configure -->
<!-- Possible options: EVERY_HALF_HOUR, EVERY_NOTIFICATION or Nothing (Corresponds to NEVER javapns option) -->
<!-- <property name="reconnectionPolicy" value="EVERY_HALF_HOUR" /> -->
</bean>
<bean id="apnsService" factory-bean="apnsServiceFactory" factory-method="getApnsService" />
<!-- Replace this declaration by wanted configuration -->
<bean id="apns" class="org.apache.camel.component.apns.ApnsComponent">
<property name="apnsService" ref="apnsService" />
</bean>
<camelContext id="camel-apns-test" xmlns="http://camel.apache.org/schema/spring">
<route id="apns-test">
<from uri="apns:consumer?initialDelay=10&delay=3600&timeUnit=SECONDS" />
<to uri="log:org.apache.camel.component.apns?showAll=true&multiline=true" />
<to uri="mock:result" />
</route>
</camelContext>
</beans>
6.6.2. Camel Java 경로 링크 복사링크가 클립보드에 복사되었습니다!
camel 컨텍스트 생성 및 프로그래밍 방식으로 apns 구성 요소 선언
protected CamelContext createCamelContext() throws Exception {
CamelContext camelContext = super.createCamelContext();
ApnsServiceFactory apnsServiceFactory = new ApnsServiceFactory();
apnsServiceFactory.setCertificatePath("classpath:/certificate.p12");
apnsServiceFactory.setCertificatePassword("MyCertPassword");
ApnsService apnsService = apnsServiceFactory.getApnsService(camelContext);
ApnsComponent apnsComponent = new ApnsComponent(apnsService);
camelContext.addComponent("apns", apnsComponent);
return camelContext;
}
[[APNS-ApnsProducer-iOStargetdevicedynamicallyconfiguredviaheader:"CamelApnsTokens"] 헤더를 통해 동적으로 구성된 ApnsProducer - iOS 대상 장치: "CamelApnsTokens""
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
public void configure() throws Exception {
from("direct:test")
.setHeader(ApnsConstants.HEADER_TOKENS, constant(IOS_DEVICE_TOKEN))
.to("apns:notify");
}
}
}
ApnsProducer - iOS 대상 장치는 uri을 통해 정적으로 구성
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
public void configure() throws Exception {
from("direct:test").
to("apns:notify?tokens=" + IOS_DEVICE_TOKEN);
}
};
}
ApnsConsumer
from("apns:consumer?initialDelay=10&delay=3600&timeUnit=SECONDS")
.to("log:com.apache.camel.component.apns?showAll=true&multiline=true")
.to("mock:result");
6.7. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- 구성 요소
- 엔드 포인트 * APNS (in french) 사용에 대한블로그
7장. ASN.1 파일 데이터 형식 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.20에서 사용 가능
ASN.1 Data Format Data Format [Intoduction to ASN.1](https://www.itu.int/en/ITU-T/asn1/Pages/introduction.aspx는 Bouncy Castle의 bcprov-jdk15on 라이브러리 및 jASN-jdk15on 라이브러리 및 jASN.1의 Java 컴파일러를 기반으로 하는 Camel 프레임워크의 데이터 형식 구현입니다. 메시지는 unmarshalled(단순 Java POJO에 대한 버전)에서 일반 Java 오브젝트에 적용할 수 있습니다. Camel의 라우팅 엔진 및 데이터 변환의 도움으로 POJO를 사용하여 사용자 지정 포맷을 적용하고 다른 Camel 구성 요소를 호출하여 메시지를 업스트림 시스템으로 변환 및 전송할 수 있습니다.
7.1. ASN.1 데이터 형식 옵션 링크 복사링크가 클립보드에 복사되었습니다!
ASN.1 File dataformat은 아래 나열된 세 가지 옵션을 지원합니다.
| 이름 | 기본값 | Java Type | 설명 |
|---|---|---|---|
| usingIterator |
|
| asn1 파일에 하나 이상의 항목이 있는 경우 이 옵션을 true로 설정하면 splitter EIP로 작업할 수 있으며 스트리밍 모드에서 반복기를 사용하여 데이터를 분할할 수 있습니다. |
| clazzName |
| unmarshalling할 때 사용할 클래스의 이름 | |
| contentTypeHeader |
|
| 데이터 형식이 데이터 형식에서 수행할 수 있는 경우 데이터 형식의 유형으로 Content-Type 헤더를 설정해야 하는지 여부입니다. 예를 들어 데이터 형식을 XML로 마샬링하거나, JSon으로 마샬링되는 데이터 형식에 대한 application/json 등이 있습니다. |
7.2. unmarshal 링크 복사링크가 클립보드에 복사되었습니다!
해상 ASN.1 구조화된 메시지를 압축 해제하는 방법에는 세 가지가 있습니다. (일반적으로 바이너리 파일)
이 첫 번째 예제에서는 OutputStream에 대한marshal BER 파일 페이로드를 생략하고 mock 엔드포인트로 보냅니다.
from("direct:unmarshal").unmarshal(asn1).to("mock:unmarshal");
두 번째 예제에서는 Split EIP를 사용하여 바이트 배열에 대한marshal BER 파일 페이로드를 해제합니다. Split EIP를 적용하는 이유는 일반적으로 각 BER 파일 또는 (ASN.1 구조화된 파일)에 처리 할 여러 레코드가 포함되어 있으며 Split EIP는 실제로 ASN1Primitive의 인스턴스 (Bunastle의 ASN 사용)인 바이트 배열로 파일의 각 레코드를 가져오는 데 도움이 되기 때문입니다. 1 bcprov-jdk15on 라이브러리의 지원) Byte 배열은 (ASN1Primitive.fromByteArray)의 공용 정적 메서드의 도움으로 ASN1Primitive로 변환될 수 있습니다. Iter ator=true를 사용하여설정해야 합니다.
from("direct:unmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:unmarshal");
마지막 예제에서는 Split EIP를 사용하는 기존 Java 객체에 대한marshal BER 파일 페이로드를 해제합니다. Split EIP를 적용하는 이유는 이미 이전 예제에서 언급되어 있습니다. 그 이유를 염두에 두십시오. 이 예제에서는 또한 클래스의 정규화된 이름 또는 데이터 형식을 통해 <YourObject>.class 참조를 설정해야 합니다. 여기서 주의해야 할 중요한 사항은 ASN.1 구조의 Java 개체 표현을 생성하는 유용한 도구인 jasn1 컴파일러에 의해 개체가 생성되어야 한다는 것입니다. jasn1 컴파일러의 참조 사용은 [JASN.1 Project Page](https://www.openmuc.org/asn1/)를 참조하고 maven의 exec 플러그인과 함께 컴파일러를 호출하는 방법도 참조하십시오. 예를 들어, 이 데이터 형식의 단위에서는 예제 ASN.1 구조(TestSMSBerCdr.asn1)가 src/test/resources/asn1_structure. jasn1 컴파일러에 추가되고 java 오브젝트의 표현이 호출되고 java 오브젝트의 표현은 ${basedir}/target/generated/src/src/test/java 에 생성됩니다.
from("direct:unmarshaldsl")
.unmarshal()
.asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr")
.split(body(Iterator.class)).streaming()
.to("mock:unmarshaldsl");
7.3. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
camel 경로에서 ASN.1 데이터 형식을 사용하려면 이 데이터 형식을 구현하는 camel-asn1 에 종속성을 추가해야 합니다.
Maven을 사용하는 경우 pom.xml 에 다음을 추가할 수 있으며 최신 및 가장 큰 릴리스의 버전 번호를 대체합니다(최신 버전의 다운로드 페이지 참조).
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-asn1</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
8장. AS2 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Karaf의 camel-as2 구성 요소는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다.
이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다. Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview 에서 참조하십시오.
Camel 버전 2.22에서 사용 가능
AS2 구성 요소는 RFC4130 에 지정된 대로 HTTP 전송 프로토콜을 사용하여 EDI 메시지의 전송을 제공합니다.
이 구성 요소는 현재 진행 중인 작업입니다. URI 옵션 및 경로 및 쿼리 매개 변수가 이 구성 요소의 향후 버전에서 변경될 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-as2</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
8.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
as2://apiName/methodName
apiName은 다음 중 하나일 수 있습니다.
- 클라이언트
- server
8.2. AS2 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AS2 구성 요소는 아래 나열된 두 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (일반) | 공유 구성을 사용하려면To use the shared configuration | AS2Configuration | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AS2 끝점은 URI 구문을 사용하여 구성됩니다.
as2:apiName
다음 경로 및 쿼리 매개변수를 사용합니다.
8.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| apiName | 어 떤 종류의 작업을 수행해야 합니까? | AS2ApiName |
8.2.2. 쿼리 매개변수(30 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| as2From (일반) | AS2 메시지의 AS2From 헤더 값입니다. | 문자열 | |
| as2MessageStructure (일반) | AS2 Message의 구조입니다. PLAIN - 암호화 없음, 서명 없음, SIGNED - 암호화 없음, 서명, ENCRYPTED - 암호화, 서명 없음, 서명 | AS2MessageStructure | |
| as2To (일반) | AS2 메시지의 AS2To 헤더 값입니다. | 문자열 | |
| as2Version (일반) | AS2 프로토콜의 버전입니다. | 1.1 | 문자열 |
| clientFqdn (일반) | 클라이언트 정규화된 도메인 이름(FQDN)입니다. 끝점에서 보낸 메시지 ID에서 사용됩니다. | camel.apache.org | 문자열 |
| dispositionNotificationTo (common) | Disposition-Notification-To 헤더의 값입니다. 이 매개 변수에 값을 할당하면 AS2 메시지에 대한 message disposition notification(MDN)이 요청됩니다. | 문자열 | |
| ediMessageTransferEncoding (일반) | EDI 메시지의 전송 인코딩입니다. | 문자열 | |
| ediMessageType (일반) | EDI 메시지의 콘텐츠 유형입니다. application/edifact, application/edi-x12 중 하나, application/edi-consent | ContentType | |
| encryptingAlgorithm (common) | EDI 메시지를 암호화하는 데 사용되는 알고리즘입니다. | AS2EncryptionAlgorithm | |
| 인증서 체인 암호화 (일반) | EDI 메시지를 암호화하는 데 사용되는 인증서 체인입니다. | certificate[] | |
| privateKey 암호화 ( 일반) | EDI 메시지를 암호화하는 데 사용되는 키입니다. | PrivateKey | |
| 에서 (일반) | AS2 메시지의 From 헤더의 값입니다. | 문자열 | |
| InBody (일반) | 교환 In Body에서 전달할 매개 변수의 이름을 설정합니다. | 문자열 | |
| methodName (common) | 선택한 작업에 사용할 하위 작업 필요 | 문자열 | |
| requestUri (common) | EDI 메시지의 요청 URI입니다. | / | 문자열 |
| 서버 (공용) | AS2 서버를 식별하는 서버 메시지 헤더에 포함된 값입니다. | Camel AS2 Server Endpoint | 문자열 |
| serverFqdn (common) | 서버의 정규화된 도메인 이름(FQDN)입니다. 끝점에서 보낸 메시지 ID에서 사용됩니다. | camel.apache.org | 문자열 |
| serverPortNumber (일반) | 서버 포트 번호입니다. | 정수 | |
| signedReceiptMicAlgorithms (일반적으로) | MDN(Message dispostion notification)에서 반환된 MIC(메시지 무결성 검사)를 생성하도록 요청된 알고리즘 목록입니다. | string[] | |
| signingAlgorithm (일반) | EDI 메시지에 서명하는 데 사용되는 알고리즘입니다. | AS2SignatureAlgorithm | |
| signingCertificateChain (일반) | EDI 메시지에 서명하는 데 사용되는 인증서 체인입니다. | certificate[] | |
| signingPrivateKey (common) | EDI 메시지에 서명하는 데 사용되는 키입니다. | PrivateKey | |
| 제목 (일반) | AS2 메시지의 주체 헤더 값입니다. | 문자열 | |
| targetHostname (일반) | 대상 호스트의 호스트 이름(IP 또는 DNS 이름)입니다. | 문자열 | |
| targetPortNumber (일반) | 대상 호스트의 포트 수입니다. -1은 스키마의 기본 포트를 나타냅니다. | 정수 | |
| userAgent (일반) | AS2 사용자 에이전트를 식별하는 User-Agent 메시지 헤더에 포함된 값입니다. | Camel AS2 클라이언트 끝점 | 문자열 |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션은 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
8.3. Spring Boot Auto-Configuration 링크 복사링크가 클립보드에 복사되었습니다!
구성 요소는 아래에 나열된 28 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| camel.component.as2.configuration.api-name | 어떤 종류의 작업을 수행합니까? | AS2ApiName | |
| camel.component.as2.configuration.as2-from | AS2 메시지의 AS2From 헤더 값입니다. | 문자열 | |
| camel.component.as2.configuration.as2-message-structure | AS2 Message의 구조입니다. PLAIN - 암호화 없음, 서명 없음, SIGNED - 암호화 없음, 서명, ENCRYPTED - 암호화, 서명 없음, 서명 | AS2MessageStructure | |
| camel.component.as2.configuration.as2-to | AS2 메시지의 AS2To 헤더 값입니다. | 문자열 | |
| camel.component.as2.configuration.as2-version | AS2 프로토콜의 버전입니다. | 1.1 | 문자열 |
| camel.component.as2.configuration.client-fqdn | 클라이언트 정규화된 도메인 이름(FQDN)입니다. 끝점에서 보낸 메시지 ID에서 사용됩니다. | camel.apache.org | 문자열 |
| camel.component.as2.configuration.disposition-notification-to | Disposition-Notification-To 헤더의 값입니다. 이 매개 변수에 값을 할당하면 AS2 메시지에 대한 message disposition notification(MDN)이 요청됩니다. | 문자열 | |
| camel.component.as2.configuration.edi-message-transfer-encoding | EDI 메시지의 전송 인코딩입니다. | 문자열 | |
| camel.component.as2.configuration.edi-message-type | EDI 메시지의 콘텐츠 유형입니다. application/edifact, application/edi-x12 중 하나, application/edi-consent | ContentType | |
| camel.component.as2.configuration.encrypting-algorithm | EDI 메시지를 암호화하는 데 사용되는 알고리즘입니다. | AS2EncryptionAlgorithm | |
| camel.component.as2.configuration.encrypting-certificate-chain | EDI 메시지를 암호화하는 데 사용되는 인증서 체인입니다. | certificate[] | |
| camel.component.as2.configuration.encrypting-private-key | EDI 메시지를 암호화하는 데 사용되는 키입니다. | PrivateKey | |
| camel.component.as2.configuration.from | AS2 메시지의 From 헤더의 값입니다. | 문자열 | |
| camel.component.as2.configuration.method-name | 선택한 작업에 사용할 하위 작업 | 문자열 | |
| camel.component.as2.configuration.request-uri | EDI 메시지의 요청 URI입니다. | / | 문자열 |
| camel.component.as2.configuration.server | AS2 서버를 식별하는 서버 메시지 헤더에 포함된 값입니다. | Camel AS2 Server Endpoint | 문자열 |
| camel.component.as2.configuration.server-fqdn | 서버의 정규화된 도메인 이름(FQDN)입니다. 끝점에서 보낸 메시지 ID에서 사용됩니다. | camel.apache.org | 문자열 |
| camel.component.as2.configuration.server-port-number | 서버 포트 번호입니다. | 정수 | |
| camel.component.as2.configuration.signed-receipt-mic-algorithms | MDN(Message dispostion notification)에서 반환된 MIC(메시지 무결성 검사)를 생성하도록 요청된 알고리즘 목록입니다. | string[] | |
| camel.component.as2.configuration.signing-algorithm | EDI 메시지에 서명하는 데 사용되는 알고리즘입니다. | AS2SignatureAlgorithm | |
| camel.component.as2.configuration.signing-certificate-chain | EDI 메시지에 서명하는 데 사용되는 인증서 체인입니다. | certificate[] | |
| camel.component.as2.configuration.signing-private-key | EDI 메시지에 서명하는 데 사용되는 키입니다. | PrivateKey | |
| camel.component.as2.configuration.subject | AS2 메시지의 주체 헤더 값입니다. | 문자열 | |
| camel.component.as2.configuration.target-hostname | 대상 호스트의 호스트 이름(IP 또는 DNS 이름)입니다. | 문자열 | |
| camel.component.as2.configuration.target-port-number | 대상 호스트의 포트 수입니다. -1은 스키마의 기본 포트를 나타냅니다. | 정수 | |
| camel.component.as2.configuration.user-agent | AS2 사용자 에이전트를 식별하는 User-Agent 메시지 헤더에 포함된 값입니다. | Camel AS2 클라이언트 끝점 | 문자열 |
| camel.component.as2.enabled | as2 구성 요소의 자동 구성을 활성화할지 여부입니다. 이는 기본적으로 활성화되어 있습니다. | 부울 | |
| camel.component.as2.resolve-property-placeholders | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | 부울 |
8.4. 클라이언트 끝점: 링크 복사링크가 클립보드에 복사되었습니다!
클라이언트 끝점은 엔드포인트 접두사 클라이언트 뒤에 메서드의 이름과 다음에 설명된 관련 옵션을 사용합니다. 엔드포인트 URI에는 접두사 클라이언트 가 있어야 합니다.
as2://client/method?[options]
필수가 아닌 엔드포인트 옵션은 [] 로 표시됩니다. 끝점에 대한 필수 옵션이 없는 경우 [] 옵션 세트 중 하나를 제공해야 합니다. 생산자 엔드포인트는 Camel Exchange In 메시지에 포함된 엔드포인트 옵션의 이름을 포함해야 하는 특수 옵션 inBody 를 사용할 수도 있습니다.
끝점 URI에서 또는 메시지 헤더에서 동적으로 끝점 옵션을 제공할 수 있습니다. 메시지 헤더 이름은 CamelAS2.<option> 형식이어야 합니다. inBody 옵션은 메시지 헤더를 덮어씁니다. 즉 inBody=option 의 endpoint 옵션은 CamelAS2.option 헤더를 재정의합니다.
끝점 URI 또는 메시지 헤더에 있는 옵션 defaultRequest에 대해 값이 제공되지 않으면 null 로 간주됩니다. null 값은 다른 옵션이 일치하는 엔드 포인트를 충족하지 않는 경우에만 사용됩니다.
AS2 API 오류가 발생하는 경우 끝점은 org.apache.http.HttpException 파생 예외를 사용하여 RuntimeCamelException을 throw합니다.
| 방법 | 옵션 | 결과 본문 유형 |
|---|---|---|
| send | ediMessage, requestUri, subject, from, as2From, as2To, as2Message structureure, ediMessageContentType, ediMessageTransferEncoding, dispositionNotificationTo, signedReceiptMicAlgorithms | org.apache.http.protocol.HttpCoreContext |
클라이언트의 URI 옵션
| 이름 | 유형 |
|---|---|
| ediMessage | 문자열 |
| requestUri | 문자열 |
| 제목 | 문자열 |
| from | 문자열 |
| as2From | 문자열 |
| as2To | 문자열 |
| as2MessageStructure | org.apache.camel.component.as2.api.AS2MessageStructure |
| ediMessageContentType | 문자열 |
| ediMessageTransferEncoding | 문자열 |
| dispositionNotificationTo | 문자열 |
| signedReceiptMicAlgorithms | string[] |
8.5. 서버 끝점: 링크 복사링크가 클립보드에 복사되었습니다!
서버 끝점은 엔드포인트 접두사 서버 다음에 방법의 이름과 다음에 설명된 관련 옵션을 사용합니다. 엔드포인트 URI에는 접두사 서버 가 포함되어야 합니다.
as2://server/method?[options]
필수가 아닌 엔드포인트 옵션은 [] 로 표시됩니다. 끝점에 대한 필수 옵션이 없는 경우 [] 옵션 세트 중 하나를 제공해야 합니다. 생산자 엔드포인트는 Camel Exchange In 메시지에 포함된 엔드포인트 옵션의 이름을 포함해야 하는 특수 옵션 inBody 를 사용할 수도 있습니다.
끝점 URI에서 또는 메시지 헤더에서 동적으로 끝점 옵션을 제공할 수 있습니다. 메시지 헤더 이름은 CamelAS2.<option> 형식이어야 합니다. inBody 옵션은 메시지 헤더를 덮어씁니다. 즉 inBody=option 의 endpoint 옵션은 CamelAS2.option 헤더를 재정의합니다.
끝점 URI 또는 메시지 헤더에 있는 옵션 defaultRequest에 대해 값이 제공되지 않으면 null 로 간주됩니다. null 값은 다른 옵션이 일치하는 엔드 포인트를 충족하지 않는 경우에만 사용됩니다.
AS2 API 오류가 발생하는 경우 끝점은 org.apache.http.HttpException 파생 예외를 사용하여 RuntimeCamelException을 throw합니다.
| 방법 | 옵션 | 결과 본문 유형 |
|---|---|---|
| listen | requestUriPattern | org.apache.http.protocol.HttpCoreContext |
서버의 URI 옵션
| 이름 | 유형 |
|---|---|
| requestUriPattern | 문자열 |
9장. 별표 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.18로 사용 가능
별표 : 구성 요소를 사용하면 별표 -java를 사용하여 Asterisk PBX Server http://www.asterisk.org/ 를사용하여 쉽게 작업할 수 있습니다.
이 구성 요소는 Asterisk Manager Interface와 상호 작용하는 데 도움이 됩니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-asterisk</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
9.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
asterisk:name[?options]
9.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Asterisk 구성 요소에는 옵션이 없습니다.
Asterisk 엔드포인트는 URI 구문을 사용하여 구성됩니다.
asterisk:name
다음 경로 및 쿼리 매개변수를 사용합니다.
9.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| name | 필수 논리 이름 | 문자열 |
9.2.2. 쿼리 매개변수 (8 매개변수: 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 호스트 이름 (일반) | 필수 별표 서버의 호스트 이름 | 문자열 | |
| 암호 (공용) | 필수 로그인 암호 | 문자열 | |
| 사용자 이름 (공용) | 필수 로그인 사용자 이름 | 문자열 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| 작업 (producer) | 대기열 상태, sip 피어 또는 확장 상태 등 수행할 작업. | AsteriskAction | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
9.3. 동작 링크 복사링크가 클립보드에 복사되었습니다!
지원되는 동작은 다음과 같습니다.
- QUEUE_STATUS, 대기열 상태
- SIP_PEERS, List SIP Peers
- EXTENSION_STATE, Check Extension Status
10장. Atmos 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.15에서 사용 가능
Camel-Atmos 는 Apache Camel 구성 요소로, Atmos Client 를 사용하여 ViPR 개체 데이터 서비스로 작업할 수 있습니다.
from("atmos:foo/get?remotePath=/path").to("mock:test");
10.1. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Atmos 구성 요소는 아래 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| fullTokenId (security) | Atmos 클라이언트에 전달할 토큰 ID | 문자열 | |
| secretKey (security) | Atmos 클라이언트에 전달할 비밀 키 | 문자열 | |
| URI (advanced) | Atmos 클라이언트에서 연결할 서버의 URI입니다. | 문자열 | |
| sslValidation (security) | Atmos 클라이언트가 SSL 검증을 수행해야 하는지 여부 | false | boolean |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Atmos 엔드포인트는 URI 구문을 사용하여 구성됩니다.
atmos:name/operation
다음 경로 및 쿼리 매개변수를 사용합니다.
10.1.1. 경로 매개 변수(2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| name | Atmos 이름 | 문자열 | |
| 작업 | 수행해야 하는 작업 | AtmosOperation |
10.1.2. 쿼리 매개변수(12 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| enableSslValidation (일반) | Atmos SSL 검증 | false | boolean |
| fullTokenId (일반) | Atmos 클라이언트 fullTokenId | 문자열 | |
| localPath (common) | 파일 배치를 위한 로컬 경로 | 문자열 | |
| newRemotePath (common) | 파일을 이동할 때 Atmos의 새 경로 | 문자열 | |
| 쿼리 (일반) | Atmos에 대한 검색 쿼리 | 문자열 | |
| remotePath (common) | Atmos에 파일을 배치할 위치 | 문자열 | |
| secretKey (common) | Atmos 공유 보안 | 문자열 | |
| URI (공용) | Atomos 서버 uri | 문자열 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
10.2. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
camel 경로에서 Atmos를 사용하려면 이 데이터 형식을 구현하는 camel-atmos 에 종속성을 추가해야 합니다.
maven을 사용하는 경우 pom.xml에 다음을 추가하면 최신 및 가장 큰 릴리스의 버전 번호를 대체합니다(최신 버전의 다운로드 페이지 참조).
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atmos</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
10.3. 통합 링크 복사링크가 클립보드에 복사되었습니다!
atmos 통합을 볼 때 하나의 유형의 소비자, GetConsumer가 있으며 이는 ScheduledPollConsumer 유형입니다.
-
Get
반면, 4 가지 유형의 생산자가 있습니다.
-
Get -
Del -
move -
put
10.4. 예제 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제는 테스트에서 가져옵니다.
from("atmos:foo/get?remotePath=/path").to("mock:test");
다음은 소비자 예입니다.Here is a consumer example. remotePath 는 데이터를 읽고 제작자 Underneath와 관련하여 camel exchange를 읽을 수있는 경로를 나타냅니다. 이 구성 요소는 이 구성 요소 및 기타 모든 작업에 대해 atmos 클라이언트 API를 사용합니다.
from("direct:start")
.to("atmos://get?remotePath=/dummy/dummy.txt")
.to("mock:result");
이 샘플은 Producer 샘플입니다. remotePath 는 ViPR 오브젝트 데이터 서비스에서 작업이 발생하는 경로를 나타냅니다. 생산자에서 작업(Get,Del,Move,Put)은 ViPR 오브젝트 데이터 서비스에서 실행되며 결과는 camel exchange 헤더에 설정됩니다.
작업에 대해 다음 헤더가 camel exhange에 설정되어 있습니다.
DOWNLOADED_FILE, DOWNLOADED_FILES, UPLOADED_FILE, UPLOADED_FILES, FOUND_FILES, DELETED_PATH, MOVED_PATH;
10.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
11장. 대기 웹 소켓 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.14로 사용 가능
대기 시간: 구성 요소는 Websocket을 통해 외부 클라이언트와 통신하는 서블릿에 대해 Websocket 기반 엔드포인트를 제공합니다(외부 클라이언트의 웹 소켓 연결을 수락하는 서블릿).
구성 요소는 SERVLET 구성 요소를 사용하며 Atmosphere 라이브러리를 사용하여 다양한 서블릿 컨테이너(예: Jetty, Tomcat, …에서 Websocket 전송)를 지원합니다.
포함된 Jetty 서버를 시작하는 Websocket 구성 요소와 달리 이 구성 요소는 컨테이너의 서블릿 공급자를 사용합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atmosphere-websocket</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
11.1. 대기 시간-웹 소켓 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Atmosphere Websocket 구성 요소는 아래 나열된 8 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 서블릿 이름 (공용) | 사용할 서블릿의 기본 이름입니다. 기본 이름은 CamelServlet입니다. | 문자열 | |
| httpRegistry (일반) | 사용자 지정 org.apache.camel.component.servlet.HttpRegistry를 사용합니다. | HttpRegistry | |
| attachmentMultipart Binding (일반) | Camel Exchange의 첨부 파일로 multipart/form-data를 자동 바인딩할지 여부입니다. attachment attachmentMultipartBinding=true 및 disableStreamCache=false 옵션이 함께 작동할 수 없습니다. AttachmentMultipartBinding을 사용하려면 disableStreamCache를 제거합니다. Servlet을 사용할 때 이를 활성화하려면 서블릿별 구성이 필요할 수 있으므로 기본적으로 이 기능이 꺼집니다. | false | boolean |
| httpBinding (advanced) | 사용자 지정 HttpBinding을 사용하여 Camel 메시지와 HttpClient 간의 매핑을 제어합니다. | HttpBinding | |
| httpConfiguration (advanced) | 공유 HttpConfiguration을 기본 구성으로 사용하려면 다음을 수행합니다. | HttpConfiguration | |
| JavaSerialized Object (advanced) 허용 | 요청이 context-type=application/x-java-serialized-object를 사용할 때 java serialization을 허용할지 여부입니다. 이 설정은 기본적으로 꺼져 있습니다. 이를 활성화하면 Java가 요청에서 Java로 들어오는 데이터를 역직렬화하고 잠재적인 보안 위험이 될 수 있다는 점에 유의하십시오. | false | boolean |
| headerFilterStrategy (filter) | 사용자 지정 org.apache.camel.spi.HeaderFilterStrategy를 사용하여 Camel 메시지로 헤더를 필터링하려면 다음을 수행합니다. | HeaderFilterStrategy | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Atmosphere Websocket 끝점은 URI 구문을 사용하여 구성됩니다.
atmosphere-websocket:servicePath
다음 경로 및 쿼리 매개변수를 사용합니다.
11.1.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| servicePath | 필수 websocket 엔드 포인트 이름 | 문자열 |
11.1.2. 쿼리 매개변수(37 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 청크됨 (공용) | 이 옵션이 false이면 Servlet은 HTTP 스트리밍을 비활성화하고 응답에 Content-length 헤더를 설정합니다. | true | boolean |
| disableStreamCache (common) | Servlet의 원시 입력 스트림이 캐시되었거나 그렇지 않은지 여부를 결정합니다. (Camel은 스트림을 메모리/오버 흐름에서 파일, 스트림 캐싱) 캐시로 스트림을 읽습니다. 기본적으로 Camel은 Servlet 입력 스트림을 캐시하여 Camel이 스트림에서 모든 데이터를 검색할 수 있도록 여러 번 읽을 수 있도록 지원합니다. 그러나 예를 들어 파일 또는 기타 영구 저장소로 직접 스트리밍하는 것과 같은 원시 스트림에 액세스해야 할 때 이 옵션을 true로 설정할 수 있습니다. DefaultHttpBinding은 요청 입력 스트림을 스트림 캐시에 복사하고 스트림을 여러 번 읽는 것을 지원하기 위해 이 옵션이 false인 경우 메시지 본문에 배치합니다. Servlet을 사용하여 끝점을 프록시하는 경우 메시지 페이로드를 여러 번 읽을 필요가 없는 경우 이 옵션을 사용하여 성능을 향상시킬 수 있습니다. http/http4 생산자는 기본적으로 응답 본문 스트림을 캐시합니다. 이 옵션을 true로 설정하면 생산자가 응답 본문 스트림을 캐시하지 않지만 응답 스트림을 메시지 본문으로 사용합니다. | false | boolean |
| headerFilterStrategy (common) | 사용자 지정 HeaderFilterStrategy를 사용하여 Camel 메시지와의 헤더를 필터링합니다. | HeaderFilterStrategy | |
| sendToAll (일반) | 모든 (브로드캐스트)로 보내거나 단일 수신자에게 보낼지 여부입니다. | false | boolean |
| transferException (일반) | 활성화된 경우 소비자 측에서 Exchange 실패 처리 및 원인 Exception이 다시 직렬화 된 응답에서 응답에서 애플리케이션/x-java-serialized-object 콘텐츠 유형으로 다시 전송되었습니다. 생산자 측에서 예외는 HttpOperationFailedException 대신 is로 deserialize되고 throw됩니다. 원인된 예외는 직렬화해야 합니다. 이 설정은 기본적으로 꺼져 있습니다. 이를 활성화하면 Java가 요청에서 Java로 들어오는 데이터를 역직렬화하고 잠재적인 보안 위험이 될 수 있다는 점에 유의하십시오. | false | boolean |
| UseStreaming (common) | 스트리밍이 여러 개의 텍스트 조각으로 데이터를 보낼 수 있도록 합니다. | false | boolean |
| httpBinding (일반) | 사용자 지정 HttpBinding을 사용하여 Camel 메시지와 HttpClient 간의 매핑을 제어합니다. | HttpBinding | |
| async (consumer) | 비동기 모드에서 작동하도록 소비자 구성 | false | boolean |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| httpMethodRestrict (consumer) | HttpMethod가 GET/POST/PUT 등과 같은 경우에만 사용할 수 있도록 하는 데 사용됩니다. 여러 메서드를 쉼표로 구분하여 지정할 수 있습니다. | 문자열 | |
| matchOnUriPrefix (consumer) | 정확한 일치 항목이 없는 경우 소비자가 URI 접두사와 일치하여 대상 소비자를 찾아야 하는지 여부입니다. | false | boolean |
| responseBufferSize (consumer) | javax.servlet.ServletResponse에서 사용자 정의 버퍼 크기를 사용하려면 다음을 수행합니다. | 정수 | |
| 서블릿 이름 (consumer) | 사용할 서블릿의 이름입니다. | CamelServlet | 문자열 |
| attachmentMultipartBinding (consumer) | Camel Exchange의 첨부 파일로 multipart/form-data를 자동 바인딩할지 여부입니다. attachment attachmentMultipartBinding=true 및 disableStreamCache=false 옵션이 함께 작동할 수 없습니다. AttachmentMultipartBinding을 사용하려면 disableStreamCache를 제거합니다. Servlet을 사용할 때 이를 활성화하려면 서블릿별 구성이 필요할 수 있으므로 기본적으로 이 기능이 꺼집니다. | false | boolean |
| eagerCheckContentAvailable (consumer) | content-length 헤더가 0인지 아니면 존재하지 않는 경우 HTTP 요청에 콘텐츠가 있는지 확인할 수 있습니다. HTTP 클라이언트가 스트리밍된 데이터를 전송하지 않는 경우 이 기능을 설정할 수 있습니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| optionsEnabled (consumer) | Servlet 소비자에 대해 HTTP 옵션 사용 여부를 지정합니다.Specifies whether to enable HTTP OPTIONS for this Servlet consumer. 기본적으로 옵션 설정은 해제되어 있습니다.By default, OPTIONS is turned off. | false | boolean |
| traceEnabled (consumer) | 이 서블릿 소비자에 대해 HTTP TRACE를 활성화할지 여부를 지정합니다.Specifies whether to enable HTTP TRACE for this Servlet consumer. 기본적으로 TRACE가 해제됩니다.By default, TRACE is turned off. | false | boolean |
| bridgeEndpoint (producer) | 옵션이 true인 경우 HttpProducer는 Exchange.HTTP_URI 헤더를 무시하고 요청 끝점의 URI를 사용합니다. 또한 causesExceptionOnFailure 옵션을 false로 설정하여 HttpProducer가 모든 오류 응답을 다시 보낼 수 있습니다. | false | boolean |
| connectionClose (producer) | Connection Close 헤더를 HTTP 요청에 추가해야 하는지 여부를 지정합니다. 기본적으로 연결 Close는 false입니다. | false | boolean |
| copyHeaders (producer) | 이 옵션이 true이면 IN 교환 헤더가 복사 전략에 따라 OUT 교환 헤더에 복사됩니다. 이를 false로 설정하면 HTTP 응답의 헤더만 포함할 수 있습니다( IN 헤더를 전파하지 않음). | true | boolean |
| httpMethod (producer) | 사용할 HTTP 메서드를 구성합니다. HttpMethod 헤더가 설정된 경우 이 옵션을 재정의할 수 없습니다. | HttpMethods | |
| ignoreResponseBody (producer) | 이 옵션이 true이면 http 생산자가 응답 본문을 읽지 않고 입력 스트림을 캐시합니다. | false | boolean |
| preserveHostHeader (producer) | 옵션이 true인 경우 HttpProducer는 현재 교환 호스트 헤더에 포함된 값으로 Host 헤더를 설정합니다. 다운스트림 서버에서 수신한 Host 헤더가 업스트림 클라이언트에서 호출한 URL을 반영하려는 역방향 프록시 애플리케이션에서 유용한 경우 호스트 헤더를 사용하여 프록시된 서비스에 대한 정확한 URL을 생성할 수 있습니다. | false | boolean |
| throwExceptionOnFailure (producer) | 원격 서버에서 응답이 실패한 경우 HttpOperationFailedException throw를 비활성화하는 옵션입니다. 이를 통해 HTTP 상태 코드와 관계없이 모든 응답을 얻을 수 있습니다. | true | boolean |
| cookieHandler (producer) | HTTP 세션을 유지 관리하도록 쿠키 처리기 구성 | CookieHandler | |
| okStatusCodeRange (producer) | 상태 코드는 성공 응답으로 간주됩니다. 값이 포함됩니다. 여러 범위를 쉼표로 구분하여 정의할 수 있습니다(예: 200-204,209,301-304). 각 범위는 단일 숫자 또는 대시가 포함된 from-to여야 합니다. | 200-299 | 문자열 |
| urlRewrite (producer) | 더 이상 사용되지 않는 사용자 지정 org.apache.camel.component.http.UrlRewrite를 통해 URL을 브리지/proxy 엔드포인트에서 다시 작성할 수 있습니다. 자세한 내용은 http://camel.apache.org/urlrewrite.html에서 참조하십시오. | UrlRewrite | |
| mapHttpMessageBody (advanced) | 이 옵션이 true이면 교환의 IN 교환 본문이 HTTP 본문에 매핑됩니다. 이를 false로 설정하면 HTTP 매핑이 발생하지 않습니다. | true | boolean |
| mapHttpMessageFormUrl EncodedBody (advanced) | 이 옵션이 true이면 교환의 양식 코딩된 본문이 HTTP에 매핑됩니다.If this option is true, IN exchange Form Encoded body of the exchange will be mapped to HTTP. 이를 false로 설정하면 HTTP 양식 Encoded 본문 매핑이 발생하지 않습니다. | true | boolean |
| mapHttpMessageHeaders (advanced) | 이 옵션이 true이면 교환의 IN 교환 헤더가 HTTP 헤더에 매핑됩니다. 이를 false로 설정하면 HTTP 헤더 매핑이 발생하지 않습니다. | true | boolean |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| proxyAuthScheme (proxy) | 사용할 프록시 인증 스키마 | 문자열 | |
| proxyHost (proxy) | 사용할 프록시 호스트 이름 | 문자열 | |
| proxyPort (proxy) | 사용할 프록시 포트 | int | |
| authHost (security) | NTML에서 사용할 인증 호스트 | 문자열 |
11.2. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
atmosphere-websocket:///relative path[?options]
11.3. Websocket을 통해 데이터 읽기 및 쓰기 링크 복사링크가 클립보드에 복사되었습니다!
atmopshere-websocket 끝점은 끝점이 생산자 또는 소비자로 구성되어 있는지 여부에 따라 소켓에 데이터를 쓰거나 소켓에서 읽을 수 있습니다.
11.4. 데이터 읽기 또는 쓰기를 위한 URI 구성 링크 복사링크가 클립보드에 복사되었습니다!
아래 경로에서 Camel은 지정된 websocket 연결에서 읽습니다.
from("atmosphere-websocket:///servicepath")
.to("direct:next");
다음과 같은 Spring 샘플이 있습니다.
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="atmosphere-websocket:///servicepath"/>
<to uri="direct:next"/>
</route>
</camelContext>
아래 경로에서 Camel은 지정된 websocket 연결에서 읽습니다.
from("direct:next")
.to("atmosphere-websocket:///servicepath");
다음과 같은 Spring 샘플이 있습니다.
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:next"/>
<to uri="atmosphere-websocket:///servicepath"/>
</route>
</camelContext>
11.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
12장. atom 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 1.2로 사용 가능
atom: 구성 요소는 Atom 피드를 폴링하는 데 사용됩니다.
Camel은 기본적으로 60초마다 피드를 폴링합니다.
참고: 현재 구성 요소는 폴링(시간) 피드만 지원합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atom</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
12.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
atom://atomUri[?options]
여기서 atomUri 는 폴링할 Atom 피드에 대한 URI입니다.
12.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Atom 구성 요소에는 옵션이 없습니다.
Atom 끝점은 URI 구문을 사용하여 구성됩니다.
atom:feedUri
다음 경로 및 쿼리 매개변수를 사용합니다.
12.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| feedUri | 폴링할 피드에 대한 URI입니다. | 문자열 |
12.2.2. 쿼리 매개변수(27 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| feedHeader (consumer) | feed 오브젝트를 헤더로 추가할지 여부를 설정합니다. | true | boolean |
| 필터 (consumer) | 필터링을 사용할지 아니면 항목 중 사용할지 여부를 설정합니다.Sets whether to use filtering or not of the entries. | true | boolean |
| lastUpdate (consumer) | 원자 피드의 항목을 필터링하는 데 사용할 타임스탬프를 설정합니다. 이 옵션은 splitEntries와 함께 사용할 수 있습니다. | 날짜 | |
| 암호 (consumer) | HTTP 피드에서 폴링할 때 기본 인증에 사용할 암호를 설정합니다. | 문자열 | |
| sendEmptyMessageWhenIdle (consumer) | 폴링 소비자가 파일을 폴링하지 않은 경우 이 옵션을 활성화하여 빈 메시지( 본문 없음)를 대신 보낼 수 있습니다. | false | boolean |
| sortEntries (consumer) | 게시된 날짜별로 항목을 정렬할지 여부를 설정합니다. splitEntries = true일 때만 작동합니다. | false | boolean |
| splitEntries (consumer) | 항목을 개별적으로 보내거나 전체 피드를 단일 메시지로 보내야 하는지 여부를 설정합니다. | true | boolean |
| throttleEntries (consumer) | 단일 피드 폴링에서 식별된 모든 항목을 즉시 전달해야 하는지 여부를 설정합니다. true인 경우 consumer.delay마다 하나의 항목만 처리됩니다. splitEntries = true인 경우에만 적용됩니다. | true | boolean |
| 사용자 이름 (consumer) | HTTP 피드에서 폴링할 때 기본 인증에 사용할 사용자 이름을 설정합니다. | 문자열 | |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| pollStrategy (consumer) | 플러그형 org.apache.camel.PollingConsumerPollingStrategy를 사용하면 Camel에서 Exchange를 생성하고 라우팅하기 전에 폴링 작업 중에 일반적으로 발생한 오류 처리를 제어하는 사용자 정의 구현을 제공할 수 있습니다. | PollingConsumerPoll Strategy | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| backoffErrorThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 오류 폴링(일부 오류 발생) 수입니다. | int | |
| backoffIdleThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 유휴 폴링 수입니다. | int | |
| backoffMultiplier (scheduler) | 예약된 폴링 소비자 백오프가 연속된 여러 개의 유휴/errors가 있는 경우 해당 행에 사용할 수 있습니다. multiplier는 다음 실제 시도가 다시 발생하기 전에 건너뛸 폴링 수입니다. 이 옵션을 사용하는 경우 backoffIdleThreshold 및/또는 backoffErrorThreshold도 구성해야 합니다. | int | |
| 지연 (scheduler) | 다음 폴링보다 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 500 | long |
| greedy (scheduler) | greedy가 활성화된 경우 ScheduledPollConsumer는 이전 실행이 1개 이상의 메시지를 폴링하면 즉시 다시 실행됩니다. | false | boolean |
| initialDelay (scheduler) | 첫 번째 폴링이 시작되기 전까지의 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 1000 | long |
| runLoggingLevel (scheduler) | 소비자는 폴링할 때 시작/완료 로그 행을 기록합니다. 이 옵션을 사용하면 로깅 수준을 구성할 수 있습니다. | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 소비자에 사용할 사용자 지정/공유 스레드 풀을 구성할 수 있습니다. 기본적으로 각 소비자는 자체 스레드 스레드 풀이 있습니다. | ScheduledExecutor Service | |
| 스케줄러 (scheduler) | camel-spring 또는 camel-quartz2 구성 요소에서 cron 스케줄러를 사용하려면 | none | ScheduledPollConsumer Scheduler |
| 스케줄러 속성 (scheduler) | 사용자 지정 스케줄러 또는 Quartz2, Spring 기반 스케줄러를 사용할 때 추가 속성을 구성하려면 다음을 수행합니다. | map | |
| StartScheduler (scheduler) | 스케줄러가 자동으로 시작되어야 하는지 여부입니다. | true | boolean |
| timeUnit (scheduler) | initialDelay 및 지연 옵션의 시간 단위입니다. | 밀리초 | TimeUnit |
| UseFixedDelay (scheduler) | 고정 지연 또는 고정 속도가 사용되는 경우 제어합니다. 자세한 내용은 JDK의 ScheduledExecutorService를 참조하십시오. | true | boolean |
다음 형식 ?option=value&option=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
12.3. 교환 데이터 형식 링크 복사링크가 클립보드에 복사되었습니다!
Camel은 반환된 Exchange 의 In body를 항목으로 설정합니다. splitEntries 플래그에 따라 Camel은 하나의 Entry 또는 List<Entry>를 반환합니다.
| 옵션 | 값 | 동작 |
|---|---|---|
|
|
|
현재 처리 중인 피드의 단일 항목만 |
|
|
|
피드의 전체 항목 목록 set: |
Camel은 In 헤더에 feed 오브젝트 를 설정할 수 있습니다(이를 비활성화하려면 feedHeader 옵션 참조):
12.4. 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
Camel atom은 이러한 헤더를 사용합니다.
| header | 설명 |
|---|---|
|
|
|
12.5. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
이 샘플에서는 James Strachan의 블로그를 폴링합니다.
from("atom://http://macstrac.blogspot.com/feeds/posts/default").to("seda:feeds");
이 샘플에서는 SEDA 큐로 우리가 원하는 좋은 블로그만 필터링하려고 합니다. 샘플은 또한 Camel 독립 실행형 설정, 컨테이너 내에서 실행되지 않거나 Spring을 사용하는 방법을 보여줍니다.
12.6. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- RSS
13장. Atomix Map 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.20에서 사용 가능
camel atomix-map 구성 요소를 사용하면 Atomix의 분산 맵 컬렉션을 사용할 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
13.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
atomix-map:mapName
13.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Atomix Map 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (일반) | 공유 구성 요소 구성 | AtomixMapConfiguration | |
| Atomix (common) | 공유 AtomixClient 인스턴스 | AtomixClient | |
| 노드 (공용) | AtomixClient가 연결해야 하는 노드 | list | |
| configurationUri (common) | AtomixClient 설정 경로 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Atomix Map 끝점은 URI 구문을 사용하여 구성됩니다.
atomix-map:resourceName
다음 경로 및 쿼리 매개변수를 사용합니다.
13.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| resourceName | 필수 리소스 이름 | 문자열 |
13.2.2. 쿼리 매개변수(18 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| Atomix (common) | 사용할 Atomix 인스턴스 | Atomix | |
| configurationUri (common) | Atomix 구성 uri입니다. | 문자열 | |
| defaultAction (common) | 기본 동작입니다. | PUT | 동작 |
| 키 (일반) | 헤더에 설정되지 않거나 특정 키에 대한 이벤트를 수신 대기하는 경우 사용할 키입니다. | 개체 | |
| 노드 (공용) | 클러스터를 구성하는 노드의 주소입니다. | 문자열 | |
| resultHeader (일반) | wil이 결과를 전달하는 헤더입니다. | 문자열 | |
| 전송 (일반) | Atomix 전송을 설정합니다. | io.atomix.catalyst.transport.netty.NettyTransport | 전송 |
| TTL ( 일반) | 리소스 ttl. | long | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| defaultResourceConfig (고급) | 클러스터의 기본 리소스 구성입니다. | 속성 | |
| defaultResourceOptions (고급) | 로컬 기본 리소스 옵션입니다. | 속성 | |
| 임시 (advanced) | 로컬 멤버가 그룹을 PersistentMember로 조인해야 하는지 여부를 설정합니다. ephemeral로 설정하면 로컬 멤버가 자동 생성된 ID를 수신하므로 로컬 멤버는 무시됩니다. | false | boolean |
| ReadConsistency (advanced) | 읽기 일관성 수준입니다. | ReadConsistency | |
| resourceConfigs (고급) | 클러스터 전체 리소스 구성. | map | |
| resourceOptions (고급) | 로컬 리소스 구성 | map | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
13.3. headers 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 유형 | 값 | 설명 |
|---|---|---|---|
| CamelAtomixResourceAction | AtomixMap.Action |
| 수행할 작업 |
| CamelAtomixResourceKey | 개체 | - | 작업할 키 |
| CamelAtomixResourceValue | 개체 | - | 값이 없는 경우 In Body를 사용합니다. |
| CamelAtomixResourceOldValue | 개체 | - | 이전 값 |
| CamelAtomixResourceTTL | 문자열 / long | - | 항목 TTL |
| CamelAtomixResourceReadConsistency | ReadConsistency |
| 읽기 일관성 수준 |
13.4. Atomix 클러스터에 연결하도록 구성 요소 구성 링크 복사링크가 클립보드에 복사되었습니다!
참여할 Atomix 클러스터의 노드는 몇 가지 예와 같이 끝점 또는 구성 요소 수준 (권장)에서 se가 될 수 있습니다.
endpoint:
<beans xmlns="..."> <camelContext xmlns="http://camel.apache.org/schema/spring"> <from uri="direct:start"/> <to uri="atomix-map:myMap?nodes=node-1.atomix.cluster:8700,node-2.atomix.cluster:8700"/> </route> </camelContext> </beans>구성 요소:
<beans xmlns="..."> <bean id="atomix-map" class="org.apache.camel.component.atomix.client.map.AtomixMapComponent"> <property name="nodes" value="nodes=node-1.atomix.cluster:8700,node-2.atomix.cluster:8700"/> </bean> <camelContext xmlns="http://camel.apache.org/schema/spring"> <from uri="direct:start"/> <to uri="atomix-map:myMap"/> </route> </camelContext> </beans>
13.5. 사용 예: 링크 복사링크가 클립보드에 복사되었습니다!
PUT 1초의 TTL이 있는 요소:
FluentProducerTemplate.on(context) .withHeader(AtomixClientConstants.RESOURCE_ACTION, AtomixMap.Action.PUT) .withHeader(AtomixClientConstants.RESOURCE_KEY, key) .withHeader(AtomixClientConstants.RESOURCE_TTL, "1s") .withBody(val) .to("direct:start") .send();
14장. Atomix Messaging 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.20에서 사용 가능
camel atomix-messaging 구성 요소를 사용하면 Atomix의 그룹 메시징을 사용할 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
14.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
atomix-messaging:group
Atomix Messaging 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (일반) | 공유 구성 요소 구성 | AtomixMessaging 구성 | |
| Atomix (common) | 공유 AtomixClient 인스턴스 | AtomixClient | |
| 노드 (공용) | AtomixClient가 연결해야 하는 노드 | list | |
| configurationUri (common) | AtomixClient 설정 경로 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Atomix Messaging 끝점은 URI 구문을 사용하여 구성됩니다.
atomix-messaging:resourceName
다음 경로 및 쿼리 매개변수를 사용합니다.
14.1.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| resourceName | 필수 리소스 이름 | 문자열 |
14.1.2. 쿼리 매개변수(19 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| Atomix (common) | 사용할 Atomix 인스턴스 | Atomix | |
| broadcastType (일반) | broadcast type입니다. | ALL | BroadcastType |
| channelName (common) | 메시징 채널 이름 | 문자열 | |
| configurationUri (common) | Atomix 구성 uri입니다. | 문자열 | |
| defaultAction (common) | 기본 동작입니다. | DIRECT | 동작 |
| memberName (common) | Atomix 그룹 멤버 이름 | 문자열 | |
| 노드 (공용) | 클러스터를 구성하는 노드의 주소입니다. | 문자열 | |
| resultHeader (일반) | wil이 결과를 전달하는 헤더입니다. | 문자열 | |
| 전송 (일반) | Atomix 전송을 설정합니다. | io.atomix.catalyst.transport.netty.NettyTransport | 전송 |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| defaultResourceConfig (고급) | 클러스터의 기본 리소스 구성입니다. | 속성 | |
| defaultResourceOptions (고급) | 로컬 기본 리소스 옵션입니다. | 속성 | |
| 임시 (advanced) | 로컬 멤버가 그룹을 PersistentMember로 조인해야 하는지 여부를 설정합니다. ephemeral로 설정하면 로컬 멤버가 자동 생성된 ID를 수신하므로 로컬 멤버는 무시됩니다. | false | boolean |
| ReadConsistency (advanced) | 읽기 일관성 수준입니다. | ReadConsistency | |
| resourceConfigs (고급) | 클러스터 전체 리소스 구성. | map | |
| resourceOptions (고급) | 로컬 리소스 구성 | map | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
15장. Atomix MultiMap 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.20에서 사용 가능
camel atomix-multimap 구성 요소를 사용하면 Atomix의 Distributed MultiMap 컬렉션을 사용할 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
15.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
atomix-multimap:multiMapName
Atomix MultiMap 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (consumer) | 공유 구성 요소 구성 | AtomixMultiMap 구성 | |
| Atomix (consumer) | 공유 AtomixClient 인스턴스 | AtomixClient | |
| 노드 (consumer) | AtomixClient가 연결해야 하는 노드 | list | |
| configurationUri (consumer) | AtomixClient 설정 경로 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Atomix MultiMap 끝점은 URI 구문을 사용하여 구성됩니다.
atomix-multimap:resourceName
다음 경로 및 쿼리 매개변수를 사용합니다.
15.1.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| resourceName | 필수 리소스 이름 | 문자열 |
15.1.2. 쿼리 매개변수(18 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| Atomix (consumer) | 사용할 Atomix 인스턴스 | Atomix | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| configurationUri (consumer) | Atomix 구성 uri입니다. | 문자열 | |
| defaultAction (consumer) | 기본 동작입니다. | PUT | 동작 |
| 키 (consumer) | 헤더에 설정되지 않거나 특정 키에 대한 이벤트를 수신 대기하는 경우 사용할 키입니다. | 개체 | |
| 노드 (consumer) | 클러스터를 구성하는 노드의 주소입니다. | 문자열 | |
| resultHeader (consumer) | wil이 결과를 전달하는 헤더입니다. | 문자열 | |
| 전송 (consumer) | Atomix 전송을 설정합니다. | io.atomix.catalyst.transport.netty.NettyTransport | 전송 |
| TTL ( consumer) | 리소스 ttl. | long | |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| defaultResourceConfig (고급) | 클러스터의 기본 리소스 구성입니다. | 속성 | |
| defaultResourceOptions (고급) | 로컬 기본 리소스 옵션입니다. | 속성 | |
| 임시 (advanced) | 로컬 멤버가 그룹을 PersistentMember로 조인해야 하는지 여부를 설정합니다. ephemeral로 설정하면 로컬 멤버가 자동 생성된 ID를 수신하므로 로컬 멤버는 무시됩니다. | false | boolean |
| ReadConsistency (advanced) | 읽기 일관성 수준입니다. | ReadConsistency | |
| resourceConfigs (고급) | 클러스터 전체 리소스 구성. | map | |
| resourceOptions (고급) | 로컬 리소스 구성 | map | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
16장. Atomix Queue 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.20에서 사용 가능
camel atomix-queue 구성 요소를 사용하면 Atomix의 분산 대기열 컬렉션을 사용할 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
16.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
atomix-queue:queueName
Atomix Queue 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (일반) | 공유 구성 요소 구성 | AtomixQueue 구성 | |
| Atomix (common) | 공유 AtomixClient 인스턴스 | AtomixClient | |
| 노드 (공용) | AtomixClient가 연결해야 하는 노드 | list | |
| configurationUri (common) | AtomixClient 설정 경로 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Atomix Queue 끝점은 URI 구문을 사용하여 구성됩니다.
atomix-queue:resourceName
다음 경로 및 쿼리 매개변수를 사용합니다.
16.1.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| resourceName | 필수 리소스 이름 | 문자열 |
16.1.2. 쿼리 매개변수(16 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| Atomix (common) | 사용할 Atomix 인스턴스 | Atomix | |
| configurationUri (common) | Atomix 구성 uri입니다. | 문자열 | |
| defaultAction (common) | 기본 동작입니다. | ADD | 동작 |
| 노드 (공용) | 클러스터를 구성하는 노드의 주소입니다. | 문자열 | |
| resultHeader (일반) | wil이 결과를 전달하는 헤더입니다. | 문자열 | |
| 전송 (일반) | Atomix 전송을 설정합니다. | io.atomix.catalyst.transport.netty.NettyTransport | 전송 |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| defaultResourceConfig (고급) | 클러스터의 기본 리소스 구성입니다. | 속성 | |
| defaultResourceOptions (고급) | 로컬 기본 리소스 옵션입니다. | 속성 | |
| 임시 (advanced) | 로컬 멤버가 그룹을 PersistentMember로 조인해야 하는지 여부를 설정합니다. ephemeral로 설정하면 로컬 멤버가 자동 생성된 ID를 수신하므로 로컬 멤버는 무시됩니다. | false | boolean |
| ReadConsistency (advanced) | 읽기 일관성 수준입니다. | ReadConsistency | |
| resourceConfigs (고급) | 클러스터 전체 리소스 구성. | map | |
| resourceOptions (고급) | 로컬 리소스 구성 | map | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
17장. Atomix 설정 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.20에서 사용 가능
camel atomix-set 구성 요소를 사용하면 Atomix의 분산 세트 컬렉션을 사용할 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
17.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
atomix-set:setName
Atomix Set 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (일반) | 공유 구성 요소 구성 | AtomixSetConfiguration | |
| Atomix (common) | 공유 AtomixClient 인스턴스 | AtomixClient | |
| 노드 (공용) | AtomixClient가 연결해야 하는 노드 | list | |
| configurationUri (common) | AtomixClient 설정 경로 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Atomix Set 끝점은 URI 구문을 사용하여 구성됩니다.
atomix-set:resourceName
다음 경로 및 쿼리 매개변수를 사용합니다.
17.1.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| resourceName | 필수 리소스 이름 | 문자열 |
17.1.2. 쿼리 매개변수(17 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| Atomix (common) | 사용할 Atomix 인스턴스 | Atomix | |
| configurationUri (common) | Atomix 구성 uri입니다. | 문자열 | |
| defaultAction (common) | 기본 동작입니다. | ADD | 동작 |
| 노드 (공용) | 클러스터를 구성하는 노드의 주소입니다. | 문자열 | |
| resultHeader (일반) | wil이 결과를 전달하는 헤더입니다. | 문자열 | |
| 전송 (일반) | Atomix 전송을 설정합니다. | io.atomix.catalyst.transport.netty.NettyTransport | 전송 |
| TTL ( 일반) | 리소스 ttl. | long | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| defaultResourceConfig (고급) | 클러스터의 기본 리소스 구성입니다. | 속성 | |
| defaultResourceOptions (고급) | 로컬 기본 리소스 옵션입니다. | 속성 | |
| 임시 (advanced) | 로컬 멤버가 그룹을 PersistentMember로 조인해야 하는지 여부를 설정합니다. ephemeral로 설정하면 로컬 멤버가 자동 생성된 ID를 수신하므로 로컬 멤버는 무시됩니다. | false | boolean |
| ReadConsistency (advanced) | 읽기 일관성 수준입니다. | ReadConsistency | |
| resourceConfigs (고급) | 클러스터 전체 리소스 구성. | map | |
| resourceOptions (고급) | 로컬 리소스 구성 | map | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
18장. Atomix 값 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.20에서 사용 가능
camel atomix-value 구성 요소를 사용하면 Atomix의 분산 가치 와 함께 작업 할 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
18.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
atomix-value:valueName
Atomix Value 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (일반) | 공유 구성 요소 구성 | AtomixValue 구성 | |
| Atomix (common) | 공유 AtomixClient 인스턴스 | AtomixClient | |
| 노드 (공용) | AtomixClient가 연결해야 하는 노드 | list | |
| configurationUri (common) | AtomixClient 설정 경로 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Atomix Value 끝점은 URI 구문을 사용하여 구성됩니다.
atomix-value:resourceName
다음 경로 및 쿼리 매개변수를 사용합니다.
18.1.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| resourceName | 필수 리소스 이름 | 문자열 |
18.1.2. 쿼리 매개변수(17 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| Atomix (common) | 사용할 Atomix 인스턴스 | Atomix | |
| configurationUri (common) | Atomix 구성 uri입니다. | 문자열 | |
| defaultAction (common) | 기본 동작입니다. | SET | 동작 |
| 노드 (공용) | 클러스터를 구성하는 노드의 주소입니다. | 문자열 | |
| resultHeader (일반) | wil이 결과를 전달하는 헤더입니다. | 문자열 | |
| 전송 (일반) | Atomix 전송을 설정합니다. | io.atomix.catalyst.transport.netty.NettyTransport | 전송 |
| TTL ( 일반) | 리소스 ttl. | long | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| defaultResourceConfig (고급) | 클러스터의 기본 리소스 구성입니다. | 속성 | |
| defaultResourceOptions (고급) | 로컬 기본 리소스 옵션입니다. | 속성 | |
| 임시 (advanced) | 로컬 멤버가 그룹을 PersistentMember로 조인해야 하는지 여부를 설정합니다. ephemeral로 설정하면 로컬 멤버가 자동 생성된 ID를 수신하므로 로컬 멤버는 무시됩니다. | false | boolean |
| ReadConsistency (advanced) | 읽기 일관성 수준입니다. | ReadConsistency | |
| resourceConfigs (고급) | 클러스터 전체 리소스 구성. | map | |
| resourceOptions (고급) | 로컬 리소스 구성 | map | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
19장. Avro 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.10에서 사용 가능
이 구성 요소는 Apache Avro의 바이너리 데이터 형식을 사용하여 메시지를 직렬화하고 역직렬화할 수 있도록 하는 avro의 dataformat을 제공합니다. 또한 netty 또는 http를 통해 avro 및 consumers 끝점을 사용하도록 생산자 및 소비자 끝점을 제공하여 Apache Avro의 rpc를 지원합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-avro</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
19.1. Apache Avro 개요 링크 복사링크가 클립보드에 복사되었습니다!
Avro를 사용하면 json과 같은 형식을 사용하여 메시지 유형과 프로토콜을 정의한 다음 지정된 유형 및 메시지에 대해 java 코드를 생성할 수 있습니다. 스키마가 어떻게 보이는지의 예는 다음과 같습니다.
{"namespace": "org.apache.camel.avro.generated",
"protocol": "KeyValueProtocol",
"types": [
{"name": "Key", "type": "record",
"fields": [
{"name": "key", "type": "string"}
]
},
{"name": "Value", "type": "record",
"fields": [
{"name": "value", "type": "string"}
]
}
],
"messages": {
"put": {
"request": [{"name": "key", "type": "Key"}, {"name": "value", "type": "Value"} ],
"response": "null"
},
"get": {
"request": [{"name": "key", "type": "Key"}],
"response": "Value"
}
}
}
maven, ant 등을 사용하여 스키마에서 클래스를 쉽게 생성할 수 있습니다. 자세한 내용은 Apache Avro 설명서에서 확인할 수 있습니다.
그러나 스키마를 첫 번째 접근 방식은 적용하지 않으며 기존 클래스에 대한 스키마를 만들 수 있습니다.However, it doesn't enforce a schema first approach and you can create schema for your existing classes. 2.12부터 기존 프로토콜 인터페이스를 사용하여 RCP 호출을 수행할 수 있습니다. 프로토콜 자체에 인터페이스를 사용하고 매개 변수 및 결과 유형에 대해 POJO 빈 또는 기본/문자열 클래스를 사용해야 합니다. 위의 스키마에 해당하는 클래스의 예는 다음과 같습니다.Here is an example of the class that corresponds to schema above:
package org.apache.camel.avro.reflection;
public interface KeyValueProtocol {
void put(String key, Value value);
Value get(String key);
}
class Value {
private String value;
public String getValue() { return value; }
public void setValue(String value) { this.value = value; }
}
참고: 기존 클래스는 데이터 형식이 아닌 RPC(아래 참조)에만 사용할 수 있습니다.
19.2. Avro 데이터 형식 사용 링크 복사링크가 클립보드에 복사되었습니다!
avro 데이터 형식을 사용하는 것은 라우팅에서 마샬링하거나 마샬링할 클래스를 지정하는 것만큼 쉽습니다.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:in"/>
<marshal>
<avro instanceClass="org.apache.camel.dataformat.avro.Message"/>
</marshal>
<to uri="log:out"/>
</route>
</camelContext>
대안은 컨텍스트 내에서 dataformat을 지정하고 경로에서 참조할 수 있습니다.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<dataFormats>
<avro id="avro" instanceClass="org.apache.camel.dataformat.avro.Message"/>
</dataFormats>
<route>
<from uri="direct:in"/>
<marshal ref="avro"/>
<to uri="log:out"/>
</route>
</camelContext>
같은 방식으로 avro 데이터 형식을 사용하여 umarshal을 사용할 수 있습니다.
19.3. Camel에서 Avro RPC 사용 링크 복사링크가 클립보드에 복사되었습니다!
위에서 언급한 바와 같이 Avro는 http 및 netty와 같은 여러 전송에 대한 RPC 지원도 제공합니다. Camel은 이 두 가지 전송에 대한 소비자와 생산자를 제공합니다.
avro:[transport]:[host]:[port][?options]
지원되는 전송 값은 현재 http 또는 netty입니다.
2.12 이후에는 URI에 메시지 이름을 바로 지정할 수 있습니다.
avro:[transport]:[host]:[port][/messageName][?options]
소비자의 경우 이를 통해 동일한 소켓에 여러 개의 경로가 연결됩니다. 올바른 경로로 디스패치하는 것은 avro 구성 요소에서 자동으로 수행됩니다. messageName이 지정되지 않은 경로(있는 경우)는 기본값으로 사용됩니다.
avro ipc에 대한 camel 생산자를 사용할 때 "인" 메시지 본문에는 avro 프로토콜에 지정된 작업의 매개 변수가 포함되어야 합니다. "out" 메시지의 본문에 응답이 추가됩니다.
avro ipc에 camel avro 소비자를 사용하는 것과 유사한 방식으로, 요청 매개 변수는 생성된 교환의 "인" 메시지 본문에 배치되고 교환이 "out" 메시지의 본문을 처리하면 응답이 전송됩니다.
참고: 기본 소비자 매개변수는 배열로 래핑됩니다. If you've only one parameter, since 2.12 you can use singleParameter URI option to receive it direcly in the "in" message body without array wrapping.
19.4. Avro RPC URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Avro 구성 요소는 아래 나열된 두 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | 공유 AvroConfiguration을 사용하여 옵션을 한 번 구성 | AvroConfiguration | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Avro 엔드포인트는 URI 구문을 사용하여 구성됩니다.
avro:transport:host:port/messageName
다음 경로 및 쿼리 매개변수를 사용합니다.
19.4.1. 경로 매개 변수 (4 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 전송 | 자주 묻는 질문 | AvroTransport | |
| port | 사용할 필수 포트 번호 | int | |
| host | 사용하는 데 필요한 호스트 이름 | 문자열 | |
| messageName | 보낼 메시지의 이름입니다. | 문자열 |
19.4.2. 쿼리 매개 변수(10 매개변수: 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 프로토콜 (일반) | 사용할 Avro 프로토콜 | 프로토콜 | |
| protocolClassName (common) | FQN 클래스 이름으로 정의된 Avro 프로토콜 | 문자열 | |
| protocolLocation (공용) | Avro 프로토콜 위치 | 문자열 | |
| reflectionProtocol (common) | 제공되는 protocol 오브젝트가 리플렉션 프로토콜입니다. protocolClassName 프로토콜 유형에서 자동으로 감지되므로 protocol 매개 변수에서만 사용해야 합니다. | false | boolean |
| singleParameter (common) | true인 경우 consumer 매개변수는 배열로 래핑되지 않습니다. protocol이 메시지에 대해 1개의 매개 변수를 더 많이 지정하는 경우 실패합니다. | false | boolean |
| uriAuthority (일반) | 사용 권한(사용자 이름 및 암호) | 문자열 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
19.5. avro RPC 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 |
|---|---|
|
| 보낼 메시지의 이름입니다. in consumer는 URI에서 메시지 이름을 재정의합니다(있는 경우) |
19.6. 예제 링크 복사링크가 클립보드에 복사되었습니다!
http를 통한 camel avro 생산자 사용 예:
<route>
<from uri="direct:start"/>
<to uri="avro:http:localhost:{{avroport}}?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
<to uri="log:avro"/>
</route>
위의 예에서는 CamelAvroMessageName 헤더를 채워야 합니다. 2.12 이후 다음 구문을 사용하여 일정한 메시지를 호출할 수 있습니다.
<route>
<from uri="direct:start"/>
<to uri="avro:http:localhost:{{avroport}}/put?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
<to uri="log:avro"/>
</route>
netty를 통해 camel avro 소비자를 사용하여 메시지를 사용하는 예:
<route>
<from uri="avro:netty:localhost:{{avroport}}?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
<choice>
<when>
<el>${in.headers.CamelAvroMessageName == 'put'}</el>
<process ref="putProcessor"/>
</when>
<when>
<el>${in.headers.CamelAvroMessageName == 'get'}</el>
<process ref="getProcessor"/>
</when>
</choice>
</route>
2.12부터 동일한 작업을 수행하도록 두 개의 다른 경로를 설정할 수 있습니다.
<route>
<from uri="avro:netty:localhost:{{avroport}}/put?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol">
<process ref="putProcessor"/>
</route>
<route>
<from uri="avro:netty:localhost:{{avroport}}/get?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol&singleParameter=true"/>
<process ref="getProcessor"/>
</route>
위의 예제에서 get은 하나의 매개 변수만 사용하므로 singleParameter 가 사용되므로 getProcessor 는 본문에서 Value 클래스를 직접 수신하지만 putProcessor 는 String 키와 Value 값이 배열 콘텐츠로 입력된 크기 2의 배열을 수신합니다.
20장. Avro DataFormat 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.14로 사용 가능
이 구성 요소는 Apache Avro의 바이너리 데이터 형식을 사용하여 메시지를 직렬화하고 역직렬화할 수 있도록 하는 avro의 dataformat을 제공합니다. 또한 netty 또는 http를 통해 avro 및 consumers 끝점을 사용하도록 생산자 및 소비자 끝점을 제공하여 Apache Avro의 rpc를 지원합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-avro</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
20.1. Apache Avro 개요 링크 복사링크가 클립보드에 복사되었습니다!
Avro를 사용하면 json과 같은 형식을 사용하여 메시지 유형과 프로토콜을 정의한 다음 지정된 유형 및 메시지에 대해 java 코드를 생성할 수 있습니다. 스키마가 어떻게 보이는지의 예는 다음과 같습니다.
{"namespace": "org.apache.camel.avro.generated",
"protocol": "KeyValueProtocol",
"types": [
{"name": "Key", "type": "record",
"fields": [
{"name": "key", "type": "string"}
]
},
{"name": "Value", "type": "record",
"fields": [
{"name": "value", "type": "string"}
]
}
],
"messages": {
"put": {
"request": [{"name": "key", "type": "Key"}, {"name": "value", "type": "Value"} ],
"response": "null"
},
"get": {
"request": [{"name": "key", "type": "Key"}],
"response": "Value"
}
}
}
maven, ant 등을 사용하여 스키마에서 클래스를 쉽게 생성할 수 있습니다. 자세한 내용은 Apache Avro 설명서에서 확인할 수 있습니다.
그러나 스키마를 첫 번째 접근 방식은 적용하지 않으며 기존 클래스에 대한 스키마를 만들 수 있습니다.However, it doesn't enforce a schema first approach and you can create schema for your existing classes. 2.12부터 기존 프로토콜 인터페이스를 사용하여 RCP 호출을 수행할 수 있습니다. 프로토콜 자체에 인터페이스를 사용하고 매개 변수 및 결과 유형에 대해 POJO 빈 또는 기본/문자열 클래스를 사용해야 합니다. 위의 스키마에 해당하는 클래스의 예는 다음과 같습니다.Here is an example of the class that corresponds to schema above:
package org.apache.camel.avro.reflection;
public interface KeyValueProtocol {
void put(String key, Value value);
Value get(String key);
}
class Value {
private String value;
public String getValue() { return value; }
public void setValue(String value) { this.value = value; }
}
참고: 기존 클래스는 데이터 형식이 아닌 RPC(아래 참조)에만 사용할 수 있습니다.
20.2. Avro 데이터 형식 사용 링크 복사링크가 클립보드에 복사되었습니다!
avro 데이터 형식을 사용하는 것은 라우팅에서 마샬링하거나 마샬링할 클래스를 지정하는 것만큼 쉽습니다.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:in"/>
<marshal>
<avro instanceClass="org.apache.camel.dataformat.avro.Message"/>
</marshal>
<to uri="log:out"/>
</route>
</camelContext>
대안은 컨텍스트 내에서 dataformat을 지정하고 경로에서 참조할 수 있습니다.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<dataFormats>
<avro id="avro" instanceClass="org.apache.camel.dataformat.avro.Message"/>
</dataFormats>
<route>
<from uri="direct:in"/>
<marshal ref="avro"/>
<to uri="log:out"/>
</route>
</camelContext>
같은 방식으로 avro 데이터 형식을 사용하여 umarshal을 사용할 수 있습니다.
20.3. Avro Dataformat 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Avro dataformat은 아래 나열된 두 가지 옵션을 지원합니다.
| 이름 | 기본값 | Java Type | 설명 |
|---|---|---|---|
| instanceClassName |
| 마샬링 및 unmarshalling에 사용할 클래스 이름 | |
| contentTypeHeader |
|
| 데이터 형식이 데이터 형식에서 수행할 수 있는 경우 데이터 형식의 유형으로 Content-Type 헤더를 설정해야 하는지 여부입니다. 예를 들어 데이터 형식을 XML로 마샬링하거나, JSon으로 마샬링되는 데이터 형식에 대한 application/json 등이 있습니다. |
21장. AWS CloudWatch Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.11로 사용 가능
CW 구성 요소를 사용하면 메시지를 Amazon CloudWatch 지표로 보낼 수 있습니다. Amazon API 구현은 AWS SDK 에서 제공합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon CloudWatch를 사용하려면 등록해야 합니다. 자세한 내용은 Amazon CloudWatch 에서 확인할 수 있습니다.
21.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-cw://namespace[?options]
메트릭이 아직 없는 경우 생성됩니다.
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
21.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS CloudWatch 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS CW 기본 구성 | CwConfiguration | |
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| 리전 (producer) | CW 클라이언트가 작업해야 하는 지역 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS CloudWatch 끝점은 URI 구문을 사용하여 구성됩니다.
aws-cw:namespace
다음 경로 및 쿼리 매개변수를 사용합니다.
21.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| namespace | 필수 지표 네임스페이스 | 문자열 |
21.2.2. 쿼리 매개변수(11 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| AmazonCwClient (producer) | AmazonCloudWatch를 클라이언트로 사용 | AmazonCloudWatch | |
| 이름 (producer) | 메트릭 이름 | 문자열 | |
| proxyHost (producer) | CW 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (producer) | CW 클라이언트를 인스턴스화할 때 프록시 포트 정의 | 정수 | |
| 리전 (producer) | CW 클라이언트가 작업해야 하는 지역 | 문자열 | |
| 타임 스탬프 (producer) | 메트릭 타임스탬프 | 날짜 | |
| 단위 (producer) | 메트릭 단위 | 문자열 | |
| 값 (producer) | 메트릭 값 | double | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| accesskey (보안) | Amazon AWS Access Key | 문자열 | |
| secretKey (security) | Amazon AWS Secret Key | 문자열 |
필수 CW 구성 요소 옵션
Amazon의 CloudWatch에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 amazonCwClient를 제공해야 합니다.
21.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
21.3.1. CW 생산자가 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| Amazon CW 지표 이름입니다. |
|
|
| Amazon CW 지표 값입니다. |
|
|
| Amazon CW 지표 단위입니다. |
|
|
| Amazon CW 지표 네임스페이스입니다. |
|
|
| Amazon CW 지표 타임 스탬프입니다. |
|
|
| Camel 2.12: Amazon CW 지표 크기 이름입니다. |
|
|
| Camel 2.12: Amazon CW 지표 크기 값. |
|
|
| Camel 2.12: 차원 이름 및 차원 값의 맵입니다. |
21.3.2. 고급 AmazonCloudWatch 구성 링크 복사링크가 클립보드에 복사되었습니다!
AmazonCloudWatch 인스턴스 구성을 더 많이 제어해야 하는 경우 고유한 인스턴스를 만들고 URI에서 참조할 수 있습니다.
from("direct:start")
.to("aws-cw://namepsace?amazonCwClient=#client");
#client 는 레지스트리에서 AmazonCloudWatch 를 나타냅니다.
예를 들어 Camel 애플리케이션이 방화벽 뒤에서 실행 중인 경우입니다.
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
AmazonCloudWatch client = new AmazonCloudWatchClient(awsCredentials, clientConfiguration);
registry.bind("client", client);
21.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.10 이상)으로 교체해야 합니다.
21.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
22장. AWS DynamoDB Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.10에서 사용 가능
DynamoDB 구성 요소는 Amazon의 DynamoDB 서비스에서 데이터를 저장하고 검색할 수 있도록 지원합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon DynamoDB를 사용하려면 가입해야 합니다. 자세한 내용은 Amazon DynamoDB 에서 확인할 수 있습니다.
22.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-ddb://domainName[?options]
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
22.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS DynamoDB 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS DDB 기본 구성 | DdbConfiguration | |
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| 리전 (producer) | DDB 클라이언트가 작업해야 하는 리전 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS DynamoDB 끝점은 URI 구문을 사용하여 구성됩니다.
aws-ddb:tableName
다음 경로 및 쿼리 매개변수를 사용합니다.
22.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| tableName | 필수 필수 현재 작업 중인 테이블의 이름입니다. | 문자열 |
22.2.2. 쿼리 매개변수(13 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| AmazonDDBClient (producer) | AmazonDynamoDB를 클라이언트로 사용하기 | AmazonDynamoDB | |
| ConsistentRead (producer) | 데이터를 읽을 때 강력한 일관성을 강제 적용할지 여부를 결정합니다.Determines whether or not strong consistency should be enforced when data is read. | false | boolean |
| keyAttributeName (producer) | 테이블 생성 시 특성 이름 | 문자열 | |
| keyAttributeType (producer) | 테이블을 만들 때 특성 유형 | 문자열 | |
| 작업 (producer) | 수행할 작업 | PutItem | DdbOperations |
| proxyHost (producer) | DDB 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (producer) | DDB 클라이언트를 인스턴스화할 때 프록시 포트 정의 | 정수 | |
| readCapacity (producer) | 표에서 리소스를 읽기 위해 예약하는 프로비저닝된 처리량 | long | |
| 리전 (producer) | DDB 클라이언트가 작업해야 하는 리전 | 문자열 | |
| writeCapacity (producer) | 테이블에 리소스를 작성하기 위해 예약된 예약된 처리량 | long | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| accesskey (보안) | Amazon AWS Access Key | 문자열 | |
| secretKey (security) | Amazon AWS Secret Key | 문자열 |
필수 DDB 구성 요소 옵션
Amazon의 DynamoDB에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 amazonDDBClient를 제공해야 합니다.
22.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
22.3.1. DDB 생산자가 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 기본 키로 가져올 테이블 이름 및 해당 항목의 맵입니다. |
|
|
| 이 작업의 테이블 이름입니다. |
|
|
| 테이블의 각 항목을 고유하게 식별하는 기본 키입니다. Camel 2.16.0에서 이 헤더의 유형은 Map<String, AttributeValue>이며 키가 아닙니다. |
|
|
| 수정되거나 이후에 속성 이름-값 쌍을 가져오려면 이 매개변수를 사용합니다(NONE, ALL_OLD, UPDATED_OLD, ALL_NEW, UPDATED_NEW). |
|
|
| 조건부 수정에 대한 특성을 지정합니다.Specifies an attribute for a conditional modification. |
|
|
| 특성 이름을 지정하지 않으면 모든 속성이 반환됩니다. |
|
|
| true로 설정하면 일관된 읽기가 발행되고, 그렇지 않으면 결국 일관성이 유지됩니다. |
|
|
| 설정된 경우 쿼리 작업의 보조 인덱스로 사용됩니다.If set will be used as Secondary Index for Query operation. |
|
|
| 항목의 특성 맵이며 항목을 정의하는 기본 키 값을 포함해야 합니다. |
|
|
| true로 설정하면 Amazon DynamoDB에서 일치하는 항목 목록과 해당 속성 목록 대신 쿼리 매개변수와 일치하는 총 항목 수를 반환합니다. Camel 2.16.0에서 이 헤더는 더 이상 존재하지 않습니다. |
|
|
| Camel 2.16.0에서. 이 헤더는 쿼리에 대한 선택 기준을 지정하고 두 개의 기존 헤더 CamelAwsDdbHashKeyValue 및 CamelAwsDdbScanRangeKeyCondition을 병합합니다. |
|
|
| 이전 쿼리를 계속할 항목의 기본 키입니다.Primary key of the item from which to continue an earlier query. |
|
|
| 복합 기본 키의 해시 구성 요소 값입니다. Camel 2.16.0에서 이 헤더는 더 이상 존재하지 않습니다. |
|
|
| 반환할 최대 항목 수입니다. |
|
|
| 쿼리에 사용할 특성 값 및 비교 연산자의 컨테이너입니다.Camel 2.16.0에서 이 헤더는 더 이상 존재하지 않습니다. |
|
|
| 인덱스의 정방향 또는 후방향 traversal을 지정합니다. |
|
|
| 검사 결과를 평가하고 원하는 값만 반환합니다. |
|
|
| 특성 이름을 새 값에 매핑하고 업데이트에 대한 작업. |
22.3.2. BatchGetItems 작업 중 설정된 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 테이블 이름 및 테이블의 각 항목 속성. |
|
|
| 현재 응답으로 처리되지 않은 테이블 및 해당 키의 맵을 포함합니다. |
22.3.3. DeleteItem 작업 중 메시지 헤더 설정 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 작업에서 반환된 속성 목록입니다. |
22.3.4. DeleteTable 작업 중 메시지 헤더 설정 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
| ||
|
| 이 테이블에 대한 ProvisionedThroughput 속성의 값입니다. | |
|
|
| 이 테이블의 DateTime입니다. |
|
|
| 이 테이블에 대한 항목 수입니다. |
|
|
| 이 테이블의 기본 키를 식별하는 KeySchema입니다. Camel 2.16.0에서 이 헤더의 유형은 KeySchema가 아닌 List<KeySchemaElement>입니다. |
|
|
| 테이블 이름입니다. |
|
|
| 테이블 크기(바이트)입니다. |
|
|
| 표의 상태: CREATING, UPDATING, DELETING, ACTIVE |
22.3.5. DescribeTable 작업 중 메시지 헤더 설정 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
| {{ProvisionedThroughputDescription}} | 이 테이블에 대한 ProvisionedThroughput 속성의 값입니다. |
|
|
| 이 테이블의 DateTime입니다. |
|
|
| 이 테이블에 대한 항목 수입니다. |
|
| {{KeySchema}} | 이 테이블의 기본 키를 식별하는 KeySchema입니다. Camel 2.16.0에서 이 헤더의 유형은 KeySchema가 아닌 List<KeySchemaElement>입니다. |
|
|
| 테이블 이름입니다. |
|
|
| 테이블 크기(바이트)입니다. |
|
|
| 표의 상태: CREATING, UPDATING, DELETING, ACTIVE |
|
|
| 이 테이블의 ReadCapacityUnits 속성입니다. |
|
|
| 이 테이블의 WriteCapacityUnits 속성입니다. |
22.3.6. GetItem 작업 중 메시지 헤더 설정 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 작업에서 반환된 속성 목록입니다. |
22.3.7. PutItem 작업 중 설정된 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 작업에서 반환된 속성 목록입니다. |
22.3.8. 쿼리 작업 중 메시지 헤더 설정 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 작업에서 반환된 속성 목록입니다. |
|
|
| 이전 결과 집합을 포함하여 쿼리 작업이 중지된 항목의 기본 키입니다. |
|
|
| 작업 중 사용되는 테이블의 프로비저닝된 처리량의 용량 단위 수입니다. |
|
|
| 응답의 항목 수입니다. |
22.3.9. Scan 작업 중 메시지 헤더 설정 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 작업에서 반환된 속성 목록입니다. |
|
|
| 이전 결과 집합을 포함하여 쿼리 작업이 중지된 항목의 기본 키입니다. |
|
|
| 작업 중 사용되는 테이블의 프로비저닝된 처리량의 용량 단위 수입니다. |
|
|
| 응답의 항목 수입니다. |
|
|
| 필터를 적용하기 전에 전체 검사의 항목 수입니다. |
22.3.10. UpdateItem 작업 중 메시지 헤더 설정 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 작업에서 반환된 속성 목록입니다. |
22.3.11. 고급 AmazonDynamoDB 구성 링크 복사링크가 클립보드에 복사되었습니다!
AmazonDynamoDB 인스턴스 구성을 더 많이 제어해야 하는 경우 고유한 인스턴스를 생성하고 URI에서 해당 인스턴스를 참조할 수 있습니다.
from("direct:start")
.to("aws-ddb://domainName?amazonDDBClient=#client");
#client 는 레지스트리의 AmazonDynamoDB 를 나타냅니다.
예를 들어 Camel 애플리케이션이 방화벽 뒤에서 실행 중인 경우입니다.
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
AmazonDynamoDB client = new AmazonDynamoDBClient(awsCredentials, clientConfiguration);
registry.bind("client", client);
22.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.10 이상)으로 교체해야 합니다.
22.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
23장. AWS DynamoDB Streams Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.17로 사용 가능
DynamoDB Stream 구성 요소는 Amazon DynamoDB Stream 서비스에서 제공하는 메시지 수신을 지원합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon DynamoDB Streams를 사용하려면 가입해야 합니다. 자세한 내용은 AWS DynamoDB에서 확인할 수 있습니다.
23.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-ddbstream://table-name[?options]
스트림을 사용하기 전에 생성해야 합니다.
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
23.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS DynamoDB Streams 구성 요소는 아래 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS DDB 스트림 기본 구성 | DdbStreamConfiguration | |
| 액세스 키 (consumer) | Amazon AWS Access Key | 문자열 | |
| secretKey (consumer) | Amazon AWS Secret Key | 문자열 | |
| 리전 (consumer) | Amazon AWS Region | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS DynamoDB Streams 엔드포인트는 URI 구문을 사용하여 구성됩니다.
aws-ddbstream:tableName
다음 경로 및 쿼리 매개변수를 사용합니다.
23.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| tableName | 필수 dynamodb 테이블의 이름 | 문자열 |
23.2.2. 쿼리 매개변수(28 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| AmazonDynamoDbStreams 클라이언트 (consumer) | 이 끝점에 대한 모든 요청에 사용하는 Amazon DynamoDB 클라이언트 | AmazonDynamoDBStreams | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| iteratorType (consumer) | DynaboDB 스트림에서 레코드 가져오기를 시작하는 위치를 정의합니다. TRIM_HORIZON을 사용하면 스트림이 실시간으로 감지되기 전에 상당한 지연을 일으킬 수 있습니다. AT,AFTER_SEQUENCE_NUMBER를 사용하는 경우 sequenceNumberProvider를 제공해야 합니다. | 최신 | ShardIteratorType |
| maxResultsPerRequest (consumer) | 각 폴링에서 가져올 최대 레코드 수 | int | |
| proxyHost (consumer) | DDBStreams 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (consumer) | DDBStreams 클라이언트를 인스턴스화할 때 프록시 포트를 정의하려면To define a proxy port when instantiating the DDBStreams client | 정수 | |
| 리전 (consumer) | DDBStreams 클라이언트가 작동해야 하는 리전 | 문자열 | |
| sendEmptyMessageWhenIdle (consumer) | 폴링 소비자가 파일을 폴링하지 않은 경우 이 옵션을 활성화하여 빈 메시지( 본문 없음)를 대신 보낼 수 있습니다. | false | boolean |
| sequenceNumberProvider (consumer) | 두 ShardIteratorType.AT,AFTER_SEQUENCE_NUMBER iterator 유형 중 하나를 사용할 때 시퀀스 번호 공급자입니다. 레지스트리 참조 또는 리터럴 시퀀스 번호일 수 있습니다. | SequenceNumberProvider | |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| pollStrategy (consumer) | 플러그형 org.apache.camel.PollingConsumerPollingStrategy를 사용하면 Camel에서 Exchange를 생성하고 라우팅하기 전에 폴링 작업 중에 일반적으로 발생한 오류 처리를 제어하는 사용자 정의 구현을 제공할 수 있습니다. | PollingConsumerPoll Strategy | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| backoffErrorThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 오류 폴링(일부 오류 발생) 수입니다. | int | |
| backoffIdleThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 유휴 폴링 수입니다. | int | |
| backoffMultiplier (scheduler) | 예약된 폴링 소비자 백오프가 연속된 여러 개의 유휴/errors가 있는 경우 해당 행에 사용할 수 있습니다. multiplier는 다음 실제 시도가 다시 발생하기 전에 건너뛸 폴링 수입니다. 이 옵션을 사용하는 경우 backoffIdleThreshold 및/또는 backoffErrorThreshold도 구성해야 합니다. | int | |
| 지연 (scheduler) | 다음 폴링보다 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 500 | long |
| greedy (scheduler) | greedy가 활성화된 경우 ScheduledPollConsumer는 이전 실행이 1개 이상의 메시지를 폴링하면 즉시 다시 실행됩니다. | false | boolean |
| initialDelay (scheduler) | 첫 번째 폴링이 시작되기 전까지의 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 1000 | long |
| runLoggingLevel (scheduler) | 소비자는 폴링할 때 시작/완료 로그 행을 기록합니다. 이 옵션을 사용하면 로깅 수준을 구성할 수 있습니다. | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 소비자에 사용할 사용자 지정/공유 스레드 풀을 구성할 수 있습니다. 기본적으로 각 소비자는 자체 스레드 스레드 풀이 있습니다. | ScheduledExecutor Service | |
| 스케줄러 (scheduler) | camel-spring 또는 camel-quartz2 구성 요소에서 cron 스케줄러를 사용하려면 | none | ScheduledPollConsumer Scheduler |
| 스케줄러 속성 (scheduler) | 사용자 지정 스케줄러 또는 Quartz2, Spring 기반 스케줄러를 사용할 때 추가 속성을 구성하려면 다음을 수행합니다. | map | |
| StartScheduler (scheduler) | 스케줄러가 자동으로 시작되어야 하는지 여부입니다. | true | boolean |
| timeUnit (scheduler) | initialDelay 및 지연 옵션의 시간 단위입니다. | 밀리초 | TimeUnit |
| UseFixedDelay (scheduler) | 고정 지연 또는 고정 속도가 사용되는 경우 제어합니다. 자세한 내용은 JDK의 ScheduledExecutorService를 참조하십시오. | true | boolean |
| accesskey (보안) | Amazon AWS Access Key | 문자열 | |
| secretKey (security) | Amazon AWS Secret Key | 문자열 |
필수 DynampDBStream 구성 요소 옵션
레지스트리에 프록시 및 관련 자격 증명이 구성된 AmazonDynamoDbStreamsClient를 제공해야 합니다.
23.3. 시퀀스 번호 링크 복사링크가 클립보드에 복사되었습니다!
리터럴 문자열을 시퀀스 번호로 제공하거나 레지스트리에 빈을 제공할 수 있습니다. 빈을 사용하는 예는 현재 위치를 변경 피드에 저장하고 Camel 시작 시 복원하는 예입니다.
describe-streams 결과에서 가장 큰 시퀀스 수보다 큰 시퀀스 번호를 제공하는 것은 AWS 호출이 HTTP 400을 반환하므로 오류입니다.
23.4. batch Consumer 링크 복사링크가 클립보드에 복사되었습니다!
이 구성 요소는 배치 소비자를 구현합니다.
예를 들어 이 배치에 있는 메시지 수를 알 수 있으며, 예를 들어 집계에서 이 메시지 수를 집계할 수 있습니다.
23.5. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
23.5.1. AmazonDynamoDBStreamsClient configuration 링크 복사링크가 클립보드에 복사되었습니다!
AmazonDynamoDBStreamsClient 인스턴스를 생성하고 레지스트리에 바인딩해야 합니다.
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
Region region = Region.getRegion(Regions.fromName(region));
region.createClient(AmazonDynamoDBStreamsClient.class, null, clientConfiguration);
// the 'null' here is the AWSCredentialsProvider which defaults to an instance of DefaultAWSCredentialsProviderChain
registry.bind("kinesisClient", client);
23.5.2. AWS 자격 증명 제공 링크 복사링크가 클립보드에 복사되었습니다!
새 ClientConfiguration 인스턴스를 생성할 때 기본값인 DefaultAWSCredentialsProviderChain 을 사용하여 인증 정보를 가져오는 것이 좋지만, createClient(…)를 호출할 때 다른 AWSCredentialsProvider 를 지정할 수 있습니다.
23.6. Downtime으로 속일 수 있습니다. 링크 복사링크가 클립보드에 복사되었습니다!
23.6.1. AWS DynamoDB Streams 중단 24시간 미만 링크 복사링크가 클립보드에 복사되었습니다!
소비자는 마지막으로 표시된 시퀀스 번호( CAMEL-9515용으로 구현됨)에서 다시 시작되므로, 서비스 중단에 innovation 자체도 포함되지 않은 한 빠른 연속으로 이벤트 홍수를 받아야 합니다.
23.6.2. AWS DynamoDB Streams의 24시간 이상 중단 링크 복사링크가 클립보드에 복사되었습니다!
AWS는 변경 사항의 24 시간 가치만 유지한다는 점을 감안할 때 어떤 완화 조치가 있는지에 관계없이 변경 이벤트가 누락됩니다.
23.7. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.7 이상)으로 교체해야 합니다.
23.8. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
-
AWS Component
+
24장. AWS EC2 Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.16에서 사용 가능
EC2 구성 요소는 AWS EC2 인스턴스를 생성, 실행, 시작, 중지 및 종료합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon EC2를 사용하려면 가입해야 합니다. 자세한 내용은 Amazon EC2 에서 확인할 수 있습니다.
24.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-ec2://label[?options]
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
24.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS EC2 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS EC2 기본 구성 | EC2Configuration | |
| 리전 (producer) | EC2 클라이언트가 작업해야 하는 리전 | 문자열 | |
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS EC2 엔드 포인트는 URI 구문을 사용하여 구성됩니다.
aws-ec2:label
다음 경로 및 쿼리 매개변수를 사용합니다.
24.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| label | 필수 논리 이름 | 문자열 |
24.2.2. 쿼리 매개변수 (8 매개변수: 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| AmazonEc2Client (producer) | 기존 구성된 AmazonEC2Client를 클라이언트로 사용하려면 | AmazonEC2Client | |
| 작업 (producer) | 수행해야 하는 작업입니다.The operation to perform. createAndRunInstances, startInstances, stopInstances, terminateInstances, describeInstances, describeInstances, rebootInstances, monitorInstances, unmonitorInstances, createTags 또는 deleteTags일 수 있습니다. | EC2Operations | |
| proxyHost (producer) | EC2 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (producer) | EC2 클라이언트를 인스턴스화할 때 프록시 포트 정의 | 정수 | |
| 리전 (producer) | EC2 클라이언트가 작업해야 하는 리전 | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
필수 EC2 구성 요소 옵션
Amazon EC2 서비스에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 amazonEc2Client를 제공해야 합니다.
24.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
24.3.1. EC2 생산자가 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| AWS Marketplace의 이미지 ID |
|
| com.amazonaws.services.ec2.model.InstanceType | 만들고 실행하려는 인스턴스 유형입니다. |
|
|
| 수행하려는 작업 |
|
|
| 실행하려는 최소 인스턴스 수입니다. |
|
|
| 실행할 최대 인스턴스 수입니다. |
|
| 부울 | 실행 중인 인스턴스를 모니터링하려면 정의 |
|
|
| 생성 인스턴스가 EBS I/O에 최적화되었는지 여부를 정의합니다. |
|
| 소프트웨어 컬렉션 | 인스턴스에 연결할 보안 그룹 |
|
|
| 시작, 중지, 설명 및 종료 작업을 실행할 인스턴스 IDS 컬렉션입니다. |
|
|
| EC2 리소스에서 추가하거나 제거할 태그 컬렉션입니다. |
종속 항목
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.16 이상)으로 교체해야 합니다.
24.4. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
25장. AWS IAM 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.23에서 사용 가능
KMS 구성 요소는 AWS IAM 인스턴스를 생성, 실행, 시작, 중지 및 종료합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있고 Amazon IAM을 사용하려면 가입해야 합니다. 자세한 내용은 Amazon IAM 에서 확인할 수 있습니다.
25.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-kms://label[?options]
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
25.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS IAM 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS IAM 기본 구성 | iamConfiguration | |
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| 리전 (producer) | IAM 클라이언트가 작동해야 하는 리전 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS IAM 끝점은 URI 구문을 사용하여 구성됩니다.
aws-iam:label
다음 경로 및 쿼리 매개변수를 사용합니다.
25.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| label | 필수 논리 이름 | 문자열 |
25.2.2. 쿼리 매개변수 (8 매개변수: 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| iamClient (producer) | 기존 구성된 AWS IAM을 클라이언트로 사용하려면 | AmazonIdentity ManagementClient | |
| 작업 (producer) | 필수 작업 수행 | IAMOperations | |
| proxyHost (producer) | KMS 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (producer) | KMS 클라이언트를 인스턴스화할 때 프록시 포트를 정의하려면 | 정수 | |
| 리전 (producer) | KMS 클라이언트가 작업해야 하는 리전 | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
25.3. Spring Boot Auto-Configuration 링크 복사링크가 클립보드에 복사되었습니다!
구성 요소는 아래 나열된 12 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| camel.component.aws-iam.access-key | Amazon AWS Access Key | 문자열 | |
| camel.component.aws-iam.configuration.access-key | Amazon AWS Access Key | 문자열 | |
| camel.component.aws-iam.configuration.iam-client | 기존 구성된 AWS IAM을 클라이언트로 사용하려면 | AmazonIdentity ManagementClient | |
| camel.component.aws-iam.configuration.operation | 수행할 작업 | IAMOperations | |
| camel.component.aws-iam.configuration.proxy-host | KMS 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| camel.component.aws-iam.configuration.proxy-port | KMS 클라이언트를 인스턴스화할 때 프록시 포트를 정의하려면 | 정수 | |
| camel.component.aws-iam.configuration.region | KMS 클라이언트가 작업해야 하는 리전 | 문자열 | |
| camel.component.aws-iam.configuration.secret-key | Amazon AWS Secret Key | 문자열 | |
| camel.component.aws-iam.enabled | aws-iam 구성 요소의 자동 구성을 활성화할지 여부입니다. 이는 기본적으로 활성화되어 있습니다. | 부울 | |
| camel.component.aws-iam.region | IAM 클라이언트가 작동해야 하는 리전 | 문자열 | |
| camel.component.aws-iam.resolve-property-placeholders | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | 부울 |
| camel.component.aws-iam.secret-key | Amazon AWS Secret Key | 문자열 |
필수 IAM 구성 요소 옵션
Amazon IAM 서비스에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 amazonKmsClient를 제공해야 합니다.
25.4. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
25.4.1. IAM 생산자가 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 수행하려는 작업 |
|
|
| 관리할 사용자의 사용자 이름 |
|
|
| 관리하려는 accessKey |
|
|
| 설정할 AccessKey의 Status(상태)는 활성 상태이고 비활성입니다. |
25.4.2. IAM Producer 작업 링크 복사링크가 클립보드에 복사되었습니다!
Camel-AWS IAM 구성 요소는 생산자 측에서 다음과 같은 작업을 제공합니다.
- listAccessKeys
- createUser
- deleteUser
- listUsers
- getUser
- createAccessKey
- deleteAccessKey
- updateAccessKey
종속 항목
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.16 이상)으로 교체해야 합니다.
25.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
26장. AWS Kinesis Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.17로 사용 가능
Kinesis 구성 요소는 Amazon Kinesis 서비스에서 메시지를 수신하고 메시지를 보낼 수 있도록 지원합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon Kinesis를 사용하려면 가입해야 합니다. 자세한 내용은 AWS Kinesis에서 확인할 수 있습니다.
26.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-kinesis://stream-name[?options]
스트림을 사용하기 전에 생성해야 합니다.
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
26.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS Kinesis 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS S3 기본 구성 | KinesisConfiguration | |
| accesskey (공용) | Amazon AWS Access Key | 문자열 | |
| secretKey (common) | Amazon AWS Secret Key | 문자열 | |
| region (공용) | Amazon AWS Region | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS Kinesis 끝점은 URI 구문을 사용하여 구성됩니다.
aws-kinesis:streamName
다음 경로 및 쿼리 매개변수를 사용합니다.
26.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| streamName | 스트림의 필수 이름입니다. | 문자열 |
26.2.2. 쿼리 매개변수(30 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| AmazonKinesisClient (일반) | 이 끝점에 대한 모든 요청에 사용할 Amazon Kinesis 클라이언트 | AmazonKinesis | |
| proxyHost (일반) | DDBStreams 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (공용) | DDBStreams 클라이언트를 인스턴스화할 때 프록시 포트를 정의하려면To define a proxy port when instantiating the DDBStreams client | 정수 | |
| region (공용) | Kinesis 클라이언트가 작동해야 하는 리전 | 문자열 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| iteratorType (consumer) | records 가져오기를 시작하기 위한 Kinesis 스트림에서 위치를 정의합니다. | TRIM_HORIZON | ShardIteratorType |
| maxResultsPerRequest (consumer) | 각 폴링에서 가져올 최대 레코드 수 | 1 | int |
| sendEmptyMessageWhenIdle (consumer) | 폴링 소비자가 파일을 폴링하지 않은 경우 이 옵션을 활성화하여 빈 메시지( 본문 없음)를 대신 보낼 수 있습니다. | false | boolean |
| sequenceNumber (consumer) | 폴링을 시작할 순서 번호입니다. iteratorType이 AFTER_SEQUENCE_NUMBER 또는 AT_SEQUENCE_NUMBER로 설정된 경우 필수 항목입니다. | 문자열 | |
| shardClosed (consumer) | shard가 종료된 경우 수행할 동작을 정의합니다. 가능한 값은 무시, 자동 및 fail. 메시지를 무시합니다. 메시지가 기록되고 소비자가 처음부터 다시 시작됩니다. 자동 로깅의 경우 소비자는 로깅이 없으며 소비자가 처음부터 시작된 경우 ReachedClosedStateException이 발생합니다. | Ignore | KinesisShardClosed StrategyEnum |
| shardId (consumer) | 레코드를 가져올 Kinesis 스트림에서 어떤 shardId를 정의합니다. | 문자열 | |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| pollStrategy (consumer) | 플러그형 org.apache.camel.PollingConsumerPollingStrategy를 사용하면 Camel에서 Exchange를 생성하고 라우팅하기 전에 폴링 작업 중에 일반적으로 발생한 오류 처리를 제어하는 사용자 정의 구현을 제공할 수 있습니다. | PollingConsumerPoll Strategy | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| backoffErrorThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 오류 폴링(일부 오류 발생) 수입니다. | int | |
| backoffIdleThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 유휴 폴링 수입니다. | int | |
| backoffMultiplier (scheduler) | 예약된 폴링 소비자 백오프가 연속된 여러 개의 유휴/errors가 있는 경우 해당 행에 사용할 수 있습니다. multiplier는 다음 실제 시도가 다시 발생하기 전에 건너뛸 폴링 수입니다. 이 옵션을 사용하는 경우 backoffIdleThreshold 및/또는 backoffErrorThreshold도 구성해야 합니다. | int | |
| 지연 (scheduler) | 다음 폴링보다 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 500 | long |
| greedy (scheduler) | greedy가 활성화된 경우 ScheduledPollConsumer는 이전 실행이 1개 이상의 메시지를 폴링하면 즉시 다시 실행됩니다. | false | boolean |
| initialDelay (scheduler) | 첫 번째 폴링이 시작되기 전까지의 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 1000 | long |
| runLoggingLevel (scheduler) | 소비자는 폴링할 때 시작/완료 로그 행을 기록합니다. 이 옵션을 사용하면 로깅 수준을 구성할 수 있습니다. | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 소비자에 사용할 사용자 지정/공유 스레드 풀을 구성할 수 있습니다. 기본적으로 각 소비자는 자체 스레드 스레드 풀이 있습니다. | ScheduledExecutor Service | |
| 스케줄러 (scheduler) | camel-spring 또는 camel-quartz2 구성 요소에서 cron 스케줄러를 사용하려면 | none | ScheduledPollConsumer Scheduler |
| 스케줄러 속성 (scheduler) | 사용자 지정 스케줄러 또는 Quartz2, Spring 기반 스케줄러를 사용할 때 추가 속성을 구성하려면 다음을 수행합니다. | map | |
| StartScheduler (scheduler) | 스케줄러가 자동으로 시작되어야 하는지 여부입니다. | true | boolean |
| timeUnit (scheduler) | initialDelay 및 지연 옵션의 시간 단위입니다. | 밀리초 | TimeUnit |
| UseFixedDelay (scheduler) | 고정 지연 또는 고정 속도가 사용되는 경우 제어합니다. 자세한 내용은 JDK의 ScheduledExecutorService를 참조하십시오. | true | boolean |
| accesskey (보안) | Amazon AWS Access Key | 문자열 | |
| secretKey (security) | Amazon AWS Secret Key | 문자열 |
필수 Kinesis 구성 요소 옵션
레지스트리의 amazonKinesisClient에 프록시 및 관련 자격 증명이 구성되어 있어야 합니다.
26.3. batch Consumer 링크 복사링크가 클립보드에 복사되었습니다!
이 구성 요소는 배치 소비자를 구현합니다.
예를 들어 이 배치에 있는 메시지 수를 알 수 있으며, 예를 들어 집계에서 이 메시지 수를 집계할 수 있습니다.
26.4. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
26.4.1. Kinesis 소비자가 설정한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 레코드의 시퀀스 번호입니다. 이는 API에서 크기가 정의되지 않기 때문에 String으로 표시됩니다. 숫자 유형으로 사용되는 경우 다음을 사용하십시오. |
|
|
| AWS가 레코드의 도착 시간으로 할당된 시간입니다. |
|
|
| 데이터 레코드가 할당되는 스트림의 shard를 식별합니다. |
26.4.2. AmazonKinesis 구성 링크 복사링크가 클립보드에 복사되었습니다!
AmazonKinesisClient 인스턴스를 생성하고 레지스트리에 바인딩해야 합니다.
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
Region region = Region.getRegion(Regions.fromName(region));
region.createClient(AmazonKinesisClient.class, null, clientConfiguration);
// the 'null' here is the AWSCredentialsProvider which defaults to an instance of DefaultAWSCredentialsProviderChain
registry.bind("kinesisClient", client);
그런 다음 AmazonKinesisClient를 Amazon KinesisClient URI 옵션에서 참조해야 합니다.
from("aws-kinesis://mykinesisstream?amazonKinesisClient=#kinesisClient")
.to("log:out?showAll=true");
26.4.3. AWS 자격 증명 제공 링크 복사링크가 클립보드에 복사되었습니다!
새 ClientConfiguration 인스턴스를 생성할 때 기본값인 DefaultAWSCredentialsProviderChain 을 사용하여 인증 정보를 가져오는 것이 좋지만, createClient(…)를 호출할 때 다른 AWSCredentialsProvider 를 지정할 수 있습니다.
26.4.4. Kinesis 생산자가 Kinesis에 쓰는 데 사용하는 메시지 헤더입니다. 생산자는 메시지 본문이 ByteBuffer 임을 예상합니다. 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 이 레코드를 저장하기 위해 Kinesis로 전달하는 PartitionKey입니다. |
|
|
| 이 레코드의 시퀀스 번호를 나타내는 선택적 매개 변수입니다. |
26.4.5. 레코드의 성공적인 스토리지에 대해 Kinesis 프로듀서에 의해 설정된 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| Response Syntax에 정의된 레코드의 시퀀스 번호 |
|
|
| 레코드가 저장된 shard ID |
26.5. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.17 이상)으로 교체해야 합니다.
26.6. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
27장. AWS Kinesis Firehose 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.19에서 사용 가능
Kinesis Firehose 구성 요소는 Amazon Kinesis Firehose 서비스에 메시지를 보낼 수 있도록 지원합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon Kinesis Firehose를 사용하려면 가입해야 합니다. 자세한 내용은 AWS Kinesis Firehose에서 확인할 수 있습니다.
27.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-kinesis-firehose://delivery-stream-name[?options]
스트림을 사용하기 전에 생성해야 합니다.
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
27.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS Kinesis Firehose 구성 요소는 아래 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS Kinesis Firehose 기본 구성 | KinesisFirehose 구성 | |
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| 리전 (producer) | Amazon AWS Region | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS Kinesis Firehose 끝점은 URI 구문을 사용하여 구성됩니다.
aws-kinesis-firehose:streamName
다음 경로 및 쿼리 매개변수를 사용합니다.
27.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| streamName | 스트림의 필수 이름입니다. | 문자열 |
27.2.2. 쿼리 매개변수(7 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| AmazonKinesisFirehoseClient (producer) | 이 엔드포인트에 대한 모든 요청에 사용할 Amazon Kinesis Firehose 클라이언트 | AmazonKinesisFirehose | |
| proxyHost (producer) | DDBStreams 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (producer) | DDBStreams 클라이언트를 인스턴스화할 때 프록시 포트를 정의하려면To define a proxy port when instantiating the DDBStreams client | 정수 | |
| 리전 (producer) | Kinesis 클라이언트가 작동해야 하는 리전 | 문자열 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| accesskey (보안) | Amazon AWS Access Key | 문자열 | |
| secretKey (security) | Amazon AWS Secret Key | 문자열 |
필수 Kinesis Firehose 구성 요소 옵션
레지스트리의 amazonKinesisClient에 프록시 및 관련 자격 증명이 구성되어 있어야 합니다.
27.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
27.3.1. Amazon Kinesis Firehose 구성 링크 복사링크가 클립보드에 복사되었습니다!
AmazonKinesisClient 인스턴스를 생성하고 레지스트리에 바인딩해야 합니다.
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
Region region = Region.getRegion(Regions.fromName(region));
region.createClient(AmazonKinesisClient.class, null, clientConfiguration);
// the 'null' here is the AWSCredentialsProvider which defaults to an instance of DefaultAWSCredentialsProviderChain
registry.bind("kinesisFirehoseClient", client);
AmazonKinesisFirehoseClient는 Amazon KinesisFirehoseClient 옵션에서 참조해야 합니다.
from("aws-kinesis-firehose://mykinesisdeliverystream?amazonKinesisFirehoseClient=#kinesisClient")
.to("log:out?showAll=true");
27.3.2. AWS 자격 증명 제공 링크 복사링크가 클립보드에 복사되었습니다!
새 ClientConfiguration 인스턴스를 생성할 때 기본값인 DefaultAWSCredentialsProviderChain 을 사용하여 인증 정보를 가져오는 것이 좋지만, createClient(…)를 호출할 때 다른 AWSCredentialsProvider 를 지정할 수 있습니다.
27.3.3. 레코드의 성공적인 스토리지에 대해 Kinesis 프로듀서에 의해 설정된 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| Response Syntax에서 정의된 레코드 ID |
27.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.19 이상)으로 교체해야 합니다.
27.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
28장. AWS KMS 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.21로 사용 가능
KMS 구성 요소는 AWS KMS 인스턴스를 생성, 실행, 시작, 중지 및 종료합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon KMS를 사용하려면 가입해야 합니다. 자세한 내용은 Amazon KMS 에서 확인할 수 있습니다.
28.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-kms://label[?options]
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
28.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS KMS 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS MQ 기본 구성 | KMSConfiguration | |
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| 리전 (producer) | MQ 클라이언트가 작업해야 하는 리전 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS KMS 끝점은 URI 구문을 사용하여 구성됩니다.
aws-kms:label
다음 경로 및 쿼리 매개변수를 사용합니다.
28.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| label | 필수 논리 이름 | 문자열 |
28.2.2. 쿼리 매개변수 (8 매개변수: 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| kmsClient (producer) | 기존 구성된 AWS KMS를 클라이언트로 사용하려면 | AWSKMS | |
| 작업 (producer) | 필수 작업 수행 | KMSOperations | |
| proxyHost (producer) | KMS 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (producer) | KMS 클라이언트를 인스턴스화할 때 프록시 포트를 정의하려면 | 정수 | |
| 리전 (producer) | KMS 클라이언트가 작업해야 하는 리전 | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
필수 KMS 구성 요소 옵션
Amazon KMS 서비스에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 amazonKmsClient를 제공해야 합니다.
28.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
28.3.1. MQ 생산자가 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| listKeys 작업을 수행하는 동안 반환할 키의 제한 수입니다. |
|
|
| 수행하려는 작업 |
|
|
| createKey 작업을 수행하는 동안 사용할 주요 설명 |
|
|
| ID 키 |
종속 항목
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.16 이상)으로 교체해야 합니다.
28.4. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
29장. AWS Lambda Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.20에서 사용 가능
Lambda 구성 요소는 AWS Lambda 함수를 생성, 가져오기, 나열, 삭제 및 호출할 수 있습니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon Lambda를 사용하려면 가입해야 합니다. 자세한 내용은 Amazon Lambda 에서 확인할 수 있습니다.
Lambda 함수를 생성할 때 최소한 AWSLambdaBasicExecuteRole 정책이 연결된 IAM 역할을 지정해야 합니다.
경고
Lambda는 지역 서비스입니다. S3 버킷과 달리 특정 지역에서 생성된 Lambda 함수는 다른 지역에서 사용할 수 없습니다.
29.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-lambda://functionName[?options]
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
29.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS Lambda 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS Lambda 기본 구성 | LambdaConfiguration | |
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| 리전 (producer) | Amazon AWS Region | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS Lambda 엔드포인트는 URI 구문을 사용하여 구성됩니다.
aws-lambda:function
다음 경로 및 쿼리 매개변수를 사용합니다.
29.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| function | Lambda 함수의 필수 이름입니다. | 문자열 |
29.2.2. 쿼리 매개변수 (8 매개변수: 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 작업 (producer) | 수행해야 하는 작업입니다.The operation to perform. listFunctions, getFunction, createFunction, deleteFunction 또는 invokeFunction일 수 있습니다. | LambdaOperations | |
| 리전 (producer) | Amazon AWS Region | 문자열 | |
| awsLambdaClient (advanced) | 기존 구성된 AwsLambdaClient를 클라이언트로 사용하려면 | AWSLambda | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| proxyHost (proxy) | Lambda 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하려면 | 문자열 | |
| proxyPort (proxy) | Lambda 클라이언트를 인스턴스화할 때 프록시 포트를 정의하려면 | 정수 | |
| accesskey (보안) | Amazon AWS Access Key | 문자열 | |
| secretKey (security) | Amazon AWS Secret Key | 문자열 |
필수 Lambda 구성 요소 옵션
Amazon Lambda 서비스에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 awsLambdaClient를 제공해야 합니다.
29.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
29.3.1. Lambda Pro에서 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | header | 유형 | 설명 | 필수 항목 |
|---|---|---|---|---|
| All |
|
| 수행할 작업입니다. 쿼리 매개변수로 전달된 덮어쓰기 작업 | 있음 |
| createFunction |
|
| 배포 패키지가 포함된 .zip 파일이 저장되는 Amazon S3 버킷 이름입니다. 이 버킷은 Lambda 함수를 생성하는 동일한 AWS 리전에 있어야 합니다. | 없음 |
| createFunction |
|
| 업로드할 Amazon S3 오브젝트(배포 패키지) 키 이름입니다. | 없음 |
| createFunction |
| 문자열 | 업로드할 Amazon S3 오브젝트(배포 패키지) 버전입니다. | 없음 |
| createFunction |
|
| zip 파일(배포 패키지)의 로컬 경로입니다. zip 파일의 내용도 메시지 본문에 넣을 수 있습니다. | 없음 |
| createFunction |
|
| Lambda가 함수를 실행할 때 다른 AWS(Amazon Web Services) 리소스에 액세스할 때 있다고 가정합니다. | 있음 |
| createFunction |
| 문자열 | 업로드 중인 Lambda 함수의 런타임 환경(nodejs, nodejs4.3, nodejs6.10, java8, python2.7, python3.6, dotnetcore1.0, odejs4.3-edge) | 있음 |
| createFunction |
|
| 코드 내의 함수는 Lambda가 실행을 시작하기 위해 호출합니다. Node.js의 경우 함수의 module-name.export 값입니다. Java의 경우 package.class-name::handler 또는 package.class-name이 될 수 있습니다. | 있음 |
| createFunction |
|
| 사용자가 제공하는 설명입니다. | 없음 |
| createFunction |
|
| Amazon SQS 큐 또는 Amazon SNS 항목의 대상 ARN(Amazon Resource Name)이 포함된 상위 개체입니다. | 없음 |
| createFunction |
|
| 함수를 위해 구성한 메모리 크기(MB)입니다. 는 64MB의 배수여야 합니다. | 없음 |
| createFunction |
|
| 함수의 환경 변수를 암호화하는 데 사용되는 KMS 키의 ARM(Amazon Resource Name)입니다. 제공되지 않는 경우 AWS Lambda는 기본 서비스 키를 사용합니다. | 없음 |
| createFunction |
|
| 이 부울 매개 변수는 AWS Lambda를 요청하여 Lambda 함수를 생성하고 버전을 atomic 작업으로 게시하는 데 사용할 수 있습니다. | 없음 |
| createFunction |
|
| Lambda가 함수를 종료해야 하는 함수 실행 시간입니다. 기본값은 3초입니다. | 없음 |
| createFunction |
|
| 함수의 추적 설정(Active 또는 PassThrough)입니다. | 없음 |
| createFunction |
|
| 환경 구성 설정을 나타내는 키-값 쌍입니다. | 없음 |
| createFunction |
|
| 새 기능에 할당된 태그(키-값 쌍) 목록입니다. | 없음 |
| createFunction |
|
| Lambda 함수가 VPC의 리소스에 액세스하는 경우 VPC에 있는 하나 이상의 보안 그룹 ID 목록입니다. | 없음 |
| createFunction |
|
| Lambda 함수가 VPC의 리소스에 액세스하는 경우 VPC에 있는 하나 이상의 서브넷 ID 목록입니다. | 없음 |
종속 항목
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.16 이상)으로 교체해야 합니다.
29.4. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
30장. AWS MQ Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.21로 사용 가능
MQ 구성 요소는 AWS MQ 인스턴스 생성, 실행, 시작, 중지 및 종료를 지원합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon MQ를 사용하려면 가입해야 합니다. 자세한 내용은 Amazon MQ 에서 확인할 수 있습니다.
30.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-mq://label[?options]
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
30.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS MQ 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS MQ 기본 구성 | MQConfiguration | |
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| 리전 (producer) | MQ 클라이언트가 작업해야 하는 리전 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS MQ 엔드포인트는 URI 구문을 사용하여 구성됩니다.
aws-mq:label
다음 경로 및 쿼리 매개변수를 사용합니다.
30.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| label | 필수 논리 이름 | 문자열 |
30.2.2. 쿼리 매개변수 (8 매개변수: 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| AmazonMqClient (producer) | 기존 구성된 AmazonMQClient를 클라이언트로 사용하려면 | AmazonMQ | |
| 작업 (producer) | 수행해야 하는 작업입니다.The operation to perform. 그것은 listBrokers,createBroker,deleteBroker 일 수 있습니다 | MQOperations | |
| proxyHost (producer) | MQ 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (producer) | MQ 클라이언트를 인스턴스화할 때 프록시 포트 정의 | 정수 | |
| 리전 (producer) | MQ 클라이언트가 작업해야 하는 리전 | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
필수 EC2 구성 요소 옵션
Amazon EC2 서비스에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 amazonEc2Client를 제공해야 합니다.
30.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
30.3.1. MQ 생산자가 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| listBrokers 작업에서 검색해야 하는 결과 수 |
|
|
| 브로커 이름 |
|
|
| 수행하려는 작업 |
|
|
| 브로커 ID |
|
|
| createBroker 작업의 브로커 배포 모드 |
종속 항목
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.16 이상)으로 교체해야 합니다.
30.4. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
31장. AWS S3 스토리지 서비스 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.8에서 사용 가능
S3 구성 요소는 Amazon의 S3 서비스에서 objetc를 저장 및 검색할 수 있도록 지원합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon S3 사용을 위해 등록되어야 합니다. 자세한 내용은 Amazon S3 에서 확인할 수 있습니다.
31.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-s3://bucketNameOrArn[?options]
버킷이 없으면 해당 버킷이 생성됩니다.
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
예를 들어 버킷 helloBucket 에서 hello.txt 파일을 읽으려면 다음 스니펫을 사용합니다.
from("aws-s3:helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&prefix=hello.txt")
.to("file:/var/downloaded");
31.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS S3 Storage Service 구성 요소는 아래 나열된 5가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS S3 기본 구성 | S3Configuration | |
| accesskey (공용) | Amazon AWS Access Key | 문자열 | |
| secretKey (common) | Amazon AWS Secret Key | 문자열 | |
| region (공용) | 버킷이 있는 리전입니다. 이 옵션은 com.amazonaws.services.s3.model.CreateBucketRequest에서 사용됩니다. | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS S3 Storage 서비스 끝점은 URI 구문을 사용하여 구성됩니다.
aws-s3:bucketNameOrArn
다음 경로 및 쿼리 매개변수를 사용합니다.
31.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| bucketNameOrArn | 필수 버킷 이름 또는 ARN | 문자열 |
31.2.2. 쿼리 매개변수(50개 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| AmazonS3Client (일반) | 링크에서 com.amazonaws.services.sqs.AmazonS3 참조.https://camel.apache.org/registry.htmlRegistry. | AmazonS3 | |
| pathStyleAccess (common) | S3 클라이언트가 경로 스타일 액세스를 사용해야 하는지 여부 | false | boolean |
| policy (공용) | com.amazonaws.services.s3.AmazonS3setBucketPolicy() 메서드에 설정할 이 큐의 정책입니다. | 문자열 | |
| proxyHost (일반) | SQS 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (공용) | 클라이언트 정의 내에서 사용할 프록시 포트를 지정합니다. | 정수 | |
| region (공용) | S3 클라이언트가 작업해야 하는 지역 | 문자열 | |
| IAMCredentials 사용 (일반) | S3 클라이언트가 EC2 인스턴스에서 인증 정보를 로드해야 하는지 또는 정적 인증 정보를 전달할지 여부를 설정합니다. | false | boolean |
| encryptionMaterials (일반) | Symmetric/Asymmetric client usage의 경우 사용할 암호화 자료 | EncryptionMaterials | |
| useEncryption (common) | 암호화를 사용해야 하는지 여부를 정의합니다. | false | boolean |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| deleteAfterRead (consumer) | 검색 후 S3에서 오브젝트를 삭제합니다. 삭제는 Exchange가 커밋된 경우에만 수행됩니다. 롤백이 발생하면 오브젝트가 삭제되지 않습니다. 이 옵션이 false이면 동일한 오브젝트가 폴링에서 다시 검색됩니다. 따라서 경로에 Idempotent Consumer EIP를 사용하여 중복을 필터링해야 합니다. S3ConstantsBUCKET_NAME 링크 및 S3ConstantsKEY 헤더 링크 또는 S3ConstantsKEY 헤더 링크를 사용하여 필터링할 수 있습니다. | true | boolean |
| 파일 이름 (consumer) | 지정된 파일 이름을 사용하여 버킷에서 오브젝트를 가져오려면 다음을 수행합니다. | 문자열 | |
| includeBody (consumer) | true인 경우 교환 본문이 파일의 콘텐츠로 스트림으로 설정됩니다. false인 경우 헤더는 S3 오브젝트 메타데이터로 설정되지만 본문은 null입니다. 이 옵션은 autocloseBody 옵션과 관련이 있습니다. includeBody를 true로 설정하고 autocloseBody를 false로 설정하면 S3Object 스트림을 닫을 수 있는 호출자가 됩니다. autocloseBody를 true로 설정하면 S3Object 스트림이 자동으로 종료됩니다. | true | boolean |
| maxConnections (consumer) | S3 클라이언트 구성에서 maxConnections 매개변수를 설정 | 60 | int |
| maxMessagesPerPoll (consumer) | 각 폴링에서 폴링할 최대 메시지 수를 폴링으로 가져옵니다. 는 기본값 무제한이지만 0 또는 음수를 사용하여 무제한으로 비활성화합니다. | 10 | int |
| 접두사 (consumer) | 관심 있는 오브젝트만 사용하기 위해 com.amazonaws.services.s3.model.ListObjectsRequest에서 사용되는 접두사입니다. | 문자열 | |
| sendEmptyMessageWhenIdle (consumer) | 폴링 소비자가 파일을 폴링하지 않은 경우 이 옵션을 활성화하여 빈 메시지( 본문 없음)를 대신 보낼 수 있습니다. | false | boolean |
| autocloseBody (consumer) | 이 옵션이 true이고 includeBody가 true이면 교환 완료 시 S3Object.close() 메서드가 호출됩니다. 이 옵션은 includeBody 옵션과 관련이 있습니다. includeBody를 true로 설정하고 autocloseBody를 false로 설정하면 S3Object 스트림을 닫을 수 있는 호출자가 됩니다. autocloseBody를 true로 설정하면 S3Object 스트림이 자동으로 종료됩니다. | true | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| pollStrategy (consumer) | 플러그형 org.apache.camel.PollingConsumerPollingStrategy를 사용하면 Camel에서 Exchange를 생성하고 라우팅하기 전에 폴링 작업 중에 일반적으로 발생한 오류 처리를 제어하는 사용자 정의 구현을 제공할 수 있습니다. | PollingConsumerPoll Strategy | |
| deleteAfterwrite (producer) | S3 파일이 업로드된 후 파일 오브젝트 삭제 | false | boolean |
| multiPartUpload (producer) | 만약 그것이 사실이라면, camel은 다중 부분 포맷을 사용하여 파일을 업로드 할 것이며, 부분 크기는 partSize의 옵션에 의해 결정됩니다. | false | boolean |
| 작업 (producer) | 사용자가 업로드만 하고 싶지 않은 경우 수행할 작업 | S3Operations | |
| partSize (producer) | 다중 부분 업로드에 사용되는 partSize를 설정하면 기본 크기는 25M입니다. | 26214400 | long |
| serverSideEncryption (producer) | AWS 관리 키를 사용하여 오브젝트를 암호화할 때 서버 측 암호화 알고리즘을 설정합니다. 예를 들어 AES256을 사용합니다. | 문자열 | |
| StorageClass (producer) | com.amazonaws.services.s3.model.PutObjectRequest 요청에 설정할 스토리지 클래스입니다. | 문자열 | |
| awsKMSKeyId (producer) | KMS가 활성화된 경우 사용할 KMS 키의 id를 정의합니다. | 문자열 | |
| useAwsKMS (producer) | KMS를 사용해야 하는지 여부를 정의합니다. | false | boolean |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| accelerateModeEnabled (고급) | Accelerate Mode enabled가 true 또는 false인 경우 정의 | false | boolean |
| chunkedEncodingDisabled (고급) | Chunked Encoding이 true 또는 false인 경우 정의 | false | boolean |
| dualstackEnabled (고급) | Dualstack enabled가 true인지 false인지 정의합니다. | false | boolean |
| forceGlobalBucketAccess Enabled (고급) | Force Global Bucket Access enabled가 true인지 아니면 false를 정의합니다. | false | boolean |
| payloadSigningEnabled (고급) | Payload Signing enabled가 true인지 false인지 정의합니다. | false | boolean |
| backoffErrorThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 오류 폴링(일부 오류 발생) 수입니다. | int | |
| backoffIdleThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 유휴 폴링 수입니다. | int | |
| backoffMultiplier (scheduler) | 예약된 폴링 소비자 백오프가 연속된 여러 개의 유휴/errors가 있는 경우 해당 행에 사용할 수 있습니다. multiplier는 다음 실제 시도가 다시 발생하기 전에 건너뛸 폴링 수입니다. 이 옵션을 사용하는 경우 backoffIdleThreshold 및/또는 backoffErrorThreshold도 구성해야 합니다. | int | |
| 지연 (scheduler) | 다음 폴링보다 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 500 | long |
| greedy (scheduler) | greedy가 활성화된 경우 ScheduledPollConsumer는 이전 실행이 1개 이상의 메시지를 폴링하면 즉시 다시 실행됩니다. | false | boolean |
| initialDelay (scheduler) | 첫 번째 폴링이 시작되기 전까지의 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 1000 | long |
| runLoggingLevel (scheduler) | 소비자는 폴링할 때 시작/완료 로그 행을 기록합니다. 이 옵션을 사용하면 로깅 수준을 구성할 수 있습니다. | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 소비자에 사용할 사용자 지정/공유 스레드 풀을 구성할 수 있습니다. 기본적으로 각 소비자는 자체 스레드 스레드 풀이 있습니다. | ScheduledExecutor Service | |
| 스케줄러 (scheduler) | camel-spring 또는 camel-quartz2 구성 요소에서 cron 스케줄러를 사용하려면 | none | ScheduledPollConsumer Scheduler |
| 스케줄러 속성 (scheduler) | 사용자 지정 스케줄러 또는 Quartz2, Spring 기반 스케줄러를 사용할 때 추가 속성을 구성하려면 다음을 수행합니다. | map | |
| StartScheduler (scheduler) | 스케줄러가 자동으로 시작되어야 하는지 여부입니다. | true | boolean |
| timeUnit (scheduler) | initialDelay 및 지연 옵션의 시간 단위입니다. | 밀리초 | TimeUnit |
| UseFixedDelay (scheduler) | 고정 지연 또는 고정 속도가 사용되는 경우 제어합니다. 자세한 내용은 JDK의 ScheduledExecutorService를 참조하십시오. | true | boolean |
| accesskey (보안) | Amazon AWS Access Key | 문자열 | |
| secretKey (security) | Amazon AWS Secret Key | 문자열 |
필요한 S3 구성 요소 옵션
Amazon의 S3에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 amazonS3Client를 제공해야 합니다.
31.3. batch Consumer 링크 복사링크가 클립보드에 복사되었습니다!
이 구성 요소는 배치 소비자를 구현합니다.
예를 들어 이 배치에 있는 메시지 수를 알 수 있으며, 예를 들어 집계에서 이 메시지 수를 집계할 수 있습니다.
31.4. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
31.4.1. S3 생산자가 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 이 오브젝트가 저장되거나 현재 작업에 사용할 버킷 이름 |
|
|
| Camel 2.18: 현재 작업에 사용할 버킷 대상 이름입니다. |
|
|
| 이 오브젝트의 콘텐츠 길이입니다. |
|
|
| 이 오브젝트의 콘텐츠 유형입니다. |
|
|
| Camel 2.8.2: 이 개체의 콘텐츠 제어입니다. |
|
|
| Camel 2.8.2: 이 오브젝트의 콘텐츠 불일치. |
|
|
| Camel 2.8.2: 이 개체의 콘텐츠 인코딩. |
|
|
| Camel 2.8.2: 이 오브젝트의 md5 체크섬입니다. |
|
|
| Camel 2.18: 현재 작업에 사용할 대상 키 |
|
|
| 이 개체를 저장할 키 또는 현재 작업에 사용할 키입니다.The key under which this object will be stored or which will be used for the current operation. |
|
|
| Camel 2.8.2: 이 개체의 마지막으로 수정된 타임스탬프입니다. |
|
|
| Camel 2.18: 수행할 작업. 허용되는 값은 copyObject, listBuckets, deleteBucket, downloadLink입니다. |
|
|
| Camel 2.8.4: 이 오브젝트의 스토리지 클래스입니다. |
|
|
|
Camel 2.11.0: 오브젝트에 적용할 수 있는 acl입니다. 허용 값은 |
|
|
|
Camel 2.11.0: 잘 구성된 Amazon S3 Access Control List 오브젝트입니다. 자세한 내용은 |
|
|
| Camel 2.15.0: 사용자 지정 objectMetadata 헤더를 가져오거나 설정합니다. |
|
| 문자열 | Camel 2.16: AWS 관리 키를 사용하여 오브젝트를 암호화할 때 서버 측 암호화 알고리즘을 설정합니다. 예를 들어 AES256을 사용합니다. |
|
|
| 현재 작업에서 저장되거나 반환될 오브젝트의 버전 |
31.4.2. S3 생산자가 설정한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 새로 업로드된 오브젝트의 ETag 값입니다. |
|
|
| 새로 업로드된 오브젝트의 선택적 버전 ID입니다. |
|
|
| URL 다운로드 링크의 만료(밀리코어)입니다. 링크는 CamelAwsS3DownloadLink 응답 헤더에 저장됩니다. |
31.4.3. S3 소비자가 설정한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 이 오브젝트가 저장되는 키입니다. |
|
|
| 이 오브젝트가 포함된 버킷의 이름입니다. |
|
|
| RFC 1864에 따라 관련 오브젝트의 16진수로 인코딩된 128비트 MD5 다이제스트입니다. 이 데이터는 호출자가 수신한 데이터가 Amazon S3에서 보낸 데이터와 동일한지 확인하는 무결성 검사로 사용됩니다. |
|
|
| Amazon S3가 마지막으로 연결된 오브젝트에 대한 수정을 기록한 날짜와 시간을 나타내는 Last-Modified 헤더 값입니다. |
|
|
| 사용 가능한 경우 관련 Amazon S3 오브젝트의 버전 ID입니다. 버전 ID는 오브젝트 버전 관리를 사용하는 Amazon S3 버킷에 오브젝트를 업로드할 때만 오브젝트에 할당됩니다. |
|
|
| Content-Type HTTP 헤더: 연결된 오브젝트에 저장된 콘텐츠 유형을 나타냅니다. 이 헤더의 값은 표준 MIME 유형입니다. |
|
|
| base64로 인코딩된 128-bit MD5 다이제스트는 RFC 1864에 따라 관련 개체 (content - 헤더를 포함하지 않음)입니다. 이 데이터는 Amazon S3에서 수신한 데이터가 호출자와 동일한 데이터인지 확인하는 메시지 무결성 검사로 사용됩니다. |
|
|
| 연결된 개체의 크기를 바이트 단위로 나타내는 Content-Length HTTP 헤더입니다.The Content-Length HTTP header indicating the size of the associated object in bytes. |
|
|
| 선택 사항 인 Content-Encoding HTTP 헤더는 개체에 적용된 콘텐츠 인코딩과 Content-Type 필드에서 참조하는 미디어 유형을 가져오기 위해 적용해야 하는 디코딩 메커니즘을 지정합니다. |
|
|
| 선택 사항 인 Content-Disposition HTTP 헤더: 오브젝트를 저장할 권장 파일 이름과 같은 프레젠테이션 정보를 지정합니다. |
|
|
| 사용자가 HTTP 요청/응답 체인을 따라 캐싱 동작을 지정할 수 있는 선택적 Cache-Control HTTP 헤더입니다. |
|
| 문자열 | Camel 2.16: AWS 관리 키를 사용하여 오브젝트를 암호화할 때 서버 측 암호화 알고리즘입니다. |
31.4.4. 고급 AmazonS3 구성 링크 복사링크가 클립보드에 복사되었습니다!
Camel 애플리케이션이 방화벽 뒤에서 실행 중이거나 AmazonS3 인스턴스 구성을 더 많이 제어해야 하는 경우 고유한 인스턴스를 생성할 수 있습니다.
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
AmazonS3 client = new AmazonS3Client(awsCredentials, clientConfiguration);
registry.bind("client", client);
Camel aws-s3 구성 요소 구성에서 참조하십시오.
from("aws-s3://MyBucket?amazonS3Client=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
31.4.5. S3 구성 요소에 KMS 사용 링크 복사링크가 클립보드에 복사되었습니다!
AWS KMS를 사용하여 AWS 인프라를 사용하여 데이터를 암호화/암호화하려면 다음 예제와 같이 2.21.x에 도입된 옵션을 사용할 수 있습니다.
from("file:tmp/test?fileName=test.txt")
.setHeader(S3Constants.KEY, constant("testFile"))
.to("aws-s3://mybucket?amazonS3Client=#client&useAwsKMS=true&awsKMSKeyId=3f0637ad-296a-3dfe-a796-e60654fb128c");
이렇게 하면 S3에 KMS 키 3f0637ad-296a-3dfe-a796-e60654fb128c를 사용하여 test.txt 파일을 암호화합니다. 이 파일을 다운로드하도록 요청하면 암호 해독은 다운로드 전에 직접 수행됩니다.
31.4.6. s3 구성 요소와 함께 "IAMCredentials" 사용 링크 복사링크가 클립보드에 복사되었습니다!
AWS IAM 인증 정보를 사용하려면 먼저 Camel 애플리케이션을 시작하는 EC2에 적절한 정책이 효과적으로 실행되도록 하는 적절한 정책이 포함된 IAM 역할이 있는지 확인해야 합니다. 이 기능은 원격 인스턴스에서만 "true"로 설정되어야 합니다. 또한 IAM이 AWS 특정 구성 요소이므로 여전히 정적 인증 정보를 로컬에서 사용해야 하지만 이제 AWS 환경을 보다 쉽게 관리할 수 있어야 합니다. 이를 구현하고 이해한 후에는 쿼리 매개변수 "IAMCredentials"를 AWS 환경에서 "true"로 설정할 수 있습니다. 로컬 및 원격 환경에 따라 이를 효과적으로 설정 및 해제하려면 시스템 환경 변수를 사용하여 이 쿼리 매개 변수를 활성화하는 것을 고려할 수 있습니다. 예를 들어 코드에서 "useIAMCredentials" 쿼리 매개변수를 "true"로 설정할 수 있습니다. "isRemote"라는 시스템 환경 변수가 true로 설정된 경우 (이 작업을 수행하는 다른 많은 방법이 있으며 간단한 예를 수행해야 합니다). 정적 인증 정보가 완전히 필요하지는 않지만 AWS 환경에서 IAM 인증 정보를 사용하면 원격 환경에서 새로 고칠 필요가 없고 주요 보안 강화가 추가됩니다(IAM 인증 정보는 6시간마다 자동으로 새로 고쳐지고 정책이 업데이트될 때 업데이트됨). 이는 AWS에서 인증 정보를 관리하는 데 권장되는 방법이므로 가능한 한 자주 사용해야 합니다.
31.5. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.8 이상)으로 교체해야 합니다.
31.6. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
32장. AWS SimpleDB Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.9에서 사용 가능
sdb 구성 요소는 Amazon의 SDB 서비스에서 데이터를 저장하고 검색할 수 있도록 지원합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon SDB를 사용하도록 등록해야 합니다. 자세한 내용은 Amazon SDB 에서 확인할 수 있습니다.
32.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-sdb://domainName[?options]
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
32.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS SimpleDB 구성 요소에는 옵션이 없습니다.
AWS SimpleDB 엔드포인트는 URI 구문을 사용하여 구성됩니다.
aws-sdb:domainName
다음 경로 및 쿼리 매개변수를 사용합니다.
32.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| domainName | 필수 도메인의 이름은 현재 작업 중인 도메인입니다. | 문자열 |
32.2.2. 쿼리 매개 변수(10 매개변수: 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| AmazonSDBClient (producer) | AmazonSimpleDB를 클라이언트로 사용 | AmazonSimpleDB | |
| ConsistentRead (producer) | 데이터를 읽을 때 강력한 일관성을 강제 적용할지 여부를 결정합니다.Determines whether or not strong consistency should be enforced when data is read. | false | boolean |
| maxNumberOfDomains (producer) | 반환할 최대 도메인 이름 수입니다. 범위는 1에서 100까지입니다. | 정수 | |
| 작업 (producer) | 수행할 작업 | PutAttributes | SdbOperations |
| proxyHost (producer) | SDB 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (producer) | SDB 클라이언트를 인스턴스화할 때 프록시 포트 정의 | 정수 | |
| 리전 (producer) | SDB 클라이언트가 작업해야 하는 리전 | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
필수 SDB 구성 요소 옵션
Amazon의 SDB에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 amazonSDBClient를 제공해야 합니다.
32.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
32.3.1. SDB 생산자가 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 수행할 속성 목록입니다. |
|
|
| 검색할 속성의 이름입니다. |
|
|
| 데이터를 읽을 때 강력한 일관성을 강제 적용할지 여부를 결정합니다.Determines whether or not strong consistency should be enforced when data is read. |
|
|
| 일괄 처리에서 삭제 작업을 수행할 항목 목록입니다. |
|
|
| 현재 작업 중인 도메인의 이름입니다. |
|
|
| 이 항목의 고유 키입니다. |
|
|
| 반환할 최대 도메인 이름 수입니다. 범위는 1 *에서 100까지입니다. |
|
|
| 도메인/배치 이름의 다음 목록을 시작할 위치를 지정하는 문자열입니다. |
|
|
| URI 옵션에서 작업을 재정의하려면 다음을 수행합니다. |
|
|
| 항목에 배치할 속성 목록입니다. |
|
|
| 도메인에 배치할 항목 목록입니다. |
|
|
| 도메인을 쿼리하는 데 사용되는 식입니다. |
|
|
| 지정된 경우 지정된 특성이 업데이트/삭제할지 여부를 결정하는 업데이트 조건입니다. |
32.3.2. DomainMetadata 작업 중 설정된 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| Epoch(UNIX)초의 메타데이터를 계산하는 데이터 및 시간입니다. |
|
|
| 도메인의 모든 항목 수입니다. |
|
|
| 도메인의 고유한 특성 이름 수입니다. |
|
|
| 도메인에 있는 모든 특성 이름/값 쌍의 수입니다. |
|
|
| 도메인의 모든 고유 특성 이름의 총 크기(바이트)입니다. |
|
|
| 도메인의 모든 특성 값의 총 크기(바이트)입니다. |
|
|
| 도메인의 모든 항목 이름(바이트)의 총 크기입니다. |
32.3.3. GetAttributes 작업 중 메시지 헤더 설정 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 작업에서 반환된 속성 목록입니다. |
32.3.4. ListDomains 작업 중 설정된 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 식과 일치하는 도메인 이름 목록입니다. |
|
|
| 특정 MaxNumberOfDomains보다 많은 도메인이 있음을 나타내는 불투명 토큰입니다. |
32.3.5. Select 작업 중 메시지 헤더 설정 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| select 식과 일치하는 항목 목록입니다. |
|
|
| opaque 토큰으로 MaxNumberOfItem보다 더 많은 항목이 일치했거나 응답 크기가 1메가바이트를 초과했거나 실행 시간이 5초를 초과했음을 나타냅니다. |
32.3.6. 고급 AmazonSimpleDB 구성 링크 복사링크가 클립보드에 복사되었습니다!
AmazonSimpleDB 인스턴스 구성을 더 많이 제어해야 하는 경우 고유한 인스턴스를 만들고 URI에서 해당 인스턴스를 참조할 수 있습니다.
from("direct:start")
.to("aws-sdb://domainName?amazonSDBClient=#client");
#client 는 레지스트리에서 AmazonSimpleDB 를 나타냅니다.
예를 들어 Camel 애플리케이션이 방화벽 뒤에서 실행 중인 경우입니다.
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
AmazonSimpleDB client = new AmazonSimpleDBClient(awsCredentials, clientConfiguration);
registry.bind("client", client);
32.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.8.4 이상)으로 교체해야 합니다.
32.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
33장. AWS Simple Email Service 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.9에서 사용 가능
ses 구성 요소는 Amazon SES 서비스로 이메일 전송을 지원합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon SES를 사용하려면 가입해야 합니다. 더 많은 정보는 Amazon SES 에서 확인할 수 있습니다.
33.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-ses://from[?options]
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
33.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS Simple Email Service 구성 요소는 아래 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS SES 기본 구성 | SesConfiguration | |
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| 리전 (producer) | SES 클라이언트가 작업해야 하는 지역 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS Simple Email Service 엔드포인트는 URI 구문을 사용하여 구성됩니다.
aws-ses:from
다음 경로 및 쿼리 매개변수를 사용합니다.
33.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| from | 보낸 사람의 이메일 주소가 필요합니다. | 문자열 |
33.2.2. 쿼리 매개변수(11 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| AmazonSESClient (producer) | AmazonSimpleEmailService를 클라이언트로 사용 | AmazonSimpleEmail Service | |
| proxyHost (producer) | SES 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (producer) | SES 클라이언트를 인스턴스화할 때 프록시 포트 정의 | 정수 | |
| 리전 (producer) | SES 클라이언트가 작업해야 하는 지역 | 문자열 | |
| replyToAddresses (producer) | 메시지에 대한 회신 이메일 주소 목록입니다. 'CamelAwsSesReplyToAddresses' 헤더를 사용하여 재정의합니다. | list | |
| returnPath (producer) | 반송 알림이 전달될 이메일 주소입니다. 'CamelAwsSes returnPath' 헤더를 사용하여 재정의합니다. | 문자열 | |
| 제목 (producer) | 메시지 헤더 'CamelAwsSesSubject'가 없는 경우 사용되는 주제입니다. | 문자열 | |
| 다음으로 이동 (producer) | 대상 이메일 주소 목록. 'CamelAwsSesTo' 헤더를 사용하여 재정의할 수 있습니다. | list | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| accesskey (보안) | Amazon AWS Access Key | 문자열 | |
| secretKey (security) | Amazon AWS Secret Key | 문자열 |
필요한 SES 구성 요소 옵션
Amazon SES에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 amazonSESClient를 제공해야 합니다.
33.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
33.3.1. SES 생산자가 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 보낸 사람의 이메일 주소입니다. |
|
|
| 이 이메일의 대상입니다. |
|
|
| 메시지의 대상입니다. |
|
|
| 메시지의 회신 이메일 주소입니다. |
|
|
| 알림이 전달되어야 하는 이메일 주소입니다. |
|
|
| Camel 2.12.3 이후 이메일 콘텐츠가 HTML인지 표시하는 플래그입니다. |
33.3.2. SES 생산자가 설정한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| Amazon SES 메시지 ID입니다. |
33.3.3. 고급 AmazonSimpleEmailService 구성 링크 복사링크가 클립보드에 복사되었습니다!
AmazonSimpleEmailService 인스턴스 구성을 더 많이 제어해야 하는 경우 고유한 인스턴스를 만들고 URI에서 해당 인스턴스를 참조할 수 있습니다.
from("direct:start")
.to("aws-ses://example@example.com?amazonSESClient=#client");
#client 는 레지스트리의 AmazonSimpleEmailService 를 나타냅니다.
예를 들어 Camel 애플리케이션이 방화벽 뒤에서 실행 중인 경우입니다.
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
AmazonSimpleEmailService client = new AmazonSimpleEmailServiceClient(awsCredentials, clientConfiguration);
registry.bind("client", client);
33.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.8.4 이상)으로 교체해야 합니다.
33.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
34장. AWS Simple Notification System 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.8에서 사용 가능
SNS 구성 요소는 메시지를 Amazon Simple Notification Topic으로 보낼 수 있습니다. Amazon API 구현은 AWS SDK 에서 제공합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon SNS를 사용하기 위해 등록되어야 합니다. 자세한 내용은 Amazon SNS 에서 확인할 수 있습니다.
34.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-sns://topicNameOrArn[?options]
이 문제는 아직 없는 경우 생성됩니다.
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
34.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS Simple Notification System 구성 요소는 아래 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS SNS 기본 구성 | SnsConfiguration | |
| accesskey (producer) | Amazon AWS Access Key | 문자열 | |
| secretKey (producer) | Amazon AWS Secret Key | 문자열 | |
| 리전 (producer) | SNS 클라이언트가 작업해야 하는 리전 | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS Simple Notification System 끝점은 URI 구문을 사용하여 구성됩니다.
aws-sns:topicNameOrArn
다음 경로 및 쿼리 매개변수를 사용합니다.
34.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| topicNameOrArn | 필수 항목 이름 또는 ARN | 문자열 |
34.2.2. 쿼리 매개변수(11 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| AmazonSNSClient (producer) | AmazonSNS를 클라이언트로 사용 | AmazonSNS | |
| headerFilterStrategy (producer) | 사용자 지정 HeaderFilterStrategy를 사용하여 헤더를 Camel에 매핑하려면 다음을 수행합니다. | HeaderFilterStrategy | |
| MessageStructure (producer) | json과 같이 사용할 메시지 구조 | 문자열 | |
| 정책 (producer) | 이 큐의 정책 | 문자열 | |
| proxyHost (producer) | SNS 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (producer) | SNS 클라이언트를 인스턴스화할 때 프록시 포트를 정의하려면 | 정수 | |
| 리전 (producer) | SNS 클라이언트가 작업해야 하는 리전 | 문자열 | |
| 제목 (producer) | 메시지 헤더 'CamelAwsSnsSubject'가 없는 경우 사용되는 주제입니다. | 문자열 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| accesskey (보안) | Amazon AWS Access Key | 문자열 | |
| secretKey (security) | Amazon AWS Secret Key | 문자열 |
필수 SNS 구성 요소 옵션
Amazon의 SNS에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 amazonSNSClient를 제공해야 합니다.
34.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
34.3.1. SNS 프로듀서가 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
|
Amazon SNS 메시지 제목. 설정하지 않으면 |
34.3.2. SNS 프로듀서에 의해 설정된 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| Amazon SNS 메시지 ID입니다. |
34.3.3. 고급 AmazonSNS 구성 링크 복사링크가 클립보드에 복사되었습니다!
AmazonSNS 인스턴스 구성을 더 많이 제어해야 하는 경우 고유한 인스턴스를 생성하고 URI에서 해당 인스턴스를 참조할 수 있습니다.
from("direct:start")
.to("aws-sns://MyTopic?amazonSNSClient=#client");
#client 는 레지스트리의 AmazonSNS 를 나타냅니다.
예를 들어 Camel 애플리케이션이 방화벽 뒤에서 실행 중인 경우입니다.
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
AmazonSNS client = new AmazonSNSClient(awsCredentials, clientConfiguration);
registry.bind("client", client);
34.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.8 이상)으로 교체해야 합니다.
34.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
35장. AWS Simple Queue Service 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.6에서 사용 가능
sqs 구성 요소는 Amazon의 SQS 서비스로 메시지를 보내고 받을 수 있도록 지원합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon SQS를 사용하려면 가입해야 합니다. 자세한 내용은 Amazon SQS 에서 확인할 수 있습니다.
35.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-sqs://queueNameOrArn[?options]
큐가 없으면 해당 큐가 생성됩니다.
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
35.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS Simple Queue Service 구성 요소는 아래 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS SQS 기본 구성 | SqsConfiguration | |
| accesskey (공용) | Amazon AWS Access Key | 문자열 | |
| secretKey (common) | Amazon AWS Secret Key | 문자열 | |
| region (공용) | queueOwnerAWSAccountId와 함께 사용할 수 있는 큐 리전을 지정하여 서비스 URL을 빌드합니다. | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS Simple Queue Service 엔드포인트는 URI 구문을 사용하여 구성됩니다.
aws-sqs:queueNameOrArn
다음 경로 및 쿼리 매개변수를 사용합니다.
35.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| queueNameOrArn | 필요한 대기열 이름 또는 ARN | 문자열 |
35.2.2. 쿼리 매개변수(46 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| AmazonAWSHost (일반) | Amazon AWS 클라우드의 호스트 이름입니다. | amazonaws.com | 문자열 |
| AmazonSQSClient (일반) | AmazonSQS를 클라이언트로 사용하기 | AmazonSQS | |
| headerFilterStrategy (common) | 사용자 지정 HeaderFilterStrategy를 사용하여 헤더를 Camel에 매핑하려면 다음을 수행합니다. | HeaderFilterStrategy | |
| queueOwnerAWSAccountId (일반) | 큐를 다른 계정 소유자와 연결해야 할 때 큐 소유자 aws 계정 ID를 지정합니다. | 문자열 | |
| region (공용) | queueOwnerAWSAccountId와 함께 사용할 수 있는 큐 리전을 지정하여 서비스 URL을 빌드합니다. | 문자열 | |
| attributeNames (consumer) | 사용할 때 수신할 속성 이름 목록입니다. 여러 이름은 쉼표로 구분할 수 있습니다. | 문자열 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| concurrentConsumers (consumer) | 여러 스레드를 사용하여 sqs 대기열을 폴링하여 처리량을 늘릴 수 있습니다. | 1 | int |
| defaultVisibilityTimeout (consumer) | 기본 표시 시간 초과(초) | 정수 | |
| deleteAfterRead (consumer) | 읽은 후 SQS에서 메시지 삭제 | true | boolean |
| deleteIfFiltered (consumer) | Exchange에서 필터를 통해 얻을 수 없는 경우 DeleteMessage를 SQS 큐에 보낼지 여부입니다. 'false'와 교환이 경로의 Camel 필터 업스트림을 통해 이를 수행하지 않는 경우 DeleteMessage를 보내지 마십시오. | true | boolean |
| extendMessageVisibility (consumer) | 활성화된 경우 예약된 백그라운드 작업은 SQS에서 메시지 가시성을 계속 확장합니다. 이 작업은 메시지를 처리하는 데 시간이 오래 걸리는 경우 필요합니다. true defaultVisibilityTimeout로 설정된 경우 를 설정해야 합니다. 자세한 내용은 Amazon docs에서 참조하십시오. | false | boolean |
| maxMessagesPerPoll (consumer) | 각 폴링에서 폴링할 최대 메시지 수를 폴링으로 가져옵니다. 는 기본값 무제한이지만 0 또는 음수를 사용하여 무제한으로 비활성화합니다. | int | |
| messageAttributeNames (consumer) | 사용할 때 수신할 메시지 속성 이름 목록입니다. 여러 이름은 쉼표로 구분할 수 있습니다. | 문자열 | |
| sendEmptyMessageWhenIdle (consumer) | 폴링 소비자가 파일을 폴링하지 않은 경우 이 옵션을 활성화하여 빈 메시지( 본문 없음)를 대신 보낼 수 있습니다. | false | boolean |
| visibilityTimeout (consumer) | 수신한 메시지가 com.amazonaws.services.sqs.model.SetQueueAttributesRequest에서 설정되도록 받은 메시지가 후속 검색 요청에서 숨겨진 기간(초)입니다. 이는 defaultVisibilityTimeout과 다른 경우에만 의미가 있습니다. 큐 표시 시간 초과 속성을 영구적으로 변경합니다. | 정수 | |
| waitTimeSeconds (consumer) | ReceiveMessage 작업 호출이 응답에 포함될 대기열에 있을 때까지 대기할 시간(초)입니다. | 정수 | |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| pollStrategy (consumer) | 플러그형 org.apache.camel.PollingConsumerPollingStrategy를 사용하면 Camel에서 Exchange를 생성하고 라우팅하기 전에 폴링 작업 중에 일반적으로 발생한 오류 처리를 제어하는 사용자 정의 구현을 제공할 수 있습니다. | PollingConsumerPoll Strategy | |
| delaySeconds (producer) | 몇 초 동안 메시지 전송이 지연됩니다. | 정수 | |
| messageDeduplicationId 전략 (producer) | FIFO 대기열의 경우에만 해당합니다. messageDeduplicationId를 메시지에 설정하기 위한 전략입니다. 다음 옵션 중 하나일 수 있습니다. useExchangeId, useContentBasedDeduplication. useContentBasedDeduplication 옵션의 경우 messageDeduplicationId가 메시지에 설정되지 않습니다. | useExchangeId | MessageDeduplicationId Strategy |
| messageGroupIdStrategy (producer) | FIFO 대기열의 경우에만 해당합니다. 메시지에서 messageGroupId를 설정하는 전략입니다. 다음 옵션 중 하나일 수 있습니다. useConstant, useExchangeId, usePropertyValue. usePropertyValue 옵션의 경우 속성 CamelAwsMessageGroupId가 사용됩니다. | MessageGroupIdStrategy | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| backoffErrorThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 오류 폴링(일부 오류 발생) 수입니다. | int | |
| backoffIdleThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 유휴 폴링 수입니다. | int | |
| backoffMultiplier (scheduler) | 예약된 폴링 소비자 백오프가 연속된 여러 개의 유휴/errors가 있는 경우 해당 행에 사용할 수 있습니다. multiplier는 다음 실제 시도가 다시 발생하기 전에 건너뛸 폴링 수입니다. 이 옵션을 사용하는 경우 backoffIdleThreshold 및/또는 backoffErrorThreshold도 구성해야 합니다. | int | |
| 지연 (scheduler) | 다음 폴링보다 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 500 | long |
| greedy (scheduler) | greedy가 활성화된 경우 ScheduledPollConsumer는 이전 실행이 1개 이상의 메시지를 폴링하면 즉시 다시 실행됩니다. | false | boolean |
| initialDelay (scheduler) | 첫 번째 폴링이 시작되기 전까지의 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 1000 | long |
| runLoggingLevel (scheduler) | 소비자는 폴링할 때 시작/완료 로그 행을 기록합니다. 이 옵션을 사용하면 로깅 수준을 구성할 수 있습니다. | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 소비자에 사용할 사용자 지정/공유 스레드 풀을 구성할 수 있습니다. 기본적으로 각 소비자는 자체 스레드 스레드 풀이 있습니다. | ScheduledExecutor Service | |
| 스케줄러 (scheduler) | camel-spring 또는 camel-quartz2 구성 요소에서 cron 스케줄러를 사용하려면 | none | ScheduledPollConsumer Scheduler |
| 스케줄러 속성 (scheduler) | 사용자 지정 스케줄러 또는 Quartz2, Spring 기반 스케줄러를 사용할 때 추가 속성을 구성하려면 다음을 수행합니다. | map | |
| StartScheduler (scheduler) | 스케줄러가 자동으로 시작되어야 하는지 여부입니다. | true | boolean |
| timeUnit (scheduler) | initialDelay 및 지연 옵션의 시간 단위입니다. | 밀리초 | TimeUnit |
| UseFixedDelay (scheduler) | 고정 지연 또는 고정 속도가 사용되는 경우 제어합니다. 자세한 내용은 JDK의 ScheduledExecutorService를 참조하십시오. | true | boolean |
| proxyHost (proxy) | SQS 클라이언트를 인스턴스화할 때 프록시 호스트를 정의하기 위해 | 문자열 | |
| proxyPort (proxy) | SQS 클라이언트를 인스턴스화할 때 프록시 포트 정의 | 정수 | |
| maximumMessageSize (queue) | SQS 메시지에는 이 큐에 대해 포함할 수 있는 maximumMessageSize(바이트 단위)입니다. | 정수 | |
| messageRetentionPeriod (queue) | messageRetentionPeriod(초)는 이 대기열에 대해 SQS가 메시지를 유지합니다. | 정수 | |
| 정책 (queue) | 이 큐의 정책 | 문자열 | |
| receiveMessageWaitTime Seconds (queue) | 요청에 WaitTimeSeconds를 지정하지 않으면 대기 시간을 결정하는 데 queue 속성 ReceiveMessageWaitTimeSeconds를 사용합니다. | 정수 | |
| redrivePolicy (queue) | DeadLetter 큐에 메시지를 보내는 정책을 지정합니다. 자세한 내용은 Amazon docs에서 참조하십시오. | 문자열 | |
| accesskey (보안) | Amazon AWS Access Key | 문자열 | |
| secretKey (security) | Amazon AWS Secret Key | 문자열 |
필수 SQS 구성 요소 옵션
Amazon의 SQS에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 amazonSQSClient를 제공해야 합니다.
35.3. batch Consumer 링크 복사링크가 클립보드에 복사되었습니다!
이 구성 요소는 배치 소비자를 구현합니다.
예를 들어 이 배치에 있는 메시지 수를 알 수 있으며, 예를 들어 집계에서 이 메시지 수를 집계할 수 있습니다.
35.4. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
35.4.1. SQS 생산자가 설정한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| Amazon SQS 메시지의 MD5 체크섬입니다. |
|
|
| Amazon SQS 메시지 ID. |
|
|
| Camel 2.11 부터 Amazon SQS 메시지가 다른 사람이 볼 수 있는 지연 시간. |
35.4.2. SQS 소비자가 설정한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| Amazon SQS 메시지의 MD5 체크섬입니다. |
|
|
| Amazon SQS 메시지 ID. |
|
|
| Amazon SQS 메시지 수신 핸들. |
|
|
| Amazon SQS 메시지 속성. |
35.4.3. 고급 AmazonSQS 구성 링크 복사링크가 클립보드에 복사되었습니다!
Camel 애플리케이션이 방화벽 뒤에서 실행 중이거나 AmazonSQS 인스턴스 구성을 더 많이 제어해야 하는 경우 고유한 인스턴스를 생성할 수 있습니다.
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
AmazonSQS client = new AmazonSQSClient(awsCredentials, clientConfiguration);
registry.bind("client", client);
Camel aws-sqs 구성 요소 구성에서 참조하십시오.
from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
35.5. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.6 이상)으로 교체해야 합니다.
35.6. JMS 스타일 선택기 링크 복사링크가 클립보드에 복사되었습니다!
SQS는 선택기를 허용하지 않지만 Camel Filter EIP를 사용하고 적절한 visibilityTimeout 을 설정하여 이를 효과적으로 달성할 수 있습니다. SQS가 메시지를 디스패치하면 DeleteMessage가 수신되지 않는 한 다른 소비자에게 메시지를 디스패치하려고 시도하기 전에 가시성 타임아웃까지 기다립니다. 기본적으로 Camel은 경로가 실패로 종료되지 않는 한 항상 DeleteMessage를 경로 끝에 보냅니다. 적절한 필터링을 수행하고 경로가 성공적으로 완료되는 경우에도 DeleteMessage를 보내지 않으려면 Filter를 사용합니다.
from("aws-sqs://MyQueue?amazonSQSClient=#client&defaultVisibilityTimeout=5000&deleteIfFiltered=false")
.filter("${header.login} == true")
.to("mock:result");
위의 코드에서 교환에 적절한 헤더가 없는 경우 필터를 통해 이를 수행하지 않으며 SQS 큐에서도 삭제되지 않습니다. 5000마초가 지나면 다른 사용자에게 메시지가 표시됩니다.
35.7. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- AWS 구성 요소
36장. AWS Simple Workflow 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.13에서 사용 가능
Simple Workflow 구성 요소는 Amazon의 Simple Workflow 서비스에서 워크플로 관리를 지원합니다.
사전 요구 사항
유효한 Amazon Web Services 개발자 계정이 있어야 하며 Amazon Simple Workflow를 사용하려면 가입해야 합니다. 자세한 내용은 Amazon Simple Workflow 에서 확인할 수 있습니다.
36.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
aws-swf://<workflow|activity>[?options]
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
36.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
AWS Simple Workflow 구성 요소는 아래 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | AWS SWF 기본 구성 | SWFConfiguration | |
| accesskey (공용) | Amazon AWS Access Key입니다. | 문자열 | |
| secretKey (common) | Amazon AWS Secret Key. | 문자열 | |
| region (공용) | Amazon AWS 리전. | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
AWS Simple Workflow 엔드포인트는 URI 구문을 사용하여 구성됩니다.
aws-swf:type
다음 경로 및 쿼리 매개변수를 사용합니다.
36.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| type | 필수 활동 또는 워크플로우 | 문자열 |
36.2.2. 쿼리 매개변수(30 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| AmazonSWClient (일반) | 지정된 AmazonSimpleWorkflowClient를 클라이언트로 사용하기 위해 | AmazonSimpleWorkflow Client | |
| dataConverter (일반) | 데이터 직렬화/데이저에 사용할 com.amazonaws.services.simpleworkflow.flow.DataConverter의 인스턴스입니다. | DataConverter | |
| 도메인 이름 (공용) | 사용할 워크플로 도메인입니다. | 문자열 | |
| eventname (common) | 사용할 워크플로 또는 활동 이벤트 이름입니다. | 문자열 | |
| region (공용) | Amazon AWS 리전. | 문자열 | |
| 버전 (공용) | 사용할 워크플로 또는 활동 이벤트 버전입니다. | 문자열 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| 클라이언트 구성 매개변수 (advanced) | 맵의 키/값을 사용하여 ClientConfiguration을 구성하려면 다음을 수행합니다. | map | |
| startWorkflowOptions 매개변수 (고급) | 맵의 키/값을 사용하여 StartWorkflowOptions를 구성하려면 다음을 수행합니다. | map | |
| sWClientParameters (advanced) | 맵의 키/값을 사용하여 AmazonSimpleWorkflowClient를 구성하려면 다음을 수행합니다. | map | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| activityList (activity) | 활동을 사용할 목록 이름입니다. | 문자열 | |
| activitySchedulingOptions (activity) | 활동 스케줄링 옵션 | 활동 일정 옵션 | |
| activityThreadPoolSize (activity) | 작업에 대한 작업 풀의 최대 스레드 수입니다. | 100 | int |
| activityTypeExecution Options (activity) | 활동 실행 옵션 | ActivityTypeExecution Options | |
| activityTypeRegistration Options (activity) | 활동 등록 옵션 | ActivityType RegistrationOptions | |
| childPolicy (workflow) | 워크플로를 종료할 때 하위 워크플로에서 사용할 정책입니다. | 문자열 | |
| executionStartToClose Timeout (workflow) | 실행 시작 시간을 닫기로 설정합니다. | 3600 | 문자열 |
| 작업 (workflow) | 워크플로 작업 | START | 문자열 |
| signalName (workflow) | 워크플로로 보낼 신호의 이름입니다. | 문자열 | |
| stateResultType (workflow) | 워크플로 상태를 쿼리할 때 결과 유형입니다. | 문자열 | |
| taskStartToCloseTimeout (workflow) | 작업 시작 시간을 닫기로 설정합니다. | 600 | 문자열 |
| terminationDetails (workflow) | 워크플로 종료에 대한 세부 정보. | 문자열 | |
| terminationReason (workflow) | 워크플로를 종료하는 이유입니다. | 문자열 | |
| workflowList (workflow) | 워크플로우를 사용할 목록 이름입니다. | 문자열 | |
| workflowTypeRegistration Options (workflow) | 워크플로 등록 옵션 | WorkflowType RegistrationOptions | |
| accesskey (보안) | Amazon AWS Access Key입니다. | 문자열 | |
| secretKey (security) | Amazon AWS Secret Key. | 문자열 |
필수 SWF 구성 요소 옵션
Amazon의 Simple Workflow Service에 액세스하려면 레지스트리 또는 accessKey 및 secretKey에 amazonSWClient를 제공해야 합니다.
36.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
36.3.1. SWF Workflow Producer에서 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
워크플로 생산자를 사용하면 워크플로와 상호 작용할 수 있습니다. 새 워크플로 실행을 시작하고, 상태를 쿼리하거나, 실행 중인 워크플로에 신호를 보내거나, 종료한 후 취소할 수 있습니다.
| header | 유형 | 설명 |
|---|---|---|
|
|
|
워크플로에서 수행할 작업입니다. 지원되는 작업은 |
|
|
| 사용할 워크플로 ID입니다. |
|
|
| 사용할 worfklow 실행 ID입니다. |
|
|
| 워크플로 상태를 쿼리할 때 결과 유형입니다. |
|
|
| 사용할 워크플로 또는 활동 이벤트 이름입니다. |
|
|
| 사용할 워크플로 또는 활동 이벤트 버전입니다. |
|
|
| 워크플로를 종료하는 이유입니다. |
|
|
| 워크플로 종료에 대한 세부 정보. |
|
|
| 워크플로를 종료할 때 하위 워크플로에서 사용할 정책입니다. |
36.3.2. SWF Workflow Producer에서 설정한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 사용된 worfklow ID 또는 새로 생성된 ID입니다. |
|
|
| worfklow는 사용되거나 생성된 ID를 실행합니다. |
36.3.3. SWF 워크플로 Consumer에서 설정한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
워크플로 소비자는 워크플로 논리를 나타냅니다. 이 서비스가 시작되면 폴링 워크플로 결정 작업을 시작하고 처리합니다. 워크플로 소비자 경로 처리 외에도 워크플로 소비자 경로도 신호(플래시 생산자에서 종료) 또는 상태 쿼리를 수신합니다. 워크플로 소비자의 주요 목적은 활동 생산자를 사용하여 실행할 활동 작업을 예약하는 것입니다. 실제로 활동 작업은 워크플로 소비자가 시작한 스레드에서만 예약할 수 있습니다.
| header | 유형 | 설명 |
|---|---|---|
|
|
| CamelSWFActionExecute, CamelSWFSignalReceivedAction 또는 CamelSWFGetStateAction의 현재 이벤트임을 나타냅니다. |
|
|
| 현재 결정 작업이 재생인지 여부를 나타냅니다.Indicates whether the current decision task is a replay. |
|
|
| 이 결정 작업의 시작 이벤트 시간입니다. |
36.3.4. SWF Activity Producer에서 설정한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
활동 생산자를 사용하면 활동 작업을 예약할 수 있습니다. 활동 생산자는 워크플로 소비자에 의해 시작된 스레드에서만 사용할 수 있으며 워크플로 소비자가 시작한 동기 교환을 처리할 수 있습니다.
| header | 유형 | 설명 |
|---|---|---|
|
|
| 예약할 활동 이름입니다. |
|
|
| 예약할 활동 버전입니다. |
36.3.5. SWF 활동 소비자에 의해 설정된 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 수동으로 완료된 작업의 작업 완료를 보고하는 데 필요한 작업 토큰입니다. |
36.3.6. 고급 AmazonSWClient 구성 링크 복사링크가 클립보드에 복사되었습니다!
AmazonSimpleWorkflowClient 인스턴스 구성을 더 많이 제어해야 하는 경우 고유한 인스턴스를 만들고 URI에서 해당 인스턴스를 참조할 수 있습니다.
#client 는 레지스트리의 AmazonSimpleWorkflowClient를 나타냅니다.
예를 들어 Camel 애플리케이션이 방화벽 뒤에서 실행 중인 경우입니다.
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
AmazonSimpleWorkflowClient client = new AmazonSimpleWorkflowClient(awsCredentials, clientConfiguration);
registry.bind("client", client);
36.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.13 이상)으로 교체해야 합니다.
36.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
AWS 구성 요소
37장. AWS XRay 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.21로 사용 가능
camel-aws-xray 구성 요소는 AWS XRay 를 사용하여 들어오고 나가는 Camel 메시지를 추적하고 타이밍하는 데 사용됩니다.
Camel로/에서 전송되는 수신 및 발신 메시지의 경우 이벤트(서브스크립션)를 캡처합니다.
37.1. 종속성 링크 복사링크가 클립보드에 복사되었습니다!
AWS XRay 지원을 Camel에 포함시키려면 Camel 관련 AWS XRay 관련 클래스가 포함된 아카이브를 프로젝트에 추가해야 합니다. 또한 AWS XRay 라이브러리도 사용할 수 있어야 합니다.
AWS XRay 및 Camel을 모두 포함하기 위해 종속성은 다음 Maven 가져오기를 사용합니다.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-xray-recorder-sdk-bom</artifactId>
<version>1.3.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws-xray</artifactId>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-xray-recorder-sdk-core</artifactId>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-xray-recorder-sdk-aws-sdk</artifactId>
</dependency>
<dependencies>
37.2. 설정 링크 복사링크가 클립보드에 복사되었습니다!
AWS XRay tracer의 구성 속성은 다음과 같습니다.
| 옵션 | 기본값 | 설명 |
|---|---|---|
| addExcludePatterns |
| 패턴과 일치하는 Camel 메시지의 추적을 비활성화하는 exclude 패턴을 설정합니다. 콘텐츠는 키가 routeId와 일치하는 패턴인 Set<String>입니다. 이 패턴은 인터셉터의 규칙을 사용합니다. |
| setTracingStrategy | NoopTracingStrategy |
|
현재 AWS XRay 추적 프로그램을 구성하여 Camel 애플리케이션을 위한 분산 추적을 제공할 수 있는 방법은 한 가지뿐입니다.
37.2.1. 명시적인 링크 복사링크가 클립보드에 복사되었습니다!
AWS XRay Tracer와 관련된 특정 종속성과 함께 POM에 camel-aws-xray 구성 요소를 포함합니다.
AWS XRay 지원을 명시적으로 구성하려면 XRayTracer 를 인스턴스화하고 camel 컨텍스트를 초기화합니다. 선택적으로 추적기를 지정 하거나 레지스트리 또는 ServiceLoader 를 사용하여 암시적으로 검색할 수 있습니다.
XRayTracer xrayTracer = new XRayTracer();
// By default it uses a NoopTracingStrategy, but you can override it with a specific InterceptStrategy implementation.
xrayTracer.setTracingStrategy(...);
// And then initialize the context
xrayTracer.init(camelContext);
XML에서 XRayTracer를 사용하려면 AWS XRay 추적기 빈을 정의하는 것입니다. Camel은 자동으로 검색하고 사용할 수 있습니다.
<bean id="tracingStrategy" class="..."/>
<bean id="aws-xray-tracer" class="org.apache.camel.component.aws.xray.XRayTracer" />
<property name="tracer" ref="tracingStrategy"/>
</bean>
기본 NoopTracingStrategy 의 경우 교환 생성 및 삭제만 추적되지만 특정 빈 또는 EIP 패턴을 호출하지는 않습니다.
37.2.2. 포괄적인 경로 실행 추적 링크 복사링크가 클립보드에 복사되었습니다!
여러 경로 간에 교환 실행을 추적하기 위해 교환 시 고유한 추적 ID가 생성되고 해당 값을 아직 사용할 수 없는 경우 헤더에 저장됩니다. 이 추적 ID는 처리된 교환에 대한 일관된 관점을 유지하기 위해 새 교환에 복사됩니다.
AWS XRay 추적은 스레드-로컬 기반으로 작동하므로 현재 하위/세그는 새 스레드로 복사되고 AWS XRay 문서에 설명된 대로 설정해야 합니다. 따라서 Camel AWS XRay 구성 요소는 전달된 AWS XRay Entity 를 새 스레드로 설정하기 위해 구성 요소가 사용할 추가 헤더 필드를 제공하므로 실행된 경로와 관련이 없는 새로운 세그먼트를 공개하지 않고 추적된 데이터를 경로에 유지합니다.
구성 요소는 교환의 헤더에 있는 다음과 같은 상수를 사용합니다.
| header | 설명 |
|---|---|
| Camel-AWS-XRay-Trace-ID |
호출된 경로에 대한 포괄적인 보기를 제공하는 AWS XRay |
| Camel-AWS-XRay-Trace-Entity |
새 스레드로 복사되는 실제 AWS XRay |
AWS XRay Entity (예: Segment 및 Subsegment)는 직렬화할 수 없으므로 다른 JVM 프로세스에 전달해서는 안 됩니다.
37.3. 예제 링크 복사링크가 클립보드에 복사되었습니다!
이 프로젝트와 함께 제공되는 테스트 내에서 AWS XRay 추적을 구성하는 방법을 시연하는 예를 찾을 수 있습니다.
38장. Windows Azure Services용 Camel 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Windows Azure Services 용 Camel 구성 요소는 Camel에서 Azure 서비스에 대한 연결을 제공합니다.
| Azure Service | Camel 구성 요소 | Camel 버전 | 구성 요소 설명 |
|---|---|---|---|
| 2.9.0 | Blob 저장 및 검색 지원 | ||
| 2.9.0 | 큐에 메시지 저장 및 검색 지원 |
39장. Azure Storage Blob Service 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.19에서 사용 가능
Azure Blob 구성 요소는 Azure Storage Blob 서비스로 Blob을 저장하고 검색할 수 있도록 지원합니다.The Azure Blob component supports storing and retrieving the blobs to/from Azure Storage Blob service.
사전 요구 사항
유효한 Windows Azure Storage 계정이 있어야 합니다. 자세한 내용은 Azure 설명서 포털에서 확인할 수 있습니다.
39.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
azure-blob://accountName/containerName[/blobName][?options]
대부분의 경우 BlobName이 필요하며 Blob이 아직 없으면 생성됩니다.In most cases a blobName is required and the blob will be created if it does not already exist.
다음 형식으로 URI에 쿼리 옵션을 추가할 수 있습니다. ?options=value&option2=value&…
예를 들어 camelazure 스토리지 계정의 container1 에 있는 공용 블록 Blob blockBlob 에서 Blob 콘텐츠를 다운로드하려면 다음 스니펫을 사용합니다.
from("azure-blob:camelazure/container1/blockBlob").
to("file://blobdirectory");
39.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Azure Storage Blob Service 구성 요소에는 옵션이 없습니다.
Azure Storage Blob 서비스 끝점은 URI 구문을 사용하여 구성됩니다.
azure-blob:containerOrBlobUri
다음 경로 및 쿼리 매개변수를 사용합니다.
39.2.1. 경로 매개 변수 (1 매개변수) 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| containerOrBlobUri | 필수: 컨테이너 또는 Blob 컴팩트 URI. | 문자열 |
39.2.2. 쿼리 매개변수(19 매개변수) 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| azureBlobClient (일반) | Blob 서비스 클라이언트입니다. | CloudBlob | |
| BlobOffset (common) | 업로드 또는 다운로드 작업의 Blob 오프셋을 설정하고 기본값은 0입니다. | 0 | long |
| blobType (common) |
Blob 유형, | blockblob | BlobType |
| CloseStreamAfterRead (일반) | 읽기 후 스트림을 닫거나 열어 두면 기본값은 true입니다. | true | boolean |
| 인증 정보(공용) | 대부분의 경우 필요한 스토리지 자격 증명을 설정합니다. | StorageCredentials | |
| dataLength (common) | 다운로드 또는 Blob 업로드 작업의 데이터 길이를 설정합니다. | long | |
| fileDir (일반) | 다운로드한 Blob이 저장되는 파일 디렉터리를 설정합니다. | 문자열 | |
| publicForRead (일반) | 스토리지 리소스는 콘텐츠를 읽을 수 있도록 공용이 될 수 있습니다. 이 속성을 사용하도록 설정한 경우 자격 증명을 설정할 필요가 없습니다.If this property is enabled, the credentials do not have to be set. | false | boolean |
| streamReadSize (일반) | Blob 콘텐츠를 읽을 때 바이트 단위로 최소 읽기 크기를 설정합니다. | int | |
| bridgeErrorHandler (consumer) |
소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 발생한 모든 예외를 의미합니다(예: 소비자가 수신 메시지를 가져오려고 하는 동안) 이제 메시지로 처리되어 라우팅 오류 핸들러에 의해 처리됩니다. 기본적으로 소비자는 | false | boolean |
| 예외 처리기 (consumer) |
소비자가 사용자 지정 | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| BlobMetadata (producer) | Blob 메타데이터를 설정합니다. | map | |
| blobPrefix (producer) | Blob을 나열하는 데 사용할 수 있는 접두사를 설정합니다. | 문자열 | |
| CloseStreamAfterWrite (producer) | 쓰기 후 스트림을 닫거나 열어 두면 기본값은 true입니다. | true | boolean |
| 작업 (producer) | 생산자에 대한 Blob 서비스 작업 힌트입니다. | listBlobs | BlobServiceOperations |
| streamWriteSize (producer) | 블록 및 페이지 블록을 쓰기 위한 버퍼의 크기를 설정합니다. | int | |
| useFlatListing (producer) | 플랫 또는 계층적 Blob 목록을 사용해야 하는지 지정합니다. | true | boolean |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
필수 Azure Storage Blob 서비스 구성 요소 옵션
개인 Blob에 액세스해야 하는 경우 컨테이너OrBlob 이름과 자격 증명을 제공해야 합니다.
39.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
39.3.1. Azure Storage Blob 서비스 생산자에서 설정한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 다운로드한 Blob 콘텐츠의 파일 이름입니다. |
39.3.2. Azure Storage Blob 서비스 생산자가 설정한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 다운로드한 Blob 콘텐츠의 파일 이름입니다. |
39.3.3. Azure Blob 서비스 작업 링크 복사링크가 클립보드에 복사되었습니다!
모든 블록 유형에 공통적인 작업
| 작업 | 설명 |
|---|---|
|
| Blob의 내용을 가져옵니다.Gets the content of the blob. 이 작업의 출력을 Blob 범위로 제한할 수 있습니다. |
|
| Blob을 삭제합니다. |
|
| Blob을 나열합니다. |
블록 Blob 작업
| 작업 | 설명 |
|---|---|
|
| 새 블록 Blob을 만들거나 기존 블록 Blob 콘텐츠를 덮어쓰는 블록 Blob 콘텐츠를 배치합니다. |
|
|
먼저 Blob 블록 시퀀스를 생성한 다음 Blob에 커밋하여 블록 Blob 콘텐츠를 업로드합니다. 메시지 CommitBlockListLater 속성을 활성화하면 나중에 |
|
|
Blob 블록의 시퀀스를 Blob 서비스에 이전에 업로드한 블록 목록에 커밋합니다(Update |
|
| block blob 목록을 가져옵니다. |
Blob 작업 추가
| 작업 | 설명 |
|---|---|
|
|
추가 블록을 생성합니다. 기본적으로 블록이 이미 존재하는 경우 재설정되지 않습니다. 대신 AppendBlob 속성과 |
|
| Blob에 새 콘텐츠를 추가합니다.Appends the new content to the blob. 이 작업은 또한 Blob이 아직 존재하지 않고 AppendBlobCreated 메시지를 사용하도록 설정한 경우 새로 생성합니다. |
페이지 블록 작업
| 작업 | 설명 |
|---|---|
|
|
페이지 블록을 생성합니다. 기본적으로 블록이 이미 존재하는 경우 재설정되지 않습니다. 또한 PageBlob 속성과 |
|
| PageBlobCreated 속성 및 동일한 이름의 블록이 이미 존재하는 경우 페이지 블록을 만들고 이 Blob의 콘텐츠를 설정합니다. |
|
| 페이지 Blob의 크기를 조정합니다. |
|
| Blob 페이지를 지웁니다. |
|
| Blob 페이지 범위를 가져옵니다. |
39.3.4. Azure Blob 클라이언트 구성 링크 복사링크가 클립보드에 복사되었습니다!
Camel 애플리케이션이 방화벽 뒤에서 실행 중이거나 Azure Blob Client 구성을 더 많이 제어해야 하는 경우 고유한 인스턴스를 만들 수 있습니다.
StorageCredentials credentials = new StorageCredentialsAccountAndKey(accountName, accessKey);
CloudBlob client = new CloudBlockBlob(URI.create("https://"
+ accountName + ".blob.core.windows.net/" + containerName
+ "/" + fileName), credentials);
registry.bind("azureBlobClient", client);
Camel azure-blob 구성 요소 구성에서 이 인스턴스를 참조하십시오.
from("azure-blob://" + accountName + "/" + containerName + "/" + fileName + "?azureBlobClient=#client")
.to("mock:result");
39.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 pom.xml 에 다음 종속성을 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-azure</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version} 은 Camel의 실제 버전(2.19.0 이상)으로 교체해야 합니다.
39.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- Azure Component
40장. Azure Storage Queue Service 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.19에서 사용 가능
Azure Queue 구성 요소는 Azure Storage 큐 서비스로 메시지를 저장하고 검색할 수 있도록 지원합니다.The Azure Queue component supports storing and retrieving the messages to/from Azure Storage Queue service.
사전 요구 사항
유효한 Windows Azure Storage 계정이 있어야 합니다. 자세한 내용은 Azure 설명서 포털에서 확인할 수 있습니다.
40.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
azure-queue://accountName/queueName[?options]
큐가 없으면 해당 큐가 생성됩니다.
다음 형식으로 URI에 쿼리 옵션을 추가할 수 있습니다. ?options=value&option2=value&…
예를 들어 camelazure 스토리지 계정의 큐 메시지 대기열 에서 메시지 콘텐츠를 가져오려면 다음 스니펫을 사용합니다.
from("azure-queue:camelazure/messageQueue").
to("file://queuedirectory");
40.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Azure Storage Queue Service 구성 요소에는 옵션이 없습니다.
Azure Storage Queue Service 끝점은 URI 구문을 사용하여 구성됩니다.
azure-queue:containerAndQueueUri
다음 경로 및 쿼리 매개변수를 사용합니다.
40.2.1. 경로 매개 변수 (1 매개변수) 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| containerAndQueueUri | 필수: 컨테이너 대기열 컴팩트 URI. | 문자열 |
40.2.2. 쿼리 매개변수(10 매개변수) 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| azureQueueClient (일반) | 큐 서비스 클라이언트입니다. | CloudQueue | |
| 인증 정보(공용) | 대부분의 경우 필요한 스토리지 인증 정보 설정 | StorageCredentials | |
| bridgeErrorHandler (consumer) |
소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 발생한 모든 예외(예: 사용자가 수신 메시지를 가져오려고 하는 동안) 이제 메시지로 처리되어 라우팅 오류 핸들러에 의해 처리됩니다. 기본적으로 소비자는 | false | boolean |
| 예외 처리기 (consumer) |
소비자가 사용자 지정 | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| messageTimeToLive (producer) | Time to Live in seconds. | int | |
| messageVisibilityDelay (producer) | 메시지 표시 가능 지연 시간(초)입니다. | int | |
| 작업 (producer) | 생산자에 대한 서비스 작업 힌트를 대기열에 넣습니다. | listQueues | QueueServiceOperations |
| queuePrefix (producer) | 큐를 나열하는 데 사용할 수 있는 접두사를 설정합니다. | 문자열 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
필수 Azure Storage Queue Service 구성 요소 옵션
containerAndQueue URI와 자격 증명을 제공해야 합니다.
40.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
40.3.1. Azure Queue Service 작업 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | 설명 |
|---|---|
|
| 대기열을 나열합니다. |
|
| 큐를 만듭니다. |
|
| 큐를 삭제합니다. |
|
| 큐에 메시지를 추가합니다. |
|
| 큐에서 메시지를 검색합니다. |
|
| 예를 들어 큐 내의 메시지를 보고 메시지가 올바른 큐에 도착했는지 확인합니다. |
|
| 큐에서 메시지를 업데이트합니다. |
|
| 큐에서 메시지를 삭제합니다. |
40.3.2. Azure Queue Client 구성 링크 복사링크가 클립보드에 복사되었습니다!
Camel 애플리케이션이 방화벽 뒤에서 실행 중이거나 Azure Queue Client 구성을 더 많이 제어해야 하는 경우 고유한 인스턴스를 생성할 수 있습니다.
StorageCredentials credentials = new StorageCredentialsAccountAndKey("camelazure", "thekey");
CloudQueue client = new CloudQueue("camelazure", credentials);
registry.bind("azureQueueClient", client);
Camel azure-queue 구성 요소 구성에서 참조하십시오.
from("azure-queue:camelazure/messageQueue?azureQueueClient=#client")
.to("mock:result");
40.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 pom.xml 에 다음 종속성을 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-azure</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version} 은 Camel의 실제 버전(2.19.0 이상)으로 교체해야 합니다.
40.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- Azure Component
41장. Barcode DataFormat 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.14로 사용 가능
바코드 데이터 형식은 zxing 라이브러리 를 기반으로 합니다. 이 구성 요소의 목표는 문자열(marshal) 및 바코드 이미지(unmarshal)에서 문자열에서 바코드 이미지를 생성하는 것입니다. zxing이 제공하는 모든 기능을 자유롭게 사용할 수 있습니다.
41.1. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
camel 경로에서 바코드 데이터 형식을 사용하려면 이 데이터 형식을 구현하는 camel-barcode 에 종속성을 추가해야 합니다.
maven을 사용하는 경우 pom.xml에 다음을 추가하면 최신 및 가장 큰 릴리스의 버전 번호를 대체합니다(최신 버전의 다운로드 페이지 참조).
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-barcode</artifactId>
<version>x.x.x</version>
</dependency>
41.2. Barcode Options 링크 복사링크가 클립보드에 복사되었습니다!
Barcode dataformat은 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 기본값 | Java Type | 설명 |
|---|---|---|---|
| width |
| 바코드의 너비입니다. | |
| height |
| 바코드의 높이 | |
| imageType |
| png과 같은 바코드의 이미지 유형 | |
| barcodeFormat |
| QR-Code와 같은 Barcode 형식 | |
| contentTypeHeader |
|
| 데이터 형식이 데이터 형식에서 수행할 수 있는 경우 데이터 형식의 유형으로 Content-Type 헤더를 설정해야 하는지 여부입니다. 예를 들어 데이터 형식을 XML로 마샬링하거나, JSon으로 마샬링되는 데이터 형식에 대한 application/json 등이 있습니다. |
41.3. Java DSL 사용 링크 복사링크가 클립보드에 복사되었습니다!
먼저 바코드 데이터 fomat 클래스를 초기화해야합니다. 기본 생성자를 사용하거나 매개 변수화된 중 하나를 사용할 수 있습니다(JavaDoc 참조). 기본값은 다음과 같습니다.
| 매개변수 | 기본값 |
|---|---|
| 이미지 유형 (BarcodeImageType) | PNG |
| width | 100px |
| 높이 | 100px |
| 인코딩 | UTF-8 |
| Barcode 형식 (BarcodeFormat) | QR-Code |
// QR-Code default
DataFormat code = new BarcodeDataFormat();
zxing 힌트를 사용하려면 BarcodeDataFormat 인스턴스의 'addToHintMap' 메서드를 사용할 수 있습니다.
code.addToHintMap(DecodeHintType.TRY_HARDER, Boolean.true);
가능한 힌트는 xzing 설명서를 참조하십시오.
41.3.1. 마샬링 링크 복사링크가 클립보드에 복사되었습니다!
from("direct://code")
.marshal(code)
.to("file://barcode_out");
다음을 사용하여 테스트 클래스에서 경로를 호출할 수 있습니다.
template.sendBody("direct://code", "This is a testmessage!");
이 이미지 안에 'barcode_out' 폴더를 찾을 수 있습니다.
41.3.2. unmarshalling 링크 복사링크가 클립보드에 복사되었습니다!
unmarshaller는 일반적인 것입니다. unmarshalling의 경우 BarcodeDataFormat 인스턴스를 사용할 수 있습니다. 두 개의 인스턴스가 있는 경우, QR-Code용이고 다른 하나는 PDF417용이므로 어떤 인스턴스가 사용될지 중요하지 않습니다.
from("file://barcode_in?noop=true")
.unmarshal(code) // for unmarshalling, the instance doesn't matter
.to("mock:out");
위의 QR-Code 이미지를 'barcode_in' 폴더에 붙여 넣으면, “이는 모크 내부에 testmessage!” 임을 알 수 있습니다. 바코드 데이터 형식을 헤더 변수로 찾을 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| BarcodeFormat | 문자열 | com.google.zxing.BarcodeFormat의 값입니다. |
42장. Base64 DataFormat 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.11로 사용 가능
Base64 데이터 형식은 base64 인코딩 및 디코딩에 사용됩니다.
42.1. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Base64 dataformat은 아래 나열된 4가지 옵션을 지원합니다.
| 이름 | 기본값 | Java Type | 설명 |
|---|---|---|---|
| lineLength |
|
| 인코딩된 데이터의 최대 줄 길이를 지정합니다. 76 기본적으로 사용됩니다. |
| lineSeparator |
| 사용할 줄 구분 기호입니다. 기본적으로 새 줄 문자(CRLF)를 사용합니다. | |
| urlSafe |
|
| '' 및 '/'를 내보내는 대신 '-' 및 '_'를 각각 내보냅니다. urlSafe는 작업 인코딩에만 적용됩니다. 디코딩은 두 모드를 모두 원활하게 처리합니다. 기본값은 false입니다. |
| contentTypeHeader |
|
| 데이터 형식이 데이터 형식에서 수행할 수 있는 경우 데이터 형식의 유형으로 Content-Type 헤더를 설정해야 하는지 여부입니다. 예를 들어 데이터 형식을 XML로 마샬링하거나, JSon으로 마샬링되는 데이터 형식에 대한 application/json 등이 있습니다. |
Spring DSL에서는 다음 태그를 사용하여 데이터 형식을 구성합니다.
<camelContext>
<dataFormats>
<!-- for a newline character (\n), use the HTML entity notation coupled with the ASCII code. -->
<base64 lineSeparator=" " id="base64withNewLine" />
<base64 lineLength="64" id="base64withLineLength64" />
</dataFormats>
...
</camelContext>
그런 다음 나중에 해당 참조를 사용할 수 있습니다.
<route>
<from uri="direct:startEncode" />
<marshal ref="base64withLineLength64" />
<to uri="mock:result" />
</route>
대부분의 경우 기본 옵션을 사용하는 경우 데이터 형식을 선언할 필요가 없습니다. 이 경우 다음과 같이 인라인 데이터 형식을 선언할 수 있습니다.In that case, you can declare the data format inline as shown below.
42.2. Marshal 링크 복사링크가 클립보드에 복사되었습니다!
이 예제에서는 파일 내용을 base64 개체로 마샬링합니다.
from("file://data.bin")
.marshal().base64()
.to("jms://myqueue");
Spring DSL에서 다음을 수행합니다.
<from uri="file://data.bin">
<marshal>
<base64/>
</marshal>
<to uri="jms://myqueue"/>
42.3. unmarshal 링크 복사링크가 클립보드에 복사되었습니다!
이 예제에서는 newOrder 프로세서에서 처리되기 전에 JMS 대기열에서 byte[] 오브젝트로 페이로드를 분리합니다.
from("jms://queue/order")
.unmarshal().base64()
.process("newOrder");
Spring DSL에서 다음을 수행합니다.
<from uri="jms://queue/order">
<marshal>
<base64/>
</marshal>
<to uri="bean:newOrder"/>
42.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Camel 경로에서 Base64를 사용하려면 이 데이터 형식을 구현하는 camel-base64 에 종속성을 추가해야 합니다.
Maven을 사용하는 경우 pom.xml에 다음을 추가할 수 있습니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-base64</artifactId>
<version>x.x.x</version> <!-- use the same version as your Camel core version -->
</dependency>
43장. 빈 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 1.0에서 사용 가능
빈: 구성 요소는 Camel 메시지 교환에 빈을 바인딩합니다.
43.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
bean:beanName[?options]
여기서 beanID 는 레지스트리에서 빈을 찾는 데 사용되는 문자열일 수 있습니다.
43.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Bean 구성 요소에는 옵션이 없습니다.
Bean 엔드포인트는 URI 구문을 사용하여 구성됩니다.
bean:beanName
다음 경로 및 쿼리 매개변수를 사용합니다.
43.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| beanName | 필요한 빈의 이름 설정 | 문자열 |
43.2.2. 쿼리 매개변수 (5 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 방법 (producer) | 빈에서 호출할 메서드의 이름을 설정합니다. | 문자열 | |
| cache (advanced) | 이 기능을 활성화하면 Camel이 첫 번째 레지스트리 조회 결과를 캐시합니다. 레지스트리의 빈이 Singleton 범위로 정의된 경우 캐시를 활성화할 수 있습니다. | false | boolean |
| multiParameterArray (advanced) | 더 이상 사용되지 않는 방법 메시지 본문에서 전달되는 매개 변수를 처리하는 방법; true인 경우 메시지 본문이 매개 변수의 배열이어야 합니다. 참고: 이 옵션은 Camel에 의해 내부적으로 사용되며 최종 사용자가 사용할 수 없습니다. 사용 중단 참고: 이 옵션은 Camel에 의해 내부적으로 사용되며 최종 사용자가 사용할 수 없습니다. | false | boolean |
| 매개변수 (고급) | 빈에서 추가 속성을 구성하는 데 사용됩니다. | map | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
다음 형식 ?option=value&option=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
43.3. 사용 링크 복사링크가 클립보드에 복사되었습니다!
메시지를 사용하는 데 사용되는 오브젝트 인스턴스는 레지스트리에 명시적으로 등록되어 있어야 합니다. 예를 들어 Spring을 사용하는 경우 Spring 구성, spring.xml 에 빈을 정의해야 합니다. 또는 JNDI에 빈을 등록하여 Spring을 사용하지 않는 경우.
오류 형식 매크로: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20
엔드포인트가 등록되면 이를 사용하여 Exchange를 처리하는 Camel 경로를 빌드할 수 있습니다.
빈: 엔드포인트는 경로에 대한 입력으로 정의할 수 없습니다. 즉, 일부 인바운드 메시지 끝점에서 빈 엔드포인트로만 라우팅할 수 없습니다. 따라서 직접: 또는 queue: 엔드포인트를 입력으로 사용하는 것이 좋습니다.
ProxyHelper 에서 createProxy() 메서드를 사용하여 BeanExchanges를 생성하고 모든 끝점으로 보내는 프록시를 생성할 수 있습니다.
Spring DSL을 사용하는 것과 동일한 경로:
<route>
<from uri="direct:hello">
<to uri="bean:bye"/>
</route>
43.4. 끝점으로 빈 링크 복사링크가 클립보드에 복사되었습니다!
Camel은 또한 Endpoint로 Bean 호출을 지원합니다. 아래 경로에서:
교환이 myBean Camel로 라우팅되면 빈을 호출하기 위해 빈을 호출합니다.
빈의 소스는 일반 POJO에 불과합니다.
Camel은 Exchange의 In body를 String 유형으로 변환하고 Exchange Out body에 메서드 출력을 저장하여 sayHello 메서드를 호출합니다.
43.5. Java DSL 빈 구문 링크 복사링크가 클립보드에 복사되었습니다!
Java DSL은 빈 구성 요소에 대한 구문 분석 설 탕과 함께 제공됩니다. 빈을 엔드포인트(예: ("bean:beanName"))로 명시적으로 지정하는 대신 다음 구문을 사용할 수 있습니다.
// Send message to the bean endpoint
// and invoke method resolved using Bean Binding.
from("direct:start").beanRef("beanName");
// Send message to the bean endpoint
// and invoke given method.
from("direct:start").beanRef("beanName", "methodName");
빈에 참조 이름을 전달하는 대신( Camel이 레지스트리에서 해당 참조를 조회할 예정) 빈 자체를 지정할 수 있습니다.
// Send message to the given bean instance.
from("direct:start").bean(new ExampleBean());
// Explicit selection of bean method to be invoked.
from("direct:start").bean(new ExampleBean(), "methodName");
// Camel will create the instance of bean and cache it for you.
from("direct:start").bean(ExampleBean.class);
43.6. 빈 바인딩 링크 복사링크가 클립보드에 복사되었습니다!
빈 메서드를 호출하는 방법( 메서드 매개 변수를 통해 명시적으로 지정되지 않은 경우) 및 메시지에서 매개 변수 값을 구성하는 방법은 모두 Camel의 다양한 빈 통합 메커니즘에서 사용되는 Bean Binding 메커니즘에 의해 정의됩니다.
43.7. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- 클래스 구성 요소
- 빈 바인딩
- 빈 통합
44장. BeanIO DataFormat 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.10에서 사용 가능
BeanIO 데이터 형식은 BeanIO 를 사용하여 플랫 페이로드(예: XML, CSV, 구분된 또는 고정 길이 형식)를 처리합니다.
BeanIO는 플랫 형식에서 POJO(Object)에 대한 매핑을 정의하는 매핑 XML 파일을 사용하여 구성됩니다. 이 매핑 파일은 사용하기 위해 필수입니다.
44.1. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
BeanIO dataformat은 아래에 나열된 9가지 옵션을 지원합니다.
| 이름 | 기본값 | Java Type | 설명 |
|---|---|---|---|
| mapping |
| BeanIO 매핑 파일. 기본적으로 classpath에서 로드됩니다. file:, http: 또는 classpath: 접두사를 추가하여 매핑 파일을 로드할 위치를 나타낼 수 있습니다. | |
| streamName |
| 사용할 스트림의 이름입니다. | |
| ignoreUnidentifiedRecords |
|
| 확인되지 않은 레코드를 무시할지 여부입니다. |
| ignoreUnexpectedRecords |
|
| 예기치 않은 레코드를 무시할지 여부입니다. |
| ignoreInvalidRecords |
|
| 유효하지 않은 레코드를 무시할지 여부입니다. |
| 인코딩 |
| 사용할 문자입니다. 기본적으로 JVM 플랫폼 기본 charset입니다. | |
| beanReaderErrorHandlerType |
| 사용자 지정 org.apache.camel.dataformat.beanio.BeanIOErrorHandler를 구문 분석하는 동안 오류 처리기로 사용하려면 다음을 수행합니다. 오류 처리기의 정규화된 클래스 이름을 구성합니다.Configure the fully qualified class name of the error handler. 사용자 지정 오류 처리기를 사용할 때 ignoreUnidentifiedRecords, ignoreUnectedRecords 및 ignoreInvalidRecords 옵션이 사용되지 않을 수 있습니다. | |
| unmarshalSingleObject |
|
| 이 옵션은hal을 오브젝트 목록 또는 단일 개체로만 구분할지 여부를 제어합니다. 전자는 기본 모드이며, 후자는 빈io가 Camel 메시지를 단일 POJO 빈에 매핑하는 특수 사용 사례에서만 사용됩니다. |
| contentTypeHeader |
|
| 데이터 형식이 데이터 형식에서 수행할 수 있는 경우 데이터 형식의 유형으로 Content-Type 헤더를 설정해야 하는지 여부입니다. 예를 들어 데이터 형식을 XML로 마샬링하거나, JSon으로 마샬링되는 데이터 형식에 대한 application/json 등이 있습니다. |
44.2. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
44.2.1. Java DSL 사용 링크 복사링크가 클립보드에 복사되었습니다!
BeanIODataFormat 을 사용하려면 매핑 파일 및 스트림 이름으로 데이터 형식을 구성해야 합니다.
Java DSL에서는 다음과 같이 수행할 수 있습니다. streamName은 "employeeFile"입니다.
그 다음에는 두 개의 경로가 있습니다. 첫 번째 경로는 CSV 데이터를 List<Employee> Java 오브젝트로 변환하는 것입니다. 그런 다음 분할하므로, mock endpoint
는 각 행에 대한 메시지를 수신합니다.
두 번째 경로는 역방향 작업에서 List<Employee>를 CSV 데이터 스트림으로 변환하는 것입니다.
CSV 데이터는 예를 들면 다음과 같습니다.
44.2.2. XML DSL 사용 링크 복사링크가 클립보드에 복사되었습니다!
XML에서 BeanIO 데이터 형식을 사용하려면 아래와 같이 <beanio> XML 태그를 사용하여 구성해야 합니다. 경로는 위의 예와 유사합니다.
44.3. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Camel 경로에서 BeanIO를 사용하려면 이 데이터 형식을 구현하는 camel-beanio 에 종속성을 추가해야 합니다.
Maven을 사용하는 경우 pom.xml에 다음을 추가하여 최신 및 가장 큰 릴리스의 버전 번호를 대체합니다(최신 버전의 다운로드 페이지 참조).
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-beanio</artifactId>
<version>2.10.0</version>
</dependency>
45장. Beanstalk 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.15에서 사용 가능
Camel-beanstalk 프로젝트는 Beanstalk 작업의 작업 검색 및 후처리를 위한 Camel 구성 요소를 제공합니다.
Beanstalk 작업 라이프사이클에 대한 자세한 설명은 Beanstalk 프로토콜 에서 확인할 수 있습니다.
45.1. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 pom.xml에 다음 종속성을 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-beanstalk</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.15.0 이상)으로 교체해야 합니다.
45.2. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
beanstalk://[host[:port]][/tube][?options]
포트 또는 포트 모두 생략할 수 있습니다. 빈stalk의 경우 기본값은("local host " 및 11300)입니다. 튜 브를 생략하면 Be anstalk 구성 요소는 "default"라는 이름의 튜브를 사용합니다.
청취 할 때, 당신은 아마 여러 튜브에서 일자리를보고 싶을 수 있습니다. 더하기 기호로 구분하십시오(예:).
beanstalk://localhost:11300/tube1+tube2
튜브 이름은 URL 디코딩되므로, 튜브 이름에 + 또는 ?와 같은 특수 문자가 포함되어 있는 경우 URL을 적절히 코딩하거나 RAW 구문을 사용해야 합니다. 자세한 내용은 여기 를 참조하십시오.
따라서 Beanstalk에 작업을 작성할 때 여러 개의 튜브를 지정할 수 없습니다.
45.3. Beanstalk 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Beanstalk 구성 요소는 아래 나열된 두 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| connectionSettings Factory (일반) | Custom ConnectionSettingsFactory. Beanstalkd에 연결하는 데 사용할 ConnectionSettingsFactory를 지정합니다. 특히 빈stalkd 데몬없이 단위 테스트에 유용합니다 (파크 ConnectionSettings를 사용할 수 있음) | ConnectionSettings Factory | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Beanstalk 끝점은 URI 구문을 사용하여 구성됩니다.
beanstalk:connectionSettings
다음 경로 및 쿼리 매개변수를 사용합니다.
45.3.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| connectionSettings | 연결 설정 host:port/tube | 문자열 |
45.3.2. 쿼리 매개변수(26 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| command (common) | 작업을 Beanstalk에 배치하는 것을 의미합니다. 작업 본문이 Camel 메시지 본문에 지정되어 있습니다. 작업 ID는 빈stalk.jobId 메시지 헤더에서 반환됩니다. delete, release, touch 또는 bury가 메시지 헤더 빈stalk.jobId의 작업 ID를 예상합니다. 이 작업의 결과는 빈stalk.result 메시지 헤더에서 반환되면 메시지 본문에 작업 수가 붙은 후 헤더 빈stalk.result에서 실제로 시작된 작업 수를 반환합니다. | BeanstalkCommand | |
| JobDelay (일반) | 작업을 초 단위로 지연합니다. | 0 | int |
| jobPriority (일반) | 작업 우선 순위. (0이 가장 높은 것은 Beanstalk 프로토콜을 참조함) | 1000 | long |
| jobTimeToRun (common) | 작업 시간(초 단위로 실행할 시간 0일 경우, 빈스talkd 데몬이 자동으로 1로 발생함)은 Beanstalk 프로토콜을 참조하십시오. | 60 | int |
| WaitJob (consumer) | 빈stalk에서 작업을 시작하기 전에 작업이 완료될 때까지 대기하는지 여부 | true | boolean |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| OnFailure( consumer) | 처리할 때 사용할 명령이 실패했습니다. | BeanstalkCommand | |
| sendEmptyMessageWhenIdle (consumer) | 폴링 소비자가 파일을 폴링하지 않은 경우 이 옵션을 활성화하여 빈 메시지( 본문 없음)를 대신 보낼 수 있습니다. | false | boolean |
| useBlockIO (consumer) | blockIO를 사용할지 여부입니다. | true | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| pollStrategy (consumer) | 플러그형 org.apache.camel.PollingConsumerPollingStrategy를 사용하면 Camel에서 Exchange를 생성하고 라우팅하기 전에 폴링 작업 중에 일반적으로 발생한 오류 처리를 제어하는 사용자 정의 구현을 제공할 수 있습니다. | PollingConsumerPoll Strategy | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| backoffErrorThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 오류 폴링(일부 오류 발생) 수입니다. | int | |
| backoffIdleThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 유휴 폴링 수입니다. | int | |
| backoffMultiplier (scheduler) | 예약된 폴링 소비자 백오프가 연속된 여러 개의 유휴/errors가 있는 경우 해당 행에 사용할 수 있습니다. multiplier는 다음 실제 시도가 다시 발생하기 전에 건너뛸 폴링 수입니다. 이 옵션을 사용하는 경우 backoffIdleThreshold 및/또는 backoffErrorThreshold도 구성해야 합니다. | int | |
| 지연 (scheduler) | 다음 폴링보다 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 500 | long |
| greedy (scheduler) | greedy가 활성화된 경우 ScheduledPollConsumer는 이전 실행이 1개 이상의 메시지를 폴링하면 즉시 다시 실행됩니다. | false | boolean |
| initialDelay (scheduler) | 첫 번째 폴링이 시작되기 전까지의 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 1000 | long |
| runLoggingLevel (scheduler) | 소비자는 폴링할 때 시작/완료 로그 행을 기록합니다. 이 옵션을 사용하면 로깅 수준을 구성할 수 있습니다. | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 소비자에 사용할 사용자 지정/공유 스레드 풀을 구성할 수 있습니다. 기본적으로 각 소비자는 자체 스레드 스레드 풀이 있습니다. | ScheduledExecutor Service | |
| 스케줄러 (scheduler) | camel-spring 또는 camel-quartz2 구성 요소에서 cron 스케줄러를 사용하려면 | none | ScheduledPollConsumer Scheduler |
| 스케줄러 속성 (scheduler) | 사용자 지정 스케줄러 또는 Quartz2, Spring 기반 스케줄러를 사용할 때 추가 속성을 구성하려면 다음을 수행합니다. | map | |
| StartScheduler (scheduler) | 스케줄러가 자동으로 시작되어야 하는지 여부입니다. | true | boolean |
| timeUnit (scheduler) | initialDelay 및 지연 옵션의 시간 단위입니다. | 밀리초 | TimeUnit |
| UseFixedDelay (scheduler) | 고정 지연 또는 고정 속도가 사용되는 경우 제어합니다. 자세한 내용은 JDK의 ScheduledExecutorService를 참조하십시오. | true | boolean |
생산자 동작은 수행할 작업을 수행할 수 있음을 나타내는 command 매개 변수의 영향을 받습니다.
소비자는 예약 후 즉시 작업을 삭제하거나 Camel 경로를 처리할 때까지 기다릴 수 있습니다. 첫 번째 시나리오는 "message 대기열"과 유사하지만 두 번째 시나리오는 "작업 대기열"과 유사합니다. 이 동작은 기본적으로 Beanstalkd 특성을 따르는 consumer.awaitJob 매개변수에 의해 제어됩니다.
동기식일 때 소비자는 작업 완료 시 삭제 되고 실패 시 버퍼 를 호출합니다. URI에 consumer.onFailure 매개변수를 지정하여 실패할 경우 실행할 명령을 선택할 수 있습니다. bury, delete 또는 release 값을 사용할 수 있습니다.
부울 매개변수 consumer.useBlockIO 는 JavaBeanstalkClient 라이브러리에서 동일한 매개변수에 해당합니다. 기본값은 true 입니다.
실패한 작업이 즉시 동일한 튜브에서 사용할 수 있으므로 릴리스 를 지정할 때는 소비자가 다시 취득하려고 합니다. jobDelay 를 릴리스 하고 지정할 수 있습니다.
빈stalk 소비자는 스케줄링된 Polling Consumer 이므로 소비자가 폴링해야 하는 빈도와 같이 구성할 수 있는 옵션이 더 많다는 것을 의미합니다. 자세한 내용은 소비자 회의를 참조하십시오.
45.4. 소비자 헤더 링크 복사링크가 클립보드에 복사되었습니다!
소비자는 Exchange 메시지에 여러 작업 헤더를 저장합니다.
| 속성 | 유형 | 설명 |
|---|---|---|
| beanstalk.jobId | long | Job ID |
| beanstalk.tube | string | 이 작업을 포함하는 튜브의 이름 |
| beanstalk.state | string | "ready" 또는 "delayed" 또는 "reserved" 또는 "buried" 또는 "예약"입니다. |
| beanstalk.priority | long | 우선순위 값 설정 |
| beanstalk.age | int | 이 작업을 생성한 put 명령의 시간(초) |
| beanstalk.time-left | int | 서버가 이 작업을 준비 대기열에 배치할 때까지 남은 시간(초) |
| beanstalk.timeouts | int | 이 작업이 예약 중 시간 초과된 횟수 |
| beanstalk.releases | int | 고객이 예약에서 이 작업을 해제한 횟수 |
| beanstalk.buries | int | 이 작업의 수가 묻어졌습니다. |
| beanstalk.kicks | int | 이 작업이 실행된 횟수입니다. |
45.5. 예제 링크 복사링크가 클립보드에 복사되었습니다!
이 Camel 구성 요소를 사용하면 처리 작업을 요청하고 Beanstalkd 데몬에 제공할 수 있습니다. 간단한 데모 경로는 다음과 같을 수 있습니다.
from("beanstalk:testTube").
log("Processing job #${property.beanstalk.jobId} with body ${in.body}").
process(new Processor() {
@Override
public void process(Exchange exchange) {
// try to make integer value out of body
exchange.getIn().setBody( Integer.valueOf(exchange.getIn().getBody(classOf[String])) );
}
}).
log("Parsed job #${property.beanstalk.jobId} to body ${in.body}");
from("timer:dig?period=30seconds").
setBody(constant(10)).log("Kick ${in.body} buried/delayed tasks").
to("beanstalk:testTube?command=kick");
첫 번째 경로에서 우리는 튜브 "테스트Tube"에서 새로운 작업을 듣고 있습니다. 도착하면 메시지 본문에서 정수 값을 구문 분석하려고 합니다. 성공적으로 완료되면 이를 기록하고 이를 성공적으로 교환하면 Camel 구성 요소가 Beanstalk에서 이 작업을 자동으로 삭제할 수 있습니다. 반대로 작업 데이터를 구문 분석할 수 없는 경우 교환 실패와 Camel 구성 요소가 기본적으로 이를 제거하므로 나중에 처리할 수 있거나 실패한 작업을 수동으로 검사할 수 있습니다.
따라서 두 번째 경로는 주기적으로 Beanstalk를 요청하여 일반 대기열에서 10 개 의 작업을 묻거나/또는 지연된 상태로 실행합니다.
45.6. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
46장. 빈 유효성 검사 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.3에서 사용 가능
Validator 구성 요소는 Java Bean Validation API(JSR 303)를 사용하여 메시지 본문의 빈 유효성 검사를 수행합니다. Camel은 Hibernate Validator 인 참조 구현을 사용합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-bean-validator</artifactId>
<version>x.y.z</version>
<!-- use the same version as your Camel core version -->
</dependency>
46.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
bean-validator:label[?options]
또는
bean-validator://label[?options]
여기서 레이블 은 끝점을 설명하는 임의의 텍스트 값입니다.
다음 형식 ?option=value&option=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
46.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Bean Validator 구성 요소에는 옵션이 없습니다.
Bean Validator 엔드포인트는 URI 구문을 사용하여 구성됩니다.
bean-validator:label
다음 경로 및 쿼리 매개변수를 사용합니다.
46.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| label | 필수 Where label는 끝점을 설명하는 임의의 텍스트 값입니다. | 문자열 |
46.2.2. 쿼리 매개변수(6 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| constraintValidatorFactory (producer) | 사용자 정의 ConstraintValidatorFactory를 사용하려면 | ConstraintValidator Factory | |
| 그룹 (producer) | 사용자 정의 검증 그룹 사용 | javax.validation.groups.Default | 문자열 |
| messageInterpolator (producer) | 사용자 지정 MessageInterpolator 사용 | MessageInterpolator | |
| traversableResolver (producer) | 사용자 정의 TraversableResolver 사용 | TraversableResolver | |
| validationProviderResolver (producer) | 사용자 정의 ValidationProviderResolver를 사용하려면 | ValidationProvider Resolver | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
46.3. OSGi 배포 링크 복사링크가 클립보드에 복사되었습니다!
OSGi 환경에서 Hibernate Validator를 사용하려면 org.apache.camel.component.bean.validator.Hibernate 구현을 사용합니다. 아래 코드 조각은 이 방법을 보여줍니다. Camel 2.13.0부터 ValidationProviderResolver 와 마찬가지로 전용 ValidationProviderResolverHibernateValidationProviderResolver 를 사용할 수 있습니다.
Using HibernateValidationProviderResolver
from("direct:test").
to("bean-validator://ValidationProviderResolverTest?validationProviderResolver=#myValidationProviderResolver");
...
<bean id="myValidationProviderResolver" class="org.apache.camel.component.bean.validator.HibernateValidationProviderResolver"/>
사용자 정의 ValidationProviderResolver 가 정의되어 있고 검증기 구성 요소가 OSGi 환경에 배포된 경우 HibernateValidationProviderResolver 가 자동으로 사용됩니다.
46.4. 예제 링크 복사링크가 클립보드에 복사되었습니다!
다음 주석이 있는 java 빈이 있다고 가정합니다.
Car.java
public class Car {
@NotNull
private String manufacturer;
@NotNull
@Size(min = 5, max = 14, groups = OptionalChecks.class)
private String licensePlate;
// getter and setter
}
사용자 정의 검증 그룹에 대한 인터페이스 정의
OptionalChecks.java
public interface OptionalChecks {
}
다음 Camel 경로를 사용하면 특성 manufacturer 및 licensePlate에 대한 @Not null 제약 조건만 검증됩니다(Camel은 기본 그룹 javax.validation.groups.Default를 사용합니다).
from("direct:start")
.to("bean-validator://x")
.to("mock:end")
OptionalChecks 그룹의 제약 조건을 확인하려면 다음과 같이 경로를 정의해야 합니다.
from("direct:start")
.to("bean-validator://x?group=OptionalChecks")
.to("mock:end")
두 그룹의 제약 조건을 모두 확인하려면 먼저 새 인터페이스를 정의해야 합니다.
AllChecks.java
@GroupSequence({Default.class, OptionalChecks.class})
public interface AllChecks {
}
경로 정의는 다음과 같아야 합니다.
from("direct:start")
.to("bean-validator://x?group=AllChecks")
.to("mock:end")
그리고 자신의 메시지 보간기, 순회 해결자 및 제약 조건 검증기를 제공해야하는 경우, 다음과 같은 경로를 작성해야 합니다.
<bean id="myMessageInterpolator" class="my.ConstraintValidatorFactory" />
<bean id="myTraversableResolver" class="my.TraversableResolver" />
<bean id="myConstraintValidatorFactory" class="my.ConstraintValidatorFactory" />
from("direct:start")
.to("bean-validator://x?group=AllChecks&messageInterpolator=#myMessageInterpolator
&traversableResolver=#myTraversableResolver&constraintValidatorFactory=#myConstraintValidatorFactory")
.to("mock:end")
또한 제약 조건을 Java 주석이 아닌 XML로 설명할 수도 있습니다. 이 경우 다음과 같이 표시될 수 있는 META-INF/validation.xml 파일을 제공해야 합니다.
validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<validation-config
xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration">
<default-provider>org.hibernate.validator.HibernateValidator</default-provider>
<message-interpolator>org.hibernate.validator.engine.ResourceBundleMessageInterpolator</message-interpolator>
<traversable-resolver>org.hibernate.validator.engine.resolver.DefaultTraversableResolver</traversable-resolver>
<constraint-validator-factory>org.hibernate.validator.engine.ConstraintValidatorFactoryImpl</constraint-validator-factory>
<constraint-mapping>/constraints-car.xml</constraint-mapping>
</validation-config>
constraints-car.xml 파일
constraints-car.xml
<?xml version="1.0" encoding="UTF-8"?>
<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd"
xmlns="http://jboss.org/xml/ns/javax/validation/mapping">
<default-package>org.apache.camel.component.bean.validator</default-package>
<bean class="CarWithoutAnnotations" ignore-annotations="true">
<field name="manufacturer">
<constraint annotation="javax.validation.constraints.NotNull" />
</field>
<field name="licensePlate">
<constraint annotation="javax.validation.constraints.NotNull" />
<constraint annotation="javax.validation.constraints.Size">
<groups>
<value>org.apache.camel.component.bean.validator.OptionalChecks</value>
</groups>
<element name="min">5</element>
<element name="max">14</element>
</constraint>
</field>
</bean>
</constraint-mappings>
다음은 OrderedChecks 가 https://github.com/apache/camel/blob/master/components/camel-bean-validator/src/test/java/org/apache/camel/component/bean/validator/OrderedChecks.java일 수 있는 경로 정의 예의 XML 구문입니다.
본문에는 유효성을 검사할 클래스의 인스턴스가 포함되어야 합니다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
<to uri="bean-validator://x?group=org.apache.camel.component.bean.validator.OrderedChecks"/>
</route>
</camelContext>
</beans>
46.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
47장. 바인딩 구성 요소(더 이상 사용되지 않음) 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.11로 사용 가능
Camel에서 바인딩 은 데이터 형식, 콘텐츠 항목 또는 검증 단계와 같은 계약에 엔드포인트를 래핑하는 방법입니다. 바인딩은 완전히 선택 사항이며 모든 camel 끝점에서 사용하도록 선택할 수 있습니다.
바인딩은 Camel 및 기타 많은 기술과 같은 다양한 기술에 서비스 계약을 추가하는 SwitchYard 프로젝트 의 작업에 의해 영감을 받습니다. 그러나 SCA에서 Camel을 래핑하는 SwitchYard 접근법 대신 Camel 바인딩 은 Camel 프레임워크 자체 내에서 Camel 엔드포인트를 래핑할 수 있는 방법을 제공합니다. 따라서 Camel 경로 내에서 쉽게 사용할 수 있습니다.
47.1. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
바인딩 구성 요소에는 옵션이 없습니다.
바인딩 끝점은 URI 구문을 사용하여 구성됩니다.
binding:bindingName:delegateUri
다음 경로 및 쿼리 매개변수를 사용합니다.
47.1.1. 경로 매개 변수(2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| bindingName | Camel 레지스트리에서 조회하는 데 필요한 바인딩 이름입니다. | 문자열 | |
| delegateUri | 위임 끝점의 필수 Uri입니다. | 문자열 |
47.1.2. 쿼리 매개변수 (4 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN/ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN/ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | Exchange를 만들 때 기본 교환 패턴을 설정합니다. | ExchangePattern | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
47.2. 바인딩 사용 링크 복사링크가 클립보드에 복사되었습니다!
바인딩은 현재 계약을 정의하는 빈입니다( Camel DSL에 바인딩 추가).
바인딩된 엔드포인트를 정의하는 방법은 몇 가지 있습니다(예: Binding으로 바인딩된 끝점).
47.3. 바인딩 URI 사용 링크 복사링크가 클립보드에 복사되었습니다!
끝점 URI 앞에 binding:nameOfBinding: 을 접두사로 지정할 수 있습니다. 여기서 nameOfBinding 은 레지스트리의 Binding 빈 이름입니다.
from("binding:jaxb:activemq:myQueue").to("binding:jaxb:activemq:anotherQueue")
여기서는 예를 들어 JAXB 데이터 형식을 사용하여 마샬링 및 해상 메시지를 마샬링할 수 있는 "jaxb" 바인딩을 사용하고 있습니다.
47.4. BindingComponent 사용 링크 복사링크가 클립보드에 복사되었습니다!
일부 바인딩에 이미 바인딩된 끝점을 만들 수 있는 종속성 주입을 통해 레지스트리에 구성할 수 있는 BindingComponent라는 구성 요소가 있습니다.There is a Component called BindingComponent which can be configured in your Registry by dependency injection which allows the creation of endpoints which are already bound to some binding.
예를 들어 다음과 같은 코드를 사용하여 레지스트리에 "jsonmq"라는 새 구성 요소를 등록한 경우
JacksonDataFormat format = new JacksonDataFormat(MyBean.class);
context.bind("jsonmq", new BindingComponent(new DataFormatBinding(format), "activemq:foo."));
그러면 끝점을 다른 끝점처럼 사용할 수 있습니다.
from("jsonmq:myQueue").to("jsonmq:anotherQueue")
큐us "foo.myQueue" 및 "foo.anotherQueue"를 사용하고 지정된 Jackson 데이터 형식을 대기열에서 마샬링하는 데 사용합니다.
47.5. 바인딩 사용 시기 링크 복사링크가 클립보드에 복사되었습니다!
단일 경로에서 엔드 포인트만 사용하는 경우; 바인딩은 'raw' 엔드포인트를 직접 사용하고 camel 경로에서 명시적 마샬링 및 유효성 검사를 정상적으로 사용하는 것보다 더 복잡하고 더 복잡 할 수 있습니다.
그러나 바인딩을 사용하면 여러 경로를 함께 구성하거나 단일 경로를 입력 및 출력 끝점으로 구성된 'template'로 사용하는 경우 도움이 될 수 있습니다. 그러면 바인딩에서 계약 및 끝점을 래핑할 수 있는 좋은 방법을 제공합니다.
바인딩에 대한 또 다른 좋은 사용 사례는 동일한 바인딩을 사용하는 많은 끝점을 사용하는 경우입니다. 항상 특정 데이터 형식 또는 유효성 검사 규칙을 언급하지 않고 BindingComponent를 사용하여 선택한 바인딩에 끝점을 래핑할 수 있습니다.
따라서 바인딩은 구성 도구이며, 의미가 있을 때만 사용합니다. 경로 또는 끝점이 많지 않은 경우 추가 복잡성은 가치가 없을 수 있습니다.
48장. Bindy DataFormat 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.0에서 사용 가능
이 구성 요소의 목표는 비구조화된 데이터의 구문 분석/바인딩(또는 보다 정확한 비 XML 데이터)
~/from Java Beans that have binding mappings defined with annotations. Bindy를 사용하면 다음과 같은 소스의 데이터를 바인딩할 수 있습니다.
- CSV 레코드
- 고정 길이 레코드,
- FIX 메시지,
- 또는 거의 비정형되지 않은 데이터
POJO(Plain Old Java Object) 중 하나 이상 Bindy는 java 속성의 유형에 따라 데이터를 변환합니다. POJO는 일부 경우에 사용 가능한 일대다 관계와 함께 연결할 수 있습니다. 또한 Date, Double, Float, Integer, Short, Long and BigDecimal와 같은 데이터 형식의 경우 속성을 포맷하는 동안 적용할 패턴을 제공할 수 있습니다.
BigDecimal 숫자의 경우 전체 자릿수와 소수 또는 그룹화 구분 기호도 정의할 수 있습니다.For the Big decimal numbers, you can also define the precision and the decimal or grouping separators.
| 유형 | 형식 유형 | 패턴 예 | link |
|---|---|---|---|
| 날짜 | DateFormat |
| http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html |
| decimal* | Decimalformat |
| http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html |
decimal* = Double, Integer, Float, Short, Long
*Format supported*
이 첫 번째 릴리스에서는 쉼표로 구분된 값 필드와 키 값 쌍 필드(예: FIX 메시지)만 지원합니다.
comel-bindy를 사용하려면 먼저 패키지(예: com.acme.model)에서 모델을 정의하고 각 모델 클래스(예: Order, Client, Instrument, …)에 필요한 주석을 클래스 또는 필드에 추가해야 합니다.
*Multiple models*
여러 모델을 사용하는 경우 예측할 수 없는 결과를 방지하기 위해 각 모델을 자체 패키지에 배치해야 합니다.
Camel 2.16 이후부터는 이제 패키지 이름 대신 클래스 이름을 사용하여 bindy를 구성할 때 동일한 패키지에 여러 모델을 안전하게 가질 수 있으므로 더 이상 이러한 문제가 발생하지 않습니다.
48.1. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Bindy dataformat은 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 기본값 | Java Type | 설명 |
|---|---|---|---|
| type |
| csv 사용 여부, 고정 또는 키 값 쌍 모드입니다. 기본값은 선택한 데이터 형식에 따라 Csv 또는 KeyValue입니다. | |
| classType |
| 사용할 모델 클래스의 이름입니다. | |
| locale |
| 단위 상태를 위해 us와 같이 사용할 기본 로케일을 구성하려면 다음을 수행합니다. JVM 플랫폼 기본 로케일을 사용하려면 이름 기본값을 사용합니다. | |
| unwrapSingleInstance |
|
| unmarshalling이 단일 인스턴스를 래핑하지 않고 java.util.List로 래핑하지 않아야 할 때. |
| contentTypeHeader |
|
| 데이터 형식이 데이터 형식에서 수행할 수 있는 경우 데이터 형식의 유형으로 Content-Type 헤더를 설정해야 하는지 여부입니다. 예를 들어 데이터 형식을 XML로 마샬링하거나, JSon으로 마샬링되는 데이터 형식에 대한 application/json 등이 있습니다. |
48.2. 주석 링크 복사링크가 클립보드에 복사되었습니다!
생성된 주석은 모델의 다른 개념을 다음과 같이 POJO에 매핑할 수 있습니다.
- 레코드 유형(csv, 키 값 쌍(예: FIX 메시지), 고정 길이 …
- link (다른 오브젝트의 객체 연결)
- DataField 및 해당 속성(int, type, …
- KeyValuePairField (예: FIX 재무 메시지와 같은 key = 값 형식)
- 섹션(헤더, 본문 및 바닥글 섹션을 식별하는)
- OneToMany,
- BindyConverter (since 2.18.0)
- FormatFactories (since 2.18.0)
이 섹션에서는 다음에 대해 설명합니다.
48.3. 1. CsvRecord 링크 복사링크가 클립보드에 복사되었습니다!
CsvRecord 주석은 모델의 루트 클래스를 식별하는 데 사용됩니다. 이는 레코드 = CSV 파일의 줄이며 여러 자식 모델 클래스에 연결할 수 있습니다.
| 주석 이름 | 레코드 유형 | level |
|---|---|---|
| CsvRecord | csv | class |
| 매개변수 이름 | type | 정보 |
|---|---|---|
| separator | string | 필수 - ',' 또는 ';' 또는 ' anything'일 수 있습니다. 이 값은 정규식으로 해석됩니다. 정규식에서 특별한 의미가 있는 기호(예: '|' 기호)를 사용하려면 "|'와 같이 마스킹해야 하는 것보다"|' 기호입니다. |
| skipFirstLine | boolean | 선택 사항 - default value = false - CSV 파일의 첫 번째 줄을 건너뛸 수 있습니다. |
| crlf | string | 선택 사항 - 가능한 값 = WINDOWS,UNIX,MAC 또는 custom; 기본값. WINDOWS - 사용할 캐리지 반환 문자를 정의할 수 있습니다. 앞에 나열된 세 개 이외의 값을 지정하면 입력하는 값 (custom)이 CRLF 문자로 사용됩니다. |
| generateHeaderColumns | boolean | 선택 사항 - default value = false - 는 CSV의 헤더 열을 생성하는 데 사용합니다. |
| autospanLine | boolean | Camel 2.13/2.12.2: 선택 사항 - 기본값 = false - 이 옵션을 사용하면 마지막 열이 행 끝으로 자동 확장됩니다(예: 주석 처리한 경우 행도 모든 문자, 구분 기호 문자). |
| isOrdered | boolean | 선택 사항 - default value = false - CSV가 생성될 때 필드의 순서를 변경할 수 있습니다. |
| quote | 문자열 | Camel 2.8.3/2.9: 옵션을 사용하면 CSV가 생성될 때 필드의 인용 문자를 지정할 수 있습니다. 이 주석은 모델의 루트 클래스에 연결되며 한 번만 선언해야 합니다. |
| quoting | boolean | *Camel 2.11:*optional - default value = false - CSV 마샬링 시 값(및 헤더)을 인용해야 함을 나타냅니다. |
| endWithLineBreak | boolean | Camel 2.21: 선택 사항 - 기본값 = true - CSV 생성 파일이 줄 바꿈으로 끝나야 하는지 나타냅니다. |
case 1 : separator = ','
CSV 레코드에서 필드를 분리하는 데 사용되는 구분 기호는 ','입니다.
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500,
USD,08-01-2009
@CsvRecord( separator = "," )
public Class Order {
}
case 2 : separator = ';'
이전 사례와 비교하여 여기에 구분 기호는 ';' 대신 ','입니다.
10; J; Pauline; M; XD12345678; Fortis Dynamic 15/15; 2500, USD, 08-01-2009
@CsvRecord( separator = ";" )
public Class Order {
}
case 3 : separator = '|'
이전 사례와 비교하여 여기서 구분 기호는 '|' 대신 ';'입니다.
10| J| Pauline| M| XD12345678| Fortis Dynamic 15/15| 2500| USD|
08-01-2009
@CsvRecord( separator = "\\|" )
public Class Order {
}
case 4 : separator = '\",\"'
Camel 2.8.2 또는 이전 버전에 적용
CSV 레코드를 구문 분석할 필드에 구분 기호로도 구분 기호로 사용되는 ',' 또는 ';'가 포함된 필드에 다른 전략
을 찾아 이 사례를 처리하는 방법을 camel bindy를 알립니다. 데이터가 쉼표로 포함된 필드를 정의하려면 simple 또는 double quotes
를 구분 기호(예: '10', 'Street 10, NY', 'USA' 또는 "10", "Street 10, NY", "USA")로 사용합니다.
Remark: 이 경우 단순 또는 큰따옴표인 줄의 첫 번째 문자와 마지막 문자가 bindy로 제거됩니다.
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15"
2500","USD","08-01-2009"
@CsvRecord( separator = "\",\"" )
public Class Order {
}
Camel 2.8.3/2.9 또는 bindy를 사용하면 레코드를 작은따 옴표 또는 큰따옴표로 묶고 CSV에서 오브젝트로 나눌 때 이러한 따옴표를 자동으로 제거합니다. 따라서 구분 기호에 따옴표를 포함하지 말고 다음과 같이 간단히 수행합니다.
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15"
2500","USD","08-01-2009"
@CsvRecord( separator = "," )
public Class Order {
}
If you want to marshal from Object to CSV and use quotes, then you need to specify which quote character to use, using the quote attribute on the @CsvRecord:
@CsvRecord( separator = ",", quote = "\"" )
public Class Order {
}
케이스 5: separator & skipfirstline
이 기능은 클라이언트가 파일의 첫 번째 줄에, 데이터 필드의 이름을 보유하려는 경우에 유용합니다.
주문 ID, 클라이언트 ID, 이름, 성, isin 코드, 계측 이름, 수량, 통화, 날짜
구문 분석 프로세스 중에 이 첫 번째 줄을 건너뛰어야 함을 알리기 위해 특성을 사용합니다.
@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {
}
case 6 : generateHeaderColumns
생성된 CSV의 첫 번째 줄에 추가하려면 다음과 같이 주석에서 generateHeaderColumns를 true로 설정해야 합니다.
@CsvRecord( generateHeaderColumns = true )
public Class Order {
}
결과적으로marshaling 프로세스 중에 Bindy가 다음과 같이 CSV를 생성합니다.
주문 ID, 클라이언트 ID, 이름, 성, isin 코드, 계측 이름, 수량, 통화, 날짜
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD,08-01-2009
케이스 7: 캐리지 리턴
comel-bindy가 실행되는 플랫폼이 Windows가 아닌 Macintosh 또는 Unix가 아닌 경우 다음과 같이 crlf 속성을 변경할 수 있습니다. 세 가지 값 사용 가능: WINDOWS, UNIX 또는 MAC
@CsvRecord(separator = ",", crlf="MAC")
public Class Order {
}
또한 어떤 이유로든 다른 줄 끝 문자를 추가해야 하는 경우 crlf 매개 변수를 사용하여 지정할 수 있습니다. 다음 예제에서는 줄을 쉼표와 줄 바꿈 문자로 끝낼 수 있습니다.In the following example, we can end the line with a comma followed by the newline character:
@CsvRecord(separator = ",", crlf=",\n")
public Class Order {
}
case 8 : isOrdered
경우에 따라 모델에서 CSV 레코드를 생성하는 동안 따라야 하는 순서는 구문 분석 중에 사용된 순서와 다릅니다. 그런 다음, 이 경우, isOrdered = true 속성을 사용하여 DataField 주석의 'position' 속성과 함께 이를 나타낼 수 있습니다.
@CsvRecord(isOrdered = true)
public Class Order {
@DataField(pos = 1, position = 11)
private int orderNr;
@DataField(pos = 2, position = 10)
private String clientNr;
}
pos는 CSV를 생성하는 데 사용되는 동안 파일을 구문 분석하는 데 사용됩니다.
48.4. 2. link 링크 복사링크가 클립보드에 복사되었습니다!
link 주석은 오브젝트를 함께 연결할 수 있습니다.
| 주석 이름 | 레코드 유형 | level |
|---|---|---|
| link | all | 클래스 & 재산 |
| 매개변수 이름 | type | 정보 |
|---|---|---|
| linkType | LinkType | 선택 사항 - 기본값은 LinkType.one입니다. 따라서 언급할 의무는 없습니다. |
단 한 번의 관계가 허용됩니다.
예: 모델 클래스 클라이언트가 Order 클래스에 연결된 경우 다음과 같이 Order 클래스에서 주석 링크를 사용하십시오.
속성 링크
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@Link
private Client client;
}
및 클래스 클라이언트의 경우:
Class Link
@Link
public class Client {
}
48.5. 3. DataField 링크 복사링크가 클립보드에 복사되었습니다!
DataField 주석은 필드의 속성을 정의합니다. 각 datafield는 레코드의 위치, 유형(string, int, date, …) 및 선택적으로 패턴으로 식별됩니다.
| 주석 이름 | 레코드 유형 | level |
|---|---|---|
| DataField | all | 속성 |
| 매개변수 이름 | type | 정보 |
|---|---|---|
| POS | int | 필수 - 필드의 입력 위치. 1에서 … 사이의 숫자 번호 - 위치 매개 변수를 참조하십시오. |
| 패턴 | string | 선택 사항 - 기본값 = "" - 은 Decimal, Date를 포맷하는 데 사용됩니다. |
| 길이 | int | 선택 사항 - 고정 길이 형식의 필드 길이를 나타냅니다. optional - represents the length of the field for fixed length format. |
| Precision | int | 선택 사항 - Decimal 숫자를 포맷/분석할 때 사용할 전체 자릿수를 나타냅니다. optional - represents the precision to be used when the Decimal number will be formatted/parsed. |
| 패턴 | string | 선택 사항 - default value = "" - Java formatter(예:SimpleDateFormat by example)에서 포맷/유효 데이터를 포맷하는 데 사용됩니다. 패턴을 사용하는 경우 bindy 데이터 형식에 로케일을 설정하는 것이 좋습니다. "us"와 같은 알려진 로케일로 설정하거나 플랫폼 기본 로케일을 사용하려면 "default"를 사용합니다. "default"에는 Camel 2.14/2.13.3/2.12.5가 필요합니다. |
| 위치 | int | 선택 사항 - CSV 생성(출력 메시지)의 필드 위치가 입력 위치와 비교해야 하는 경우 사용해야 합니다. pos 매개변수를 참조하십시오. |
| 필수 항목 | boolean | optional - default value = "false" |
| trim | boolean | optional - default value = "false" |
| defaultValue | string | Camel 2.10: 선택 사항 - 기본값 = "" - 각 CSV 필드가 비어 있을 때 필드의 기본값을 정의합니다. |
| impliedDecimalSeparator | boolean | Camel 2.11: 선택 사항 - 기본값 = "false" - 지정된 위치에 임차된 소수점이 있는지 여부를 나타냅니다. |
| lengthPos | int | Camel 2.11: 선택 사항 - 이 필드에 대한 고정 길이를 정의하는 고정 길이 레코드의 데이터 필드를 식별하는 데 사용할 수 있습니다. |
| align | string | 선택 사항 - 기본값 = "R" - 텍스트를 고정 길이 필드의 오른쪽에서 왼쪽으로 정렬합니다. 값 'R' 또는 'L' 사용 |
| 구분 기호 | string | Camel 2.11: 선택 사항 - 고정 길이 레코드에서 변수 길이 필드의 끝을 구분하는 데 사용할 수 있습니다. |
케이스 1 : pos
이 매개변수/attribute는 csv 레코드에서 필드의 위치를 나타냅니다.
위치
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@DataField(pos = 5)
private String isinCode;
}
이 예제에서 볼 수 있듯이 위치는 '1'에서 시작하지만 클래스 순서의 '5'에서 계속됩니다. '2'에서 '4'까지의 숫자는 클래스 클라이언트에 정의됩니다(아래 참조).
position은 다른 모델 클래스에서 계속됩니다.
public class Client {
@DataField(pos = 2)
private String clientNr;
@DataField(pos = 3)
private String firstName;
@DataField(pos = 4)
private String lastName;
}
케이스 2 : 패턴
패턴을 통해 데이터 형식을 보강하거나 검증할 수 있습니다.
패턴
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@DataField(pos = 5)
private String isinCode;
@DataField(name = "Name", pos = 6)
private String instrumentName;
@DataField(pos = 7, precision = 2)
private BigDecimal amount;
@DataField(pos = 8)
private String currency;
// pattern used during parsing or when the date is created
@DataField(pos = 9, pattern = "dd-MM-yyyy")
private Date orderDate;
}
케이스 3: precision
전체 자릿수는 숫자의 10진수 부분을 정의하려는 경우에 유용합니다.The precision is helpful when you want to define the decimal part of your number.
Precision
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@Link
private Client client;
@DataField(pos = 5)
private String isinCode;
@DataField(name = "Name", pos = 6)
private String instrumentName;
@DataField(pos = 7, precision = 2)
private BigDecimal amount;
@DataField(pos = 8)
private String currency;
@DataField(pos = 9, pattern = "dd-MM-yyyy")
private Date orderDate;
}
케이스 4: Position은 출력에서 다릅니다.
position 속성은 생성된 CSV 레코드에 필드를 배치하는 방법을 bindy에 알립니다. 기본적으로 사용되는 위치는 'pos' 속성으로 정의된 위치에 해당합니다. 위치가 다르면 (즉, '지정'을 사용하여 이를 나타내는 데 사용할 수 있는 것 보다 천문적 프로세스가 마샬링에서 마샬링되는 것을 비교할 수 있습니다.
예를 들면 다음과 같습니다.
위치가 출력에 따라 다릅니다.
@CsvRecord(separator = ",", isOrdered = true)
public class Order {
// Positions of the fields start from 1 and not from 0
@DataField(pos = 1, position = 11)
private int orderNr;
@DataField(pos = 2, position = 10)
private String clientNr;
@DataField(pos = 3, position = 9)
private String firstName;
@DataField(pos = 4, position = 8)
private String lastName;
@DataField(pos = 5, position = 7)
private String instrumentCode;
@DataField(pos = 6, position = 6)
private String instrumentNumber;
}
주석 @DataField의 이 속성은 @CsvRecord의 attribute isOrdered = true와 함께 사용해야 합니다.
케이스 5 : 필수
필드가 필수인 경우 'required' 특성을 true로만 사용하십시오.
필수 항목
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@DataField(pos = 2, required = true)
private String clientNr;
@DataField(pos = 3, required = true)
private String firstName;
@DataField(pos = 4, required = true)
private String lastName;
}
이 필드가 레코드에 없으면 다음 정보를 사용하여 구문 분석기에서 오류보다 발생합니다.If this field is not present in the record, than an error will be raised by the parser with the following information:
일부 필드는 누락(선택 사항 또는 필수) 라인입니다.
case 6 : trim
필드에 처리 전에 제거해야 하는 선행 및/또는 후행 공백이 있는 경우 true로 설정된 'trim' 특성을 사용합니다.
Trim
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1, trim = true)
private int orderNr;
@DataField(pos = 2, trim = true)
private Integer clientNr;
@DataField(pos = 3, required = true)
private String firstName;
@DataField(pos = 4)
private String lastName;
}
case 7 : defaultValue
필드가 정의되지 않은 경우 defaultValue 특성으로 표시된 값을 사용합니다.
기본값
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@DataField(pos = 2)
private Integer clientNr;
@DataField(pos = 3, required = true)
private String firstName;
@DataField(pos = 4, defaultValue = "Barin")
private String lastName;
}
이 속성은 선택적 필드에만 적용할 수 있습니다.
48.6. 4. FixedLengthRecord 링크 복사링크가 클립보드에 복사되었습니다!
FixedLengthRecord 주석은 모델의 루트 클래스를 식별하는 데 사용됩니다. 레코드 = 데이터 고정 길이 형식이 포함된 파일/메시지 선을 나타내며 여러 자식 모델 클래스에 연결할 수 있습니다. 이 형식은 필드를 약간 구체적으로 사용하여 오른쪽 또는 왼쪽에 맞을 수 있습니다.
데이터 크기가 필드 길이를 완전히 채우지 않으면 '추가' 문자를 추가할 수 있습니다.
| 주석 이름 | 레코드 유형 | level |
|---|---|---|
| FixedLengthRecord | fixed | class |
| 매개변수 이름 | type | 정보 |
|---|---|---|
| crlf | string | 선택 사항 - 가능한 값 = WINDOWS,UNIX,MAC 또는 custom; 기본값. WINDOWS - 사용할 캐리지 반환 문자를 정의할 수 있습니다. 앞에 나열된 세 개 이외의 값을 지정하면 입력하는 값(custom)이 CRLF 문자로 사용됩니다. 이 옵션은 마샬링 중에만 사용되는 반면, unmarshalling은 eol을 사용자 지정하지 않는 한 시스템 기본 JDK 제공 줄 구분 기호를 사용합니다. |
| EOL | string | 선택 사항 - 비어 있는 문자열인 default=""입니다. 각 레코드 후 행 종료를 처리하는 데 사용할 문자입니다(다른 줄 구분 기호가 제공되지 않는 한 기본 JDK 제공 구분 기호를 사용하는 경우 기본 JDK에서 줄 구분 기호를 사용하는 데 도움이 되는 - default = ""). 이 옵션은 unmarshalling 중에만 사용됩니다. 여기서 마샬링은 다른 값을 제공하지 않는 한 "WINDOWS"로 시스템 기본 제공된 줄 구분 기호를 사용합니다. |
| paddingChar | char | mandatory - default value = ' ' |
| 길이 | int | mandatory = 고정 길이 레코드의 크기 |
| hasHeader | boolean | Camel 2.11 - 선택 사항 - 이 유형의 레코드 앞에 파일 / 스트림의 시작 부분에 단일 헤더 레코드가 있을 수 있음을 나타냅니다. |
| hasFooter | boolean | Camel 2.11 - 선택 사항 - 이 유형의 레코드 뒤에 파일 / 스트림 끝에 있는 단일 바닥글 레코드가 있음을 나타냅니다. |
| skipHeader | boolean | Camel 2.11 - 선택 사항 - 헤더 레코드의 마샬링/마이크아웃을 건너뛰도록 데이터 형식을 구성합니다. 기본 레코드(예: 헤더 또는 바닥글 아님)에서 이 매개변수를 구성합니다. |
| skipFooter | boolean | Camel 2.11 - 선택 사항 - 바닥글 레코드 마샬링/마이크아웃을 건너뛰도록 데이터 형식을 구성하여 기본 레코드(예: 헤더 또는 발기가 아님)에서 이 매개 변수를 구성합니다. |
| isHeader | boolean | Camel 2.11 - 선택 사항 - 이 FixedLengthRecord를 헤더 레코드로 식별합니다. |
| isFooter | boolean | Camel 2.11 - 선택 사항 - 이 FixedLengthRecords를 바닥글 레코드로 식별합니다. |
| ignoreTrailingChars | boolean | Camel 2.11.1 - 선택 사항 - 마지막 매핑된 파일 이외의 문자를 / 구문 분석하지 않을 때 무시할 수 있음을 나타냅니다. 이 주석은 모델의 루트 클래스에 연결되며 한 번만 선언해야 합니다. |
hasHeader/hasFooter 매개변수는 isHeader/isFooter와 함께 함께 사용할 수 없습니다. 레코드는 헤더/footer 및 기본 고정 길이 레코드가 아닐 수 있습니다.
케이스 1 : 간단한 고정 길이 레코드
이 간단한 예제에서는 고정 메시지를 구문 분석 / 포맷하도록 모델을 설계하는 방법을 보여줍니다.
10A9PaulineMISINXD12345678BUYShare2500.45USD01-08-2009
fixed-simple
@FixedLengthRecord(length=54, paddingChar=' ')
public static class Order {
@DataField(pos = 1, length=2)
private int orderNr;
@DataField(pos = 3, length=2)
private String clientNr;
@DataField(pos = 5, length=7)
private String firstName;
@DataField(pos = 12, length=1, align="L")
private String lastName;
@DataField(pos = 13, length=4)
private String instrumentCode;
@DataField(pos = 17, length=10)
private String instrumentNumber;
@DataField(pos = 27, length=3)
private String orderType;
@DataField(pos = 30, length=5)
private String instrumentType;
@DataField(pos = 35, precision = 2, length=7)
private BigDecimal amount;
@DataField(pos = 42, length=3)
private String currency;
@DataField(pos = 45, length=10, pattern = "dd-MM-yyyy")
private Date orderDate;
}
케이스 2 : 정렬 및 패딩을 사용한 길이 레코드 수정
이 더 정교한 예제에서는 필드에 대한 정렬을 정의하는 방법과 '여기'인 패딩 문자를 할당하는 방법을 보여줍니다.
10A9 PaulineM ISINXD12345678BUYShare2500.45USD01-08-2009
fixed-padding-align
@FixedLengthRecord(length=60, paddingChar=' ')
public static class Order {
@DataField(pos = 1, length=2)
private int orderNr;
@DataField(pos = 3, length=2)
private String clientNr;
@DataField(pos = 5, length=9)
private String firstName;
@DataField(pos = 14, length=5, align="L") // align text to the LEFT zone of the block
private String lastName;
@DataField(pos = 19, length=4)
private String instrumentCode;
@DataField(pos = 23, length=10)
private String instrumentNumber;
@DataField(pos = 33, length=3)
private String orderType;
@DataField(pos = 36, length=5)
private String instrumentType;
@DataField(pos = 41, precision = 2, length=7)
private BigDecimal amount;
@DataField(pos = 48, length=3)
private String currency;
@DataField(pos = 51, length=10, pattern = "dd-MM-yyyy")
private Date orderDate;
}
케이스 3: 필드 패딩
경우에 따라 레코드용으로 정의된 기본 패딩은 '' 대신 '0'으로 패딩하려는 숫자 형식이 있으므로 필드에 적용할 수 없습니다. 이 경우 모델에서 paddingField 특성을 사용하여 이 값을 설정할 수 있습니다.
10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
fixed-padding-field
@FixedLengthRecord(length = 65, paddingChar = ' ')
public static class Order {
@DataField(pos = 1, length = 2)
private int orderNr;
@DataField(pos = 3, length = 2)
private String clientNr;
@DataField(pos = 5, length = 9)
private String firstName;
@DataField(pos = 14, length = 5, align = "L")
private String lastName;
@DataField(pos = 19, length = 4)
private String instrumentCode;
@DataField(pos = 23, length = 10)
private String instrumentNumber;
@DataField(pos = 33, length = 3)
private String orderType;
@DataField(pos = 36, length = 5)
private String instrumentType;
@DataField(pos = 41, precision = 2, length = 12, paddingChar = '0')
private BigDecimal amount;
@DataField(pos = 53, length = 3)
private String currency;
@DataField(pos = 56, length = 10, pattern = "dd-MM-yyyy")
private Date orderDate;
}
케이스 4: 구분 기호를 사용하여 고정 길이 레코드
고정 길이 레코드에는 종종 레코드 내에 구분된 콘텐츠가 있는 경우가 있습니다. firstName 및 lastName 필드는 다음 예제에서 '^' 문자로 구분됩니다.
10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009
고정됨
@FixedLengthRecord()
public static class Order {
@DataField(pos = 1, length = 2)
private int orderNr;
@DataField(pos = 2, length = 2)
private String clientNr;
@DataField(pos = 3, delimiter = "^")
private String firstName;
@DataField(pos = 4, delimiter = "^")
private String lastName;
@DataField(pos = 5, length = 4)
private String instrumentCode;
@DataField(pos = 6, length = 10)
private String instrumentNumber;
@DataField(pos = 7, length = 3)
private String orderType;
@DataField(pos = 8, length = 5)
private String instrumentType;
@DataField(pos = 9, precision = 2, length = 12, paddingChar = '0')
private BigDecimal amount;
@DataField(pos = 10, length = 3)
private String currency;
@DataField(pos = 11, length = 10, pattern = "dd-MM-yyyy")
private Date orderDate;
}
Camel 2.11 부터 고정 길이 레코드의 'pos' 값은 정확한 열 번호 대신 순차적 값을 사용하여 선택적으로 정의할 수 있습니다.
case 5 : 레코드 정의 필드 길이를 사용한 고정 길이 레코드
고정 길이 레코드에는 동일한 레코드 내의 다른 필드의 예상 길이를 정의하는 필드가 포함될 수 있습니다. 다음 예에서 instrumentNumber 필드 값의 길이는 레코드의 instrumentNumberLen 필드 값으로 정의됩니다.
10A9Pauline^M^ISIN10XD12345678BUYShare000002500.45USD01-08-2009
고정됨
@FixedLengthRecord()
public static class Order {
@DataField(pos = 1, length = 2)
private int orderNr;
@DataField(pos = 2, length = 2)
private String clientNr;
@DataField(pos = 3, delimiter = "^")
private String firstName;
@DataField(pos = 4, delimiter = "^")
private String lastName;
@DataField(pos = 5, length = 4)
private String instrumentCode;
@DataField(pos = 6, length = 2, align = "R", paddingChar = '0')
private int instrumentNumberLen;
@DataField(pos = 7, lengthPos=6)
private String instrumentNumber;
@DataField(pos = 8, length = 3)
private String orderType;
@DataField(pos = 9, length = 5)
private String instrumentType;
@DataField(pos = 10, precision = 2, length = 12, paddingChar = '0')
private BigDecimal amount;
@DataField(pos = 11, length = 3)
private String currency;
@DataField(pos = 12, length = 10, pattern = "dd-MM-yyyy")
private Date orderDate;
}
케이스 6 : 헤더 및 바닥글을 사용한 길이 레코드 수정
Bindy는 모델의 일부로 구성된 고정 길이 헤더 및 바닥글 레코드를 검색합니다. - 주석 처리된 클래스가 기본 @FixedLengthRecord 클래스와 동일한 패키지에 있거나 구성된 검사 패키지 중 하나에 존재하는 경우 제공됩니다. 다음 텍스트는 헤더 레코드 및 바닥글 레코드로 묶인 두 개의 고정 길이 레코드를 보여줍니다.
101-08-2009
10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
10A9 RichN ISINXD12345678BUYShare000002700.45USD01-08-2009
9000000002
Fixed-header-and-footer-main-class
@FixedLengthRecord(hasHeader = true, hasFooter = true)
public class Order {
@DataField(pos = 1, length = 2)
private int orderNr;
@DataField(pos = 2, length = 2)
private String clientNr;
@DataField(pos = 3, length = 9)
private String firstName;
@DataField(pos = 4, length = 5, align = "L")
private String lastName;
@DataField(pos = 5, length = 4)
private String instrumentCode;
@DataField(pos = 6, length = 10)
private String instrumentNumber;
@DataField(pos = 7, length = 3)
private String orderType;
@DataField(pos = 8, length = 5)
private String instrumentType;
@DataField(pos = 9, precision = 2, length = 12, paddingChar = '0')
private BigDecimal amount;
@DataField(pos = 10, length = 3)
private String currency;
@DataField(pos = 11, length = 10, pattern = "dd-MM-yyyy")
private Date orderDate;
}
@FixedLengthRecord(isHeader = true)
public class OrderHeader {
@DataField(pos = 1, length = 1)
private int recordType = 1;
@DataField(pos = 2, length = 10, pattern = "dd-MM-yyyy")
private Date recordDate;
}
@FixedLengthRecord(isFooter = true)
public class OrderFooter {
@DataField(pos = 1, length = 1)
private int recordType = 9;
@DataField(pos = 2, length = 9, align = "R", paddingChar = '0')
private int numberOfRecordsInTheFile;
}
케이스 7: 고정 길이 레코드를 구문 분석할 때 콘텐츠를 Skipping합니다. (Camel 2.11.1)
일반적으로 고정 길이 레코드에는 대상 사용 사례에 필요한 것보다 더 많은 정보가 포함된 고정 길이 레코드를 제공하는 시스템과의 통합이 일반적입니다. 이 경우 필요하지 않은 해당 필드의 선언 및 구문 분석을 건너뛰는 것이 유용합니다. 이를 이해하기 위해 Bindy는 마지막 구문 분석 필드의 'pos' 값이 마지막 구문 분석 필드의 커서 위치를 벗어나는 경우 레코드 내의 다음 매핑된 필드로 건너뜁니다. 관심 필드(오드인 값 대신)에 절대 'pos' 위치를 사용하면 bindy가 두 필드 간에 콘텐츠를 건너뜁니다.
마찬가지로 일부 필드 이외의 콘텐츠는 관심이 없습니다. 이 경우 @FixedLengthRecord 선언에서 ignoreTrailingChars 속성을 설정하여 마지막 매핑된 필드 이외의 모든 항목의 구문 분석을 건너뛰도록 Bindy를 지시할 수 있습니다.
@FixedLengthRecord(ignoreTrailingChars = true)
public static class Order {
@DataField(pos = 1, length = 2)
private int orderNr;
@DataField(pos = 3, length = 2)
private String clientNr;
// any characters that appear beyond the last mapped field will be ignored
}
48.7. 5. 메시지 링크 복사링크가 클립보드에 복사되었습니다!
Message 주석은 키 값 쌍 필드를 포함하는 모델의 클래스를 식별하는 데 사용됩니다. 이러한 유형의 형식은 주로 재무 교환 프로토콜 메시지 (FIX)에서 사용됩니다. 그럼에도 불구하고 이 주석은 데이터가 키로 식별되는 다른 모든 형식에 사용할 수 있습니다. 키 쌍 값은 탭 delimitor (unicode representation : \u0009) 또는 제목 시작(예: \u0001)과 같은 특수 문자가 될 수 있는 구분 기호로 서로 분리됩니다.
*"FIX information"*
FIX에 대한 자세한 내용은 다음 웹 사이트에서 확인할 수 있습니다 : http://www.fixprotocol.org/. FIX 메시지를 사용하려면 모델에 Order 클래스일 수 있는 루트 메시지 클래스에 연결된 헤더 및 Trailer 클래스가 포함되어 있어야 합니다. 이는 필수 사항은 아니지만 quickFix 프로젝트 http://www.quickfixj.org/ 을 기반으로 하는 Fix gateway인 camel-fix와 함께 camel-bindy를 사용할 때 매우 유용합니다.
| 주석 이름 | 레코드 유형 | level |
|---|---|---|
| 메시지 | 키 값 쌍 | class |
| 매개변수 이름 | type | 정보 |
|---|---|---|
| pairSeparator | string | 필수 - '=' 또는 ';' 또는 ' anything'일 수 있습니다. |
| keyValuePairSeparair | string | 필수 - '\u0001', '\u0009', '#' 또는 'anything'일 수 있습니다. |
| crlf | string | 선택 사항 - 가능한 값 = WINDOWS,UNIX,MAC 또는 custom; default 값 = WINDOWS - 사용할 캐리지 리턴 문자를 정의할 수 있습니다. 앞에 나열된 세 개 이외의 값을 지정하면 입력하는 값 (custom)이 CRLF 문자로 사용됩니다. |
| type | string | 선택 사항 - 메시지 유형을 정의합니다(예: FIX, EMX, …). |
| version | string | 선택 사항 - 메시지의 버전 (예: 4.1) |
| isOrdered | boolean | 선택 사항 - default value = false - FIX 메시지가 생성될 때 필드의 순서를 변경할 수 있습니다. 이 주석은 모델의 메시지 클래스에 연결되어 있으며 한 번만 선언해야 합니다. |
케이스 1: separator = 'u0001'
FIX 메시지에서 키 값 쌍 필드를 분리하는 데 사용되는 구분 기호는 ASCII '01' 문자 또는 유니코드 형식 '\u0001'입니다. java 런타임 오류를 방지하려면 이 문자를 두 번째로 이스케이프해야 합니다. 다음은 이에 대한 예입니다.Here is an example:
8=FIX.4.1 9=20 34=1 35=0 49=INVMGR 56=BRKR 1=BE.CHM.001 11=CHM0001-01
22=4 ...
및 주석 사용 방법
FIX - 메시지
@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {
}
*Look at test cases*
tab, …과 같은 ASCII 문자는 WIKI 페이지에 표시할 수 없습니다. 따라서 FIX 메시지가 (src\test\data\fix\fix\fix.txt)와 Order, Trailer, Header 클래스 (src\test\java\org\apache\camel\dataformat\data format\bindy\bindy\bindy\bindy\bindy\bindy\simple\Order)와 같은 방식을 정확하게 보려면 camel-bindy의 테스트 케이스를 살펴보십시오.
48.8. 6. KeyValuePairField 링크 복사링크가 클립보드에 복사되었습니다!
KeyValuePairField 주석은 키 값 쌍 필드의 속성을 정의합니다. 각 KeyValuePairField는 태그(= 키) 및 연결된 값(문자열, int, date, …, 선택 사항)으로 식별되고 필드가 필요한 경우 선택적으로 표시됩니다.
| 주석 이름 | 레코드 유형 | level |
|---|---|---|
| KeyValuePairField | 키 값 쌍 - FIX | 속성 |
| 매개변수 이름 | type | 정보 |
|---|---|---|
| tag | int | 필수 - 메시지의 필드를 식별하는 숫자 - 고유해야 합니다. |
| 패턴 | string | 선택 사항 - 기본값 = "" - # 10진수, 날짜, … 형식을 지정하는 데 사용됩니다. |
| Precision | int | 선택 사항 - 숫자 번호의 서식/분수를 포맷/분할 때 사용할 전체 자릿수를 나타냅니다. optional - digit number - represents the precision to be used when the decimal number will be formatted/parsed. |
| 위치 | int | 선택 사항 - FIX 메시지의 키/태그 위치가 다른 경우 사용해야 합니다. |
| 필수 항목 | boolean | optional - default value = "false" |
| impliedDecimalSeparator | boolean | Camel 2.11: 선택 사항 - 기본값 = "false" - 지정된 위치에 임차된 소수점이 있는지 여부를 나타냅니다. |
케이스 1 : 태그
이 매개변수는 메시지에 있는 필드의 키를 나타냅니다.
FIX 메시지 - 태그
@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1) // Client reference
private String Account;
@KeyValuePairField(tag = 11) // Order reference
private String ClOrdId;
@KeyValuePairField(tag = 22) // Fund ID type (Sedol, ISIN, ...)
private String IDSource;
@KeyValuePairField(tag = 48) // Fund code
private String SecurityId;
@KeyValuePairField(tag = 54) // Movement type ( 1 = Buy, 2 = sell)
private String Side;
@KeyValuePairField(tag = 58) // Free text
private String Text;
}
케이스 2 : 출력의 다른 위치
FIX 메시지에 적용할 태그/키가 미리 정의된 순서에 따라 정렬되어야 하는 경우 주석 @KeyValuePairField의 'position' 특성을 사용합니다.
FIX 메시지 - 태그 - 정렬
@Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1", isOrdered = true)
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1, position = 1) // Client reference
private String account;
@KeyValuePairField(tag = 11, position = 3) // Order reference
private String clOrdId;
}
48.9. 7. 섹션 링크 복사링크가 클립보드에 복사되었습니다!
고정 길이 레코드의 FIX 메시지에서 정보 : 헤더, 본문 및 섹션을 나타내는 다른 섹션을 포함하는 것이 일반적입니다. 주석 @Section의 목적은 모델의 어떤 클래스가 헤더를 나타내는지 나타내는 바인딩(= 섹션 1), 본문(= 섹션 2) 및 바닥글(= 섹션 3)을 알리는 것입니다.
이 주석에 대해 하나의 속성/ 매개변수만 있습니다.
| 주석 이름 | 레코드 유형 | level |
|---|---|---|
| 섹션 | FIX | class |
| 매개변수 이름 | type | 정보 |
|---|---|---|
| 숫자 | int | 섹션 위치를 식별하는 숫자 |
케이스 1 : 섹션
header 섹션의 정의
FIX message - 섹션 - 헤더
@Section(number = 1)
public class Header {
@KeyValuePairField(tag = 8, position = 1) // Message Header
private String beginString;
@KeyValuePairField(tag = 9, position = 2) // Checksum
private int bodyLength;
}
본문 섹션에 대한 정의
FIX message - 섹션 - 본문
@Section(number = 2)
@Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1", isOrdered = true)
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1, position = 1) // Client reference
private String account;
@KeyValuePairField(tag = 11, position = 3) // Order reference
private String clOrdId;
바닥글 섹션에 대한 정의
수정 메시지 - 섹션 - Footer
@Section(number = 3)
public class Trailer {
@KeyValuePairField(tag = 10, position = 1)
// CheckSum
private int checkSum;
public int getCheckSum() {
return checkSum;
}
48.10. 8. OneToMany 링크 복사링크가 클립보드에 복사되었습니다!
주석 @OneToMany의 용도는 List<? > 필드에서 POJO 클래스를 정의하거나 반복적인 그룹을 포함하는 레코드에서 작업할 수 있도록 하는 것입니다.
*Restrictions OneToMany*
여러 수준의 계층 구조에서 정의된 반복을 처리할 수 없습니다.Easily, the one to bindy does not allow to handle repetitions defined on several levels of the hierarchy.
다음 경우 관련 OneToMany ONLY WORKS:
- 반복적인 그룹(= 태그/키 그룹)이 포함된 FIX 메시지 읽기
- 반복적인 데이터로 CSV 생성
| 주석 이름 | 레코드 유형 | level |
|---|---|---|
| OneToMany | all | 속성 |
| 매개변수 이름 | type | 정보 |
|---|---|---|
| mappedTo | string | 선택 사항 - 문자열 - 클래스의 Type에 연결된 클래스 이름 |
케이스 1 : 반복적인 데이터로 CSV 생성
다음은 우리가 원하는 CSV 출력입니다.
Claus,Ibsen,Camel in Action 1,2010,35
Claus,Ibsen,Camel in Action 2,2012,35
Claus,Ibsen,Camel in Action 3,2013,35
Claus,Ibsen,Camel in Action 4,2014,35
Remark : 반복적인 데이터는 첫 번째, 마지막 이름과 나이는 일반적인 책과 게시 날짜의 제목과 관련이 있습니다.
또한 이 문제를 모델링하는 데 사용되는 클래스입니다. Author 클래스에는 도서 목록이 포함되어 있습니다.
반복적인 데이터로 CSV 생성
@CsvRecord(separator=",")
public class Author {
@DataField(pos = 1)
private String firstName;
@DataField(pos = 2)
private String lastName;
@OneToMany
private List<Book> books;
@DataField(pos = 5)
private String Age;
}
public class Book {
@DataField(pos = 3)
private String title;
@DataField(pos = 4)
private String year;
}
매우 간단한 것은 아닙니다!
케이스 2 : 태그/키 그룹이 포함된 FIX 메시지 읽기
다음은 우리 모델에서 처리하려는 메시지입니다.Here is the message that we want to process in our model:
8=FIX 4.19=2034=135=049=INVMGR56=BRKR
1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test
22=448=BE000124567854=1
22=548=BE000987654354=2
22=648=BE000999999954=3
10=220
태그(2, 48 및 54)가 반복됨
그리고 코드
태그/키 그룹이 포함된 FIX 메시지 읽기
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1) // Client reference
private String account;
@KeyValuePairField(tag = 11) // Order reference
private String clOrdId;
@KeyValuePairField(tag = 58) // Free text
private String text;
@OneToMany(mappedTo = "org.apache.camel.dataformat.bindy.model.fix.complex.onetomany.Security")
List<Security> securities;
}
public class Security {
@KeyValuePairField(tag = 22) // Fund ID type (Sedol, ISIN, ...)
private String idSource;
@KeyValuePairField(tag = 48) // Fund code
private String securityCode;
@KeyValuePairField(tag = 54) // Movement type ( 1 = Buy, 2 = sell)
private String side;
}
48.11. 9. BindyConverter 링크 복사링크가 클립보드에 복사되었습니다!
주석 @BindyConverter의 목적은 필드 수준에서 사용할 변환기를 정의합니다. 제공된 클래스는 Format 인터페이스를 구현해야 합니다.
@FixedLengthRecord(length = 10, paddingChar = ' ')
public static class DataModel {
@DataField(pos = 1, length = 10, trim = true)
@BindyConverter(CustomConverter.class)
public String field1;
}
public static class CustomConverter implements Format<String> {
@Override
public String format(String object) throws Exception {
return (new StringBuilder(object)).reverse().toString();
}
@Override
public String parse(String string) throws Exception {
return (new StringBuilder(string)).reverse().toString();
}
}
48.12. 10. FormatFactories 링크 복사링크가 클립보드에 복사되었습니다!
주석 @FormatFactories의 목적은 레코드 수준에서 변환기 집합을 정의하는 것입니다. 제공된 클래스는 FormatFactoryInterface 인터페이스를 구현해야 합니다.
@CsvRecord(separator = ",")
@FormatFactories({OrderNumberFormatFactory.class})
public static class Order {
@DataField(pos = 1)
private OrderNumber orderNr;
@DataField(pos = 2)
private String firstName;
}
public static class OrderNumber {
private int orderNr;
public static OrderNumber ofString(String orderNumber) {
OrderNumber result = new OrderNumber();
result.orderNr = Integer.valueOf(orderNumber);
return result;
}
}
public static class OrderNumberFormatFactory extends AbstractFormatFactory {
{
supportedClasses.add(OrderNumber.class);
}
@Override
public Format<?> build(FormattingOptions formattingOptions) {
return new Format<OrderNumber>() {
@Override
public String format(OrderNumber object) throws Exception {
return String.valueOf(object.orderNr);
}
@Override
public OrderNumber parse(String string) throws Exception {
return OrderNumber.ofString(string);
}
};
}
}
48.13. 지원되는 데이터 유형 링크 복사링크가 클립보드에 복사되었습니다!
DefaultFormatFactory는 제공된 FormattingOptions를 기반으로 인터페이스 FormatFactoryInterface의 인스턴스를 반환하여 다음 데이터 형식을 사용할 수 있습니다.
- BigDecimal
- BigInteger
- 부울
- byte
- 문자
- 날짜
- double
- enums
- float
- 정수
- LocalDate ( 2.18.0 이후의java 8)
- LocalDateTime ( 2.18.0 이후의java 8)
- localtime ( 2.18.0 이후java 8)
- long
- short
- 문자열
DefaultFormatFactory는 사용 중인 레지스트리에 FactoryRegistry 인스턴스를 제공하여 재정의할 수 있습니다(예: Spring 또는 JNDI).
48.14. Java DSL 사용 링크 복사링크가 클립보드에 복사되었습니다!
다음 단계는 이 레코드 유형과 연결된 DataFormat bindy 클래스를 인스턴스화하고 Java 패키지 이름을 매개 변수로 제공하는 것입니다.
예를 들어 다음에서는 BindyCsvDataFormat 클래스를 사용하며 CSV 레코드 유형과 연결된 클래스에 해당하는 클래스를 com.acme.model 패키지 이름으로 구성하여 이 패키지에 구성된 모델 개체를 초기화합니다.For example, the following uses the class BindyCsvDataFormat (who correspond to the class associated with the CSV record type) which is configured with com.acme.model package name to initialize the model objects configured in this package.
// Camel 2.15 or older (configure by package name)
DataFormat bindy = new BindyCsvDataFormat("com.acme.model");
// Camel 2.16 onwards (configure by class name)
DataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);
48.14.1. 로케일 설정 링크 복사링크가 클립보드에 복사되었습니다!
Bindy는 다음과 같이 dataformat의 로캘 구성을 지원합니다.
// Camel 2.15 or older (configure by package name)
BindyCsvDataFormat bindy = new BindyCsvDataFormat("com.acme.model");
// Camel 2.16 onwards (configure by class name)
BindyCsvDataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);
bindy.setLocale("us");
또는 플랫폼 기본 로케일을 사용하려면 로케일 이름으로 "default"를 사용합니다. Camel 2.14/2.13.3/2.12.5가 필요합니다.
// Camel 2.15 or older (configure by package name)
BindyCsvDataFormat bindy = new BindyCsvDataFormat("com.acme.model");
// Camel 2.16 onwards (configure by class name)
BindyCsvDataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);
bindy.setLocale("default");
이전 릴리스의 경우 다음과 같이 Java 코드를 사용하여 설정할 수 있습니다.
// Camel 2.15 or older (configure by package name)
BindyCsvDataFormat bindy = new BindyCsvDataFormat("com.acme.model");
// Camel 2.16 onwards (configure by class name)
BindyCsvDataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);
bindy.setLocale(Locale.getDefault().getISO3Country());
48.14.2. Unmarshaling 링크 복사링크가 클립보드에 복사되었습니다!
from("file://inbox")
.unmarshal(bindy)
.to("direct:handleOrders");
또는 Spring XML 파일과 같이 레지스트리에 정의된 다음 데이터 형식에 대해 명명된 참조를 사용할 수 있습니다.
from("file://inbox")
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
Camel 경로는 inbox 디렉터리의 파일 선택, unmarshall CSV 레코드를 모델 오브젝트 컬렉션으로 선택하고 컬렉션
을 'handleOrders'에서 참조하는 경로로 보냅니다.
반환된 컬렉션은 Map 오브젝트의 목록입니다. 목록의 각 맵에는 CSV의 각 줄에서 마샬링된 모델 개체가 포함되어 있습니다. 이 문제의 원인은 각 행이 두 개 이상의 오브젝트에 해당할 수 있기 때문입니다. 이는 단순히 한 줄에 하나의 개체가 반환될 것으로 예상하면 혼동될 수 있습니다.
각 오브젝트는 해당 클래스 이름을 사용하여 검색할 수 있습니다.
List<Map<String, Object>> unmarshaledModels = (List<Map<String, Object>>) exchange.getIn().getBody();
int modelCount = 0;
for (Map<String, Object> model : unmarshaledModels) {
for (String className : model.keySet()) {
Object obj = model.get(className);
LOG.info("Count : " + modelCount + ", " + obj.toString());
}
modelCount++;
}
LOG.info("Total CSV records received by the csv bean : " + modelCount);
경로의 처리를 위해 이 맵에서 단일 Order 오브젝트를 추출하려는 경우 다음 내용에 따라 Splitter와 Processor의 조합을 사용할 수 있습니다.
from("file://inbox")
.unmarshal(bindy)
.split(body())
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
Message in = exchange.getIn();
Map<String, Object> modelMap = (Map<String, Object>) in.getBody();
in.setBody(modelMap.get(Order.class.getCanonicalName()));
}
})
.to("direct:handleSingleOrder")
.end();
Bindy는 unmarshalling을 위해 수신한 입력 스트림의 문자 세트 변환을 수행하기 위해 Exchange 인터페이스에서 정의된 사용자 이름 또는 CHARSET_NAME 헤더를 사용합니다. 일부 생산자(예: file-endpoint)에서는 문자 집합을 정의할 수 있습니다. 이 프로듀서의 변환은 이미 수행 할 수 있습니다. 때로는 unmarshal으로 보내기 전에 교환에서 이 속성 또는 헤더를 제거해야 합니다. 이를 제거하지 않으면 변환이 두 번 수행되어 원하지 않는 결과가 발생할 수 있습니다.
from("file://inbox?charset=Cp922")
.removeProperty(Exchange.CHARSET_NAME)
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
48.14.3. 마샬링 링크 복사링크가 클립보드에 복사되었습니다!
모델 오브젝트 컬렉션에서 CSV 레코드를 생성하려면 다음 경로를 생성합니다.
from("direct:handleOrders")
.marshal(bindy)
.to("file://outbox")
48.15. Spring XML 사용 링크 복사링크가 클립보드에 복사되었습니다!
이것은 camel-bindy에 사용할 경로를 선언하기 위해 선호하는 DSL 언어로 Spring을 사용하기 쉽습니다. 다음 예제에서는 파일에서 첫 번째 레코드를 선택하는 두 개의 경로를 보여줍니다. 즉, 콘텐츠를 압축 해제하고 해당 모델에 바인딩합니다. 그러면 그 결과가 pojo로 보내(특별하지 않음) 큐에 배치합니다.
두 번째 경로는 큐에서 pojos를 추출하고 콘텐츠를 마샬링하여 csv 레코드가 포함된 파일을 생성합니다. 위의 예는 Camel 2.16 이상을 사용하는 것입니다.
spring dsl
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<!-- Queuing engine - ActiveMq - work locally in mode virtual memory -->
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="brokerURL" value="vm://localhost:61616"/>
</bean>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<dataFormats>
<bindy id="bindyDataformat" type="Csv" classType="org.apache.camel.bindy.model.Order"/>
</dataFormats>
<route>
<from uri="file://src/data/csv/?noop=true" />
<unmarshal ref="bindyDataformat" />
<to uri="bean:csv" />
<to uri="activemq:queue:in" />
</route>
<route>
<from uri="activemq:queue:in" />
<marshal ref="bindyDataformat" />
<to uri="file://src/data/csv/out/" />
</route>
</camelContext>
</beans>
모델 클래스가 serializable을 구현했는지 확인하십시오. 그렇지 않으면 큐 관리자가 오류를 발생시킵니다.
48.16. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
camel 경로에서 Bindy를 사용하려면 이 데이터 형식을 구현하는 camel-bindy 에 종속성을 추가해야 합니다.
maven을 사용하는 경우 pom.xml에 다음을 추가하면 최신 및 가장 큰 릴리스의 버전 번호를 대체합니다(최신 버전의 다운로드 페이지 참조).
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-bindy</artifactId>
<version>x.x.x</version>
</dependency>
49장. Camel에서 OSGi 청사진 사용 링크 복사링크가 클립보드에 복사되었습니다!
블루프린트용 사용자 지정 XML 네임스페이스가 생성되어 우수한 XML 전화 기능을 활용할 수 있습니다. Blueprint 사용자 지정 네임스페이스가 아직 표준화되지 않은 경우 이 네임스페이스는 Apache Karaf에서 사용하는 Apache Aries Blueprint 구현에서만 사용할 수 있습니다.
49.1. 개요 링크 복사링크가 클립보드에 복사되었습니다!
XML 스키마는 주로 Spring용 항목과 동일하므로 Spring XML을 참조하는 설명서 전체의 모든 xml 스니펫도 Blueprint 경로에 적용됩니다.
청사진을 사용하는 매우 간단한 경로 정의는 다음과 같습니다.
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route>
<from uri="timer:test" />
<to uri="log:test" />
</route>
</camelContext>
</blueprint>
이 시점에서 지원되는 xml 요소( Spring xml 구문 비교)에 대한 몇 가지 제한 사항이 있습니다.
- beanPostProcessor는 Spring에만 해당되며 허용되지 않습니다.
그러나 OSGi enviroment에 애플리케이션을 배포할 때 청사진을 사용하면 다음과 같은 몇 가지 이점이 있습니다.
- 새로운 camel 버전으로 업그레이드할 때 번들에서 가져오는 camel 패키지를 기반으로 올바른 버전이 선택되므로 네임스페이스를 변경할 필요가 없습니다.
- 사용자 정의 네임스페이스 및 번들과 관련하여 시작 순서 문제가 없음
- Blueprint 속성 자리 표시자를 사용할 수 있습니다.
49.2. camel-blueprint 사용 링크 복사링크가 클립보드에 복사되었습니다!
OSGi의 camel-blueprint를 활용하려면 Aries Blueprint 번들과 camel-blueprint 번들뿐만 아니라 camel-core 및 해당 종속 항목만 있으면 됩니다.
Karaf를 사용하는 경우 모든 필수 번들을 설치하는 camel-blueprint라는 기능을 사용할 수 있습니다.
50장. Bonita 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.19에서 사용 가능
원격 Bonita BPM 프로세스 엔진과 통신하는 데 사용됩니다.
50.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
bonita://[operation]?[options]
여기서 작업 은 Bonita에서 수행해야 하는 특정 작업입니다.
50.2. 일반 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Bonita 구성 요소에는 옵션이 없습니다.
Bonita 엔드포인트는 URI 구문을 사용하여 구성됩니다.
bonita:operation
다음 경로 및 쿼리 매개변수를 사용합니다.
50.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 작업 | 사용하는 데 필요한 작업 | BonitaOperation |
50.2.2. 쿼리 매개변수(9 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 호스트 이름 (consumer) | Bonita 엔진이 실행되는 호스트 이름 | localhost | 문자열 |
| 포트 (소비자) | Bonita 엔진을 호스팅하는 서버 포트 | 8080 | 문자열 |
| ProcessName (consumer) | 작업에 관련된 프로세스의 이름입니다. | 문자열 | |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| 암호 (보안) | Bonita 엔진에 인증하기 위한 암호. | 문자열 | |
| 사용자 이름 (보안) | Bonita 엔진에 인증할 사용자 이름입니다. | 문자열 |
50.3. 본문 콘텐츠 링크 복사링크가 클립보드에 복사되었습니다!
startCase 작업의 경우 입력 변수가 본문 메시지에서 검색됩니다. Map<String,Serializable>을 포함해야 합니다.
50.4. 예제 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 Bonita에서 새 케이스를 시작합니다.
from("direct:start").to("bonita:startCase?hostname=localhost&port=8080&processName=TestProcess&username=install&password=install")
50.5. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Camel 경로에서 Bonita를 사용하려면 구성 요소를 구현하는 camel-bonita 에 종속성을 추가해야 합니다.
Maven을 사용하는 경우 pom.xml에 다음을 추가하여 최신 버전과 가장 큰 릴리스의 버전 번호를 대체합니다(최신 버전의 다운로드 페이지 참조).
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-bonita</artifactId>
<version>x.x.x</version>
</dependency>
51장. boon DataFormat 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.16에서 사용 가능
boon은 Boon JSON 마샬링 라이브러리를 사용하여 JSON 페이로드를 Java 객체로 분리하거나 Java 개체를 JSON 페이로드로 마샬링하는 데이터 형식입니다. boon은 현재 사용되는 다른 일반 파서보다 간단하고 빠 른 파서가되는 것을 목표로 합니다.
51.1. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Boon dataformat은 아래 나열된 3가지 옵션을 지원합니다.
| 이름 | 기본값 | Java Type | 설명 |
|---|---|---|---|
| unmarshalTypeName |
| armshalling할 때 사용할 Java 유형의 클래스 이름 | |
| useList |
|
| 맵 목록 또는 Pojo 목록에 대한 총합을 해제하려면 다음을 수행합니다. |
| contentTypeHeader |
|
| 데이터 형식이 데이터 형식에서 수행할 수 있는 경우 데이터 형식의 유형으로 Content-Type 헤더를 설정해야 하는지 여부입니다. 예를 들어 데이터 형식을 XML로 마샬링하거나, JSon으로 마샬링되는 데이터 형식에 대한 application/json 등이 있습니다. |
51.2. Java DSL 사용 링크 복사링크가 클립보드에 복사되었습니다!
DataFormat boonDataFormat = new BoonDataFormat("com.acme.model.Person");
from("activemq:My.Queue")
.unmarshal(boonDataFormat)
.to("mqseries:Another.Queue");
51.3. Blueprint XML 사용 링크 복사링크가 클립보드에 복사되었습니다!
<bean id="boonDataFormat" class="org.apache.camel.component.boon.BoonDataFormat">
<argument value="com.acme.model.Person"/>
</bean>
<camelContext id="camel" xmlns="http://camel.apache.org/schema/blueprint">
<route>
<from uri="activemq:My.Queue"/>
<unmarshal ref="boonDataFormat"/>
<to uri="mqseries:Another.Queue"/>
</route>
</camelContext>
51.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-boon</artifactId>
<version>x.x.x</version>
</dependency>
52장. 박스 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.14로 사용 가능
Box 구성 요소를 사용하면 https://github.com/box/box-java-sdk 을 사용하여 액세스할 수 있는 모든 Box.com API에 액세스할 수 있습니다. 이를 통해 파일을 업로드하고 다운로드하고 폴더를 생성, 편집 및 관리하는 메시지를 생성할 수 있습니다. 또한 사용자 계정 업데이트 및 엔터프라이즈 계정 변경 등을 폴링할 수 있는 API도 지원합니다.
box.com은 모든 클라이언트 애플리케이션 인증에 OAuth2.0을 사용해야 합니다. 계정에 camel-box를 사용하려면 Box.com 내에 새 애플리케이션을 https://developer.box.com. Box 애플리케이션의 클라이언트 ID 및 시크릿을 사용하면 현재 사용자가 필요한 Box API에 액세스할 수 있습니다. 사용자 액세스 토큰은 최종 사용자에 대한 API에서 생성하고 관리합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-box</artifactId>
<version>${camel-version}</version>
</dependency>
52.1. 연결 인증 유형 링크 복사링크가 클립보드에 복사되었습니다!
Box 구성 요소는 인증된 세 가지 유형의 인증된 연결을 지원합니다.
52.1.1. 표준 인증 링크 복사링크가 클립보드에 복사되었습니다!
표준 인증 은 OAuth 2.0 3 계층 인증 프로세스 를 사용하여 Box.com으로 연결을 인증합니다. 이 유형의 인증을 사용하면 Box 관리 사용자와 외부 사용자 가 Box 구성 요소를 통해 Box 콘텐츠에 액세스, 편집 및 저장할 수 있습니다.
52.1.2. App Enterprise Authentication 링크 복사링크가 클립보드에 복사되었습니다!
App Enterprise Authentication 은 JSON Web Tokens(JWT)와 OAuth 2.0 을 사용하여 Box Application 의 서비스 계정 으로 연결을 인증합니다. 이 유형의 인증을 사용하면 서비스 계정이 Box 구성 요소를 통해 Box Application 의 Box 콘텐츠에 액세스, 편집 및 저장할 수 있습니다.
52.1.3. 앱 사용자 인증 링크 복사링크가 클립보드에 복사되었습니다!
App User Authentication 은 JSON Web Tokens(JWT)와 OAuth 2.0 을 사용하여 Box Application 의 App User 로 연결을 인증합니다. 이러한 유형의 인증을 통해 앱 사용자는 Box 구성 요소를 통해 Box Application 에 액세스, 편집 및 저장할 수 있습니다.
52.2. 박스 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Box 구성 요소는 아래 나열된 두 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (일반) | 공유 구성을 사용하려면To use the shared configuration | BoxConfiguration | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Box 엔드포인트는 URI 구문을 사용하여 구성됩니다.
box:apiName/methodName
다음 경로 및 쿼리 매개변수를 사용합니다.
52.2.1. 경로 매개 변수(2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| apiName | 어 떤 종류의 작업을 수행해야 합니까? | BoxApiName | |
| methodName | 선택한 작업에 사용할 하위 작업 필요 | 문자열 |
52.2.2. 쿼리 매개변수 (20 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| clientID( 일반) | box 애플리케이션 클라이언트 ID | 문자열 | |
| enterpriseId (공용) | 앱 엔터프라이즈에 사용할 엔터프라이즈 ID입니다. | 문자열 | |
| InBody (일반) | 교환 In Body에서 전달할 매개 변수의 이름을 설정합니다. | 문자열 | |
| userid (common) | 앱 사용자에 사용할 사용자 ID입니다. | 문자열 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| httpParams (고급) | 프록시 호스트와 같은 설정에 대한 사용자 정의 HTTP 매개변수 | map | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| accessTokenCache (security) | 액세스 토큰을 저장하고 검색하는 데 사용되는 사용자 정의 액세스 토큰 캐시입니다. | IAccessTokenCache | |
| clientSecret (보안) | 박스 애플리케이션 클라이언트 시크릿 | 문자열 | |
| encryptionAlgorithm (보안) | JWT의 암호화 알고리즘 유형입니다. 지원되는 알고리즘: RSA_SHA_256 RSA_SHA_384 RSA_SHA_512 | RSA_SHA_256 | EncryptionAlgorithm |
| maxCacheEntries (보안) | 캐시의 최대 액세스 토큰 수입니다. | 100 | int |
| authenticationType (authentication) | 연결의 인증 유형입니다. 인증 유형: STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged) SERVER_AUTHENTICATION - OAuth 2.0 with JSON Web Tokens | APP_USER_AUTHENTICATION | 문자열 |
| privateKeyFile (security) | JWT 서명을 생성하는 개인 키입니다. | 문자열 | |
| privateKeyPassword (보안) | 개인 키의 암호입니다. | 문자열 | |
| publicKeyId (security) | JWT 서명을 검증하기 위한 공개 키의 ID입니다. | 문자열 | |
| sslContextParameters (security) | SSLContextParameters를 사용하여 보안을 구성하려면 다음을 수행합니다. | SSLContextParameters | |
| 사용자 이름 (보안) | 사용자 이름, 제공되어야 합니다. | 문자열 | |
| userPassword (보안) | authSecureStorage가 설정되지 않은 경우 박스 사용자 비밀번호를 제공하거나 첫 번째 통화 시 null을 반환해야 합니다. | 문자열 |
52.3. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
box:apiName/methodName
apiName은 다음 중 하나일 수 있습니다.
- 협업
- 주석
- event-logs
- 파일
- 폴더
- groups
- events
- search
- tasks
- 사용자
52.4. 생산자 끝점: 링크 복사링크가 클립보드에 복사되었습니다!
생산자 엔드포인트는 엔드포인트 접두사 뒤에 다음에 설명된 끝점 이름 및 관련 옵션을 사용할 수 있습니다. 일부 엔드포인트에서는 단축 별칭을 사용할 수 있습니다. 엔드포인트 URI에는 접두사가 포함되어야 합니다.
필수가 아닌 엔드포인트 옵션은 [] 로 표시됩니다. 끝점에 대한 필수 옵션이 없는 경우 [] 옵션 세트 중 하나를 제공해야 합니다. 생산자 엔드포인트는 Camel Exchange In 메시지에 포함된 엔드포인트 옵션의 이름을 포함해야 하는 특수 옵션 inBody 를 사용할 수도 있습니다.
끝점 URI에서 또는 메시지 헤더에서 동적으로 끝점 옵션을 제공할 수 있습니다. 메시지 헤더 이름은 CamelBox.<option> 형식이어야 합니다. inBody 옵션은 메시지 헤더를 덮어씁니다. 즉 inBody=option 의 endpoint 옵션은 CamelBox.option 헤더를 재정의합니다.
끝점 URI 또는 메시지 헤더에 있는 옵션 defaultRequest에 대해 값이 제공되지 않으면 null 로 간주됩니다. null 값은 다른 옵션이 일치하는 엔드 포인트를 충족하지 않는 경우에만 사용됩니다.
Box API 오류가 발생하는 경우 끝점에서 com.box.sdk.BoxAPIException 파생 예외를 사용하여 RuntimeCamelException을 throw합니다.
52.4.1. 끝점 접두사 협업 링크 복사링크가 클립보드에 복사되었습니다!
박스 협업에 대한 자세한 내용은 https://developer.box.com/reference#collaboration-object 에서 참조하십시오. 다음과 같이 접두사 협업 을 사용하여 다음 끝점을 호출할 수 있습니다.
box:collaborations/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| addFolderCollaboration | add | folderId, collaborator, role | com.box.sdk.BoxCollaboration |
| addFolderCollaborationByEmail | addByEmail | folderId, email, role | com.box.sdk.BoxCollaboration |
| deleteCollaboration | delete | collaborationId | |
| getFolderCollaborations | 협업 | folderId | java.util.Collection |
| getPendingCollaborations | pendingCollaborations | java.util.Collection | |
| getCollaborationInfo | info | collaborationId | com.box.sdk.BoxCollaboration.Info |
| updateCollaborationInfo | updateInfo | collaborationId, info | com.box.sdk.BoxCollaboration |
협업을 위한 URI 옵션
| 이름 | 유형 |
|---|---|
| collaborationId | 문자열 |
| 협력자 | com.box.sdk.BoxCollaborator |
| role | com.box.sdk.BoxCollaboration.Role |
| folderId | 문자열 |
| | 문자열 |
| info | com.box.sdk.BoxCollaboration.Info |
52.4.2. 끝점 접두사 주석 링크 복사링크가 클립보드에 복사되었습니다!
Box 주석에 대한 자세한 내용은 https://developer.box.com/reference#comment-object 을 참조하십시오. 다음과 같이 접두사 주석 을 사용하여 다음 끝점을 호출할 수 있습니다.
box:comments/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| addFileComment | add | fileId, message | com.box.sdk.BoxFile |
| changeCommentMessage | updateMessage | commentId, message | com.box.sdk.BoxComment |
| deleteComment | delete | commentId | |
| getCommentInfo | info | commentId | com.box.sdk.BoxComment.Info |
| getFileComments | 주석 | fileId | java.util.List |
| replyToComment | 응답 | commentId, message | com.box.sdk.BoxComment |
협업을 위한 URI 옵션
| 이름 | 유형 |
|---|---|
| commentId | 문자열 |
| fileId | 문자열 |
| message | 문자열 |
52.4.3. 끝점 접두사 events-logs 링크 복사링크가 클립보드에 복사되었습니다!
Box 이벤트 로그에 대한 자세한 내용은 https://developer.box.com/reference#events 을 참조하십시오. 다음과 같이 접두사 이벤트 를 사용하여 다음 끝점을 호출할 수 있습니다.
box:event-logs/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| getEnterpriseEvents | events | 위치, 후, 전, [타입] | java.util.List |
이벤트로그에 대한 URI 옵션
| 이름 | 유형 |
|---|---|
| 위치 | 문자열 |
| after | 날짜 |
| before | 날짜 |
| types | com.box.sdk.BoxEvent.Types[] |
52.4.4. 끝점 접두사 파일 링크 복사링크가 클립보드에 복사되었습니다!
박스 파일에 대한 자세한 내용은 https://developer.box.com/reference#file-object 에서 참조하십시오. 다음과 같이 접두사 파일 을 사용하여 다음 엔드포인트를 호출할 수 있습니다.
box:files/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| uploadFile | 업로드 | parentFolderId, content, fileName, [created], [modified], [size], [listener] | com.box.sdk.BoxFile |
| downloadFile | 다운로드 | fileId, output, [rangeStart], [rangeEnd], [listener] | java.io.OutputStream |
| copyFile | copy | fileId, destinationFolderId, [newName] | com.box.sdk.BoxFile |
| moveFile | move | fileId, destinationFolderId, [newName] | com.box.sdk.BoxFile |
| renameFile | rename | fileId, newFileName | com.box.sdk.BoxFile |
| createFileSharedLink | link | fileId, access, [unshareDate], [permissions] | com.box.sdk.BoxSharedLink |
| deleteFile | delete | fileId | |
| uploadNewFileVersion | uploadVersion | fileId, fileContent, [modified], [fileSize], [listener] | com.box.boxsdk.BoxFile |
| promoteFileVersion | promoteVersion | fileId, version | com.box.sdk.BoxFileVersion |
| getFileVersions | 버전 | fileId | java.util.Collection |
| downloadPreviousFileVersions | downloadVersion | fileId, version, output, [listener] | java.io.OutputStream |
| deleteFileVersion | deleteVersion | fileId, version | |
| getFileInfo | info | fileId, fields | com.box.sdk.BoxFile.Info |
| updateFileInfo | updateInfo | fileId, info | com.box.sdk.BoxFile |
| createFileMetadata | createMetadata | fileId, metadata, [typeName] | com.box.sdk.Metadata |
| getFileMetadata | metadata | fileId, [typeName] | com.box.sdk.Metadata |
| updateFileMetadata | updateMetadata | fileId, metadata | com.box.sdk.Metadata |
| deleteFileMetadata | deleteMetadata | fileId | |
| getDownloadUrl | url | fileId | java.net.URL |
| getPreviewLink | 미리 보기 | fileId | java.net.URL |
| getFileThumbnail | thumbnail | fileId, fileType, minWidth, minHeight, maxWidth, maxHeight | byte[] |
파일의 URI 옵션
| 이름 | 유형 |
|---|---|
| parentFolderId | 문자열 |
| 내용 | java.io.InputStream |
| fileName | 문자열 |
| created | 날짜 |
| modified | 날짜 |
| 크기 | long |
| listener | com.box.sdk.ProgressListener |
| 출력 | java.io.OutputStream |
| rangeStart | long |
| rangeEnd | long |
| outputStreams | java.io.OutputStream[] |
| destinationFolderId | 문자열 |
| newName | 문자열 |
| 필드 | string[] |
| info | com.box.sdk.BoxFile.Info |
| fileSize | long |
| version | 정수 |
| 액세스 | com.box.sdk.BoxSharedLink.Access |
| unshareDate | 날짜 |
| 권한 | com.box.sdk.BoxSharedLink.Permissions |
| fileType | com.box.sdk.BoxFile.ThumbnailFileType |
| minWidth | 정수 |
| minHeight | 정수 |
| maxWidth | 정수 |
| maxHeight | 정수 |
| metadata | com.box.sdk.Metadata |
| typeName | 문자열 |
52.4.5. 끝점 접두사 폴더 링크 복사링크가 클립보드에 복사되었습니다!
박스 폴더에 대한 자세한 내용은 https://developer.box.com/reference#folder-object 에서 참조하십시오. 다음과 같이 접두사 폴더 를 사용하여 다음 엔드포인트를 호출할 수 있습니다.
box:folders/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| getRootFolder | 루트 | com.box.sdk.BoxFolder | |
| createFolder | create | parentFolderId, folderName | com.box.sdk.BoxFolder |
| createFolder | create | parentFolderId, path | com.box.sdk.BoxFolder |
| copyFolder | copy | folderId, destinationfolderId, [newName] | com.box.sdk.BoxFolder |
| moveFolder | move | folderId, destinationFolderId, newName | com.box.sdk.BoxFolder |
| renameFolder | rename | folderId, newFolderName | com.box.sdk.BoxFolder |
| createFolderSharedLink | link | folderId, access, [unsharedDate], [permissions] | java.util.List |
| deleteFolder | delete | folderId | |
| getFolder | 폴더 | 경로 | com.box.sdk.BoxFolder |
| getFolderInfo | info | folderId, fields | com.box.sdk.BoxFolder.Info |
| getFolderItems | items | folderId, offset, limit, fields | com.box.sdk.BoxFolder |
| updateFolderInfo | updateInfo | folderId, info | com.box.sdk.BoxFolder |
폴더에 대한 URI 옵션
| 이름 | 유형 |
|---|---|
| 경로 | string[] |
| folderId | 문자열 |
| offset | long |
| 제한 | long |
| 필드 | string[] |
| parentFolderId | 문자열 |
| folderName | 문자열 |
| destinationFolderId | 문자열 |
| newName | 문자열 |
| newFolderName | 문자열 |
| info | 문자열 |
| 액세스 | com.box.sdk.BoxSharedLink.Access |
| unshareDate | 날짜 |
| 권한 | com.box.sdk.BoxSharedLink.Permissions |
52.4.6. 끝점 접두사 그룹 링크 복사링크가 클립보드에 복사되었습니다!
박스 그룹에 대한 자세한 내용은 https://developer.box.com/reference#group-object 에서 참조하십시오. 다음과 같이 접두사 그룹 을 사용하여 다음 끝점을 호출할 수 있습니다.
box:groups/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| createGroup | create | name, [provenance, externalSyncIdentifier, description, invitabilityLevel, memberViewabilityLevel] | com.box.sdk.BoxGroup |
| addGroupMembership | createMembership | groupId, userId, role | com.box.sdk.BoxGroupMembership |
| deleteGroup | delete | groupId | |
| getAllGroups | groups | java.util.Collection | |
| getGroupInfo | info | groupId | com.box.sdk.BoxGroup.Info |
| updateGroupInfo | updateInfo | groupId, groupInfo | com.box.sdk.BoxGroup |
| addGroupMembership | addMembership | groupId, userId, role | com.box.sdk.BoxGroupMembership |
| deleteGroupMembership | deleteMembership | groupMembershipId | |
| getGroupMemberships | memberships | groupId | java.uti.Collection |
| getGroupMembershipInfo | membershipInfo | groupMembershipId | com.box.sdk.BoxGroup.Info |
| updateGroupMembershipInfo | updateMembershipInfo | groupMembershipId, info | com.box.sdk.BoxGroupMembership |
그룹의 URI 옵션
| 이름 | 유형 |
|---|---|
| name | 문자열 |
| groupId | 문자열 |
| userId | 문자열 |
| role | com.box.sdk.BoxGroupMembership.Role |
| groupMembershipId | 문자열 |
| info | com.box.sdk.BoxGroupMembership.Info |
52.4.7. 끝점 접두사 검색 링크 복사링크가 클립보드에 복사되었습니다!
Box 검색 API에 대한 자세한 내용은 https://developer.box.com/reference#searching-for-content 에서 참조하십시오. 다음과 같이 접두사 검색 을 사용하여 다음 끝점을 호출할 수 있습니다.
box:search/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| searchFolder | search | folderId, query | java.util.Collection |
검색URI 옵션
| 이름 | 유형 |
|---|---|
| folderId | 문자열 |
| query | 문자열 |
52.4.8. 끝점 접두사 작업 링크 복사링크가 클립보드에 복사되었습니다!
박스 작업에 대한 자세한 내용은 https://developer.box.com/reference#task-object-1 에서 참조하십시오. 다음과 같이 접두사 작업 을 사용하여 다음 끝점을 호출할 수 있습니다.
box:tasks/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| addFileTask | add | fileId, action, dueAt, [message] | com.box.sdk.BoxUser |
| deleteTask | delete | taskId | |
| getFileTasks | tasks | fileId | java.util.List |
| getTaskInfo | info | taskId | com.box.sdk.BoxTask.Info |
| updateTaskInfo | updateInfo | taskId, info | com.box.sdk.BoxTask |
| addAssignmentToTask | addAssignment | taskId, assignTo | com.box.sdk.BoxTask |
| deleteTaskAssignment | deleteAssignment | taskAssignmentId | |
| getTaskAssignments | 할당 | taskId | java.util.List |
| getTaskAssignmentInfo | assignmentInfo | taskAssignmentId | com.box.sdk.BoxTaskAssignment.Info |
작업에대한 URI 옵션
| 이름 | 유형 |
|---|---|
| fileId | 문자열 |
| 작업 | com.box.sdk.BoxTask.Action |
| dueAt | 날짜 |
| message | 문자열 |
| taskId | 문자열 |
| info | com.box.sdk.BoxTask.Info |
| assignTo | com.box.sdk.BoxUser |
| taskAssignmentId | 문자열 |
52.4.9. 끝점 접두사 사용자 링크 복사링크가 클립보드에 복사되었습니다!
박스 사용자에 대한 자세한 내용은 https://developer.box.com/reference#user-object 에서 참조하십시오. 다음과 같이 접두사 사용자 를 사용하여 다음 끝점을 호출할 수 있습니다.
box:users/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| getCurrentUser | currentUser | com.box.sdk.BoxUser | |
| getAllEnterpriseOrExternalUsers | 사용자 | filterTerm, [fields] | com.box.sdk.BoxUser |
| createAppUser | create | name, [params] | com.box.sdk.BoxUser |
| createEnterpriseUser | create | login, name, [params] | com.box.sdk.BoxUser |
| deleteUser | delete | userId, notifyUser, force | |
| getUserEmailAlias | emailAlias | userId | com.box.sdk.BoxUser |
| deleteUserEmailAlias | deleteEmailAlias | userId, emailAliasId | java.util.List |
| getUserInfo | info | userId | com.box.sdk.BoxUser.Info |
| updateUserInfo | updateInfo | userId, info | com.box.sdk.BoxUser |
| moveFolderToUser | - | userId, sourceUserId | com.box.sdk.BoxFolder.Info |
사용자를 위한 URI 옵션
| 이름 | 유형 |
|---|---|
| defaultRequest | com.box.restclientv2.requestsbase.BoxDefaultRequestObject |
| emailAliasRequest | com.box.boxjavalibv2.requests.requestobjects.BoxEmailAliasRequestObject |
| emailId | 문자열 |
| filterTerm | 문자열 |
| folderId | 문자열 |
| simpleUserRequest | com.box.boxjavalibv2.requests.requestobjects.BoxSimpleUserRequestObject |
| userDeleteRequest | com.box.boxjavalibv2.requests.requestobjects.BoxUserDeleteRequestObject |
| userId | 문자열 |
| userRequest | com.box.boxjavalibv2.requests.requestobjects.BoxUserRequestObject |
| userUpdateLoginRequest | com.box.boxjavalibv2.requests.requestobjects.BoxUserUpdateLoginRequestObject |
52.5. 소비자 끝점: 링크 복사링크가 클립보드에 복사되었습니다!
박스 이벤트에 대한 자세한 내용은 https://developer.box.com/reference#events 에서 참조하십시오. 소비자 끝점은 다음에 예제와 같이 끝점 접두사 이벤트 만 사용할 수 있습니다.
box:events/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| events | [startingPosition] | com.box.sdk.BoxEvent |
이벤트에대한 URI 옵션
| 이름 | 유형 |
|---|---|
| startingPosition | long |
52.6. 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
CamelBox. 접두사를 사용하는 생산자 끝점의 메시지 헤더에 모든 옵션을 제공할 수 있습니다.
52.7. 메시지 본문 링크 복사링크가 클립보드에 복사되었습니다!
모든 결과 메시지 본문은 Box Java SDK에서 제공하는 오브젝트를 활용합니다. 생산자 끝점 매개 변수는 inBody 엔드포인트 매개 변수에서 들어오는 메시지 본문에 대한 옵션 이름을 지정할 수 있습니다.
52.8. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
다음 경로는 새 파일을 사용자의 루트 폴더에 업로드합니다.
from("file:...")
.to("box://files/upload/inBody=fileUploadRequest");
다음 경로는 업데이트를 위해 사용자 계정을 폴링합니다.
from("box://events/listen?startingPosition=-1")
.to("bean:blah");
다음 경로는 동적 헤더 옵션이 있는 생산자를 사용합니다. fileId 속성에는 Box 파일 ID가 있고 출력 속성에는 파일 콘텐츠의 출력 스트림이 있으므로 다음과 같이 CamelBox.fileId 헤더 및 CamelBox.output 헤더에 각각 할당됩니다.
from("direct:foo")
.setHeader("CamelBox.fileId", header("fileId"))
.setHeader("CamelBox.output", header("output"))
.to("box://files/download")
.to("file://...");
53장. Braintree 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.17로 사용 가능
Braintree 구성 요소는 Java SDK 를 통해 Braintree Payments 에 대한 액세스를 제공합니다.
모든 클라이언트 애플리케이션은 지불을 처리하기 위해 API 자격 증명이 필요합니다. 계정과 함께 camel-braintree를 사용하려면 새 Sandbox 또는 Production 계정을 만들어야 합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-braintree</artifactId>
<version>${camel-version}</version>
</dependency>
53.1. Braintree Options 링크 복사링크가 클립보드에 복사되었습니다!
Braintree 구성 요소는 아래 나열된 두 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (일반) | 공유 구성을 사용하려면To use the shared configuration | BraintreeConfiguration | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Braintree 끝점은 URI 구문을 사용하여 구성됩니다.
braintree:apiName/methodName
다음 경로 및 쿼리 매개변수를 사용합니다.
53.1.1. 경로 매개 변수(2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| apiName | 어 떤 종류의 작업을 수행해야 합니까? | BraintreeApiName | |
| methodName | 선택한 작업에 사용할 하위 작업 | 문자열 |
53.1.2. 쿼리 매개변수(14 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 환경 (공용) | SANDBOX 또는 ProductION 환경 | 문자열 | |
| InBody (일반) | 교환 In Body에서 전달할 매개 변수의 이름을 설정합니다. | 문자열 | |
| memberId (일반) | Braintree에서 제공하는 판매자 ID입니다. | 문자열 | |
| privateKey (common) | Braintree에서 제공하는 개인 키입니다. | 문자열 | |
| publickey (공용) | Braintree에서 제공하는 공개 키입니다. | 문자열 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| Access Token (advanced) | 사용자를 대신하여 트랜잭션을 처리하기 위해 판매자가 부여한 액세스 토큰입니다. 환경, 판매자 ID, 공개 키 및 개인 키 필드 대신 사용됩니다. | 문자열 | |
| httpReadTimeout (advanced) | http 호출에 대한 읽기 시간 제한을 설정합니다. | 정수 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| httpLogLevel (logging) | http 호출에 대한 로깅 수준을 설정하고 java.util.logging.Level을 참조하십시오. | 문자열 | |
| proxyHost (proxy) | 프록시 호스트 | 문자열 | |
| proxyPort (proxy) | 프록시 포트 | 정수 |
53.2. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
braintree://endpoint-prefix/endpoint?[options]
끝점 접두사는 다음 중 하나일 수 있습니다.
- addOn
- 주소
- clientToken
- creditCardverification
- customer
- discount
- merchantAccount
- paymentmethod
- paymentmethodNonce
- 계획
- settlementBatchSummary
- subscription
- Transaction
- webhookNotification
53.3. BraintreeComponent 링크 복사링크가 클립보드에 복사되었습니다!
Braintree Component는 아래 옵션을 사용하여 구성할 수 있습니다. 이러한 옵션은 org.apache.camel.component.braintree.BraintreeConfiguration 유형의 구성 요소의 빈 속성 구성을 사용하여 제공할 수 있습니다.
| 옵션 | 유형 | 설명 |
|---|---|---|
| 환경 | 문자열 | 요청의 대상 위치를 지정하는 값 - 샌드박스 또는 프로덕션 |
| merchantId | 문자열 | 게이트웨이 계정의 고유 식별자이며, 이는 판매자 계정 ID와 다릅니다. |
| publicKey | 문자열 | 사용자별 공용 식별자 |
| privateKey | 문자열 | 공유해서는 안 되는 사용자별 보안 식별자 - 저희와도 함께! |
| accessToken | 문자열 | Braintree Auth를 사용하여 판매자에게 부여된 토큰을 통해 다른 사용자를 대신하여 트랜잭션을 처리할 수 있습니다. 환경, 판매자Id, publicKey 및 privateKey 옵션 대신 사용됩니다. |
위의 모든 옵션은 Braintree Payments에서 제공합니다.
53.4. 생산자 끝점: 링크 복사링크가 클립보드에 복사되었습니다!
생산자 엔드포인트는 엔드포인트 접두사 뒤에 다음에 설명된 끝점 이름 및 관련 옵션을 사용할 수 있습니다. 일부 엔드포인트에서는 단축 별칭을 사용할 수 있습니다. 엔드포인트 URI에는 접두사가 포함되어야 합니다.
필수가 아닌 엔드포인트 옵션은 []로 표시됩니다. 끝점에 대한 필수 옵션이 없는 경우 [] 옵션 세트 중 하나를 제공해야 합니다. 생산자 엔드포인트는 Camel Exchange In 메시지에 포함된 엔드포인트 옵션의 이름을 포함해야 하는 특수 옵션 inBody 를 사용할 수도 있습니다.
끝점 URI에서 또는 메시지 헤더에서 동적으로 끝점 옵션을 제공할 수 있습니다. 메시지 헤더 이름은 CamelBraintree.<option> 형식이어야 합니다. inBody 옵션은 메시지 헤더를 덮어씁니다. 즉 inBody=option 의 endpoint 옵션은 CamelBraintree.option 헤더를 재정의합니다.
엔드 포인트 및 옵션에 대한 자세한 내용은 Braintree 참조 ( https://developers.braintreepayments.com/reference/overview참조하십시오.
53.4.1. 끝점 접두사 애드온 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 addOn 을 사용하여 다음 끝점을 호출할 수 있습니다.
braintree://addOn/endpoint
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| all |
|
| List<com.braintreegateway.Addon> |
53.4.2. 끝점 접두사 주소 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 주소 를 사용하여 다음 끝점을 호출할 수 있습니다.
braintree://address/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| create |
| customerId, request | com.braintreegateway.Result<com.braintreegateway.Address> |
| delete |
| customerId, id | com.braintreegateway.Result<com.braintreegateway.Address> |
| find |
| customerId, id | com.braintreegateway.Address |
| update |
| customerId, id, request | com.braintreegateway.Result<com.braintreegateway.Address> |
주소의 URI 옵션
| 이름 | 유형 |
|---|---|
| customerId | 문자열 |
| 요청 | com.braintreegateway.AddressRequest |
| id | 문자열 |
53.4.3. 끝점 접두사 clientToken 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 clientToken 을 사용하여 다음 끝점을 호출할 수 있습니다.
braintree://clientToken/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| generate |
| 요청 | 문자열 |
clientToken의 URI 옵션
| 이름 | 유형 |
|---|---|
| 요청 | com.braintreegateway.ClientTokenrequest |
53.4.4. 끝점 접두사 신용Verification 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 creditCardverification 을 사용하여 다음 엔드포인트를 호출할 수 있습니다.
braintree://creditCardVerification/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| find |
| id | com.braintreegateway.CreditCardVerification |
| search |
| query | com.braintreegateway.ResourceCollection<com.braintreegateway.CreditCardVerification> |
신용 카드Verification에대한 URI 옵션
| 이름 | 유형 |
|---|---|
| id | 문자열 |
| query | com.braintreegateway.CreditCardVerificationSearchRequest |
53.4.5. 끝점 접두사 고객 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 customer 를 사용하여 다음 엔드포인트를 호출할 수 있습니다.
braintree://customer/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| all |
|
|
|
| create |
| 요청 | com.braintreegateway.Result<com.braintreegateway.Customer> |
| delete |
| id | com.braintreegateway.Result<com.braintreegateway.Customer> |
| find |
| id | com.braintreegateway.Customer |
| search |
| query | com.braintreegateway.ResourceCollection<com.braintreegateway.Customer> |
| update |
| ID, 요청 | com.braintreegateway.Result<com.braintreegateway.Customer> |
고객을 위한 URI 옵션
| 이름 | 유형 |
|---|---|
| id | 문자열 |
| 요청 | com.braintreegateway.CustomerRequest |
| query | com.braintreegateway.CustomerSearchRequest |
53.4.6. 끝점 접두사 할인 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 할인을 사용하여 다음 끝점을 호출할 수 있습니다.
braintree://discount/endpoint
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| all |
|
| List<com.braintreegateway.Discount> |
+
+
53.4.7. 끝점 접두사manAccount 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사man Account를 사용하여 다음 엔드포인트를 호출할 수 있습니다.
braintree://merchantAccount/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| create |
| 요청 | com.braintreegateway.Result<com.braintreegateway.MerchantAccount> |
| createForCurrency | currencyRequest | com.braintreegateway.Result<com.braintreegateway.MerchantAccount> | |
| find |
| id | com.braintreegateway.MerchantAccount |
| update |
| ID, 요청 | com.braintreegateway.Result<com.braintreegateway.MerchantAccount> |
판매 자Account에 대한URI 옵션
| 이름 | 유형 |
|---|---|
| id | 문자열 |
| 요청 | com.braintreegateway.MerchantAccountRequest |
| currencyRequest | com.braintreegateway.MerchantAccountCreateForCurrencyRequest |
53.4.8. 끝점 접두사 paymentMethod 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 paymentMethod 를 사용하여 다음 엔드포인트를 호출할 수 있습니다.
braintree://paymentMethod/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| create |
| 요청 | com.braintreegateway.Result<com.braintreegateway.PaymentMethod> |
| delete |
| token, deleteRequest | com.braintreegateway.Result<com.braintreegateway.PaymentMethod> |
| find |
| 토큰 | com.braintreegateway.PaymentMethod |
| update |
| 토큰, 요청 | com.braintreegateway.Result<com.braintreegateway.PaymentMethod> |
paymentMethod의 URI 옵션
| 이름 | 유형 |
|---|---|
| 토큰 | 문자열 |
| 요청 | com.braintreegateway.PaymentMethodRequest |
| deleteRequest | com.braintreegateway.PaymentMethodDeleteRequest |
53.4.9. 끝점 접두사 paymentMethodNonce 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 paymentMethodNonce 를 사용하여 다음 엔드포인트를 호출할 수 있습니다.
braintree://paymentMethodNonce/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| create |
| paymentMethodToken | com.braintreegateway.Result<com.braintreegateway.PaymentMethodNonce> |
| find |
| paymentMethodNonce | com.braintreegateway.PaymentMethodNonce |
paymentMethodNonce에 대한 URI 옵션
| 이름 | 유형 |
|---|---|
| paymentMethodToken | 문자열 |
| paymentMethodNonce | 문자열 |
53.4.10. 끝점 접두사 계획 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 계획 을 사용하여 다음 끝점을 호출할 수 있습니다.
braintree://plan/endpoint
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| all |
|
| List<com.braintreegateway.Plan> |
53.4.11. 끝점 접두사 OrderBatchSummary 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 settleBatchSummary 를 사용하여 다음 엔드포인트를 호출할 수 있습니다.
braintree://settlementBatchSummary/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| generate |
| 요청 | com.braintreegateway.Result<com.braintreegateway.SettlementBatchSummary> |
Order BatchSummary에대한 URI 옵션
| 이름 | 유형 |
|---|---|
| settlementDate | 일정 |
| groupByCustomField | 문자열 |
53.4.12. 끝점 접두사 서브스크립션 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 서브스크립션 을 사용하여 다음 끝점을 호출할 수 있습니다.
braintree://subscription/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| cancel |
| id | com.braintreegateway.Result<com.braintreegateway.Subscription> |
| create |
| 요청 | com.braintreegateway.Result<com.braintreegateway.Subscription> |
| delete |
| customerId, id | com.braintreegateway.Result<com.braintreegateway.Subscription> |
| find |
| id | com.braintreegateway.Subscription |
| retryCharge |
| subscriptionId, amount | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| search |
| searchRequest | com.braintreegateway.ResourceCollection<com.braintreegateway.Subscription> |
| update |
| ID, 요청 | com.braintreegateway.Result<com.braintreegateway.Subscription> |
서브스크립션에대한 URI 옵션
| 이름 | 유형 |
|---|---|
| id | 문자열 |
| 요청 | com.braintreegateway.SubscriptionRequest |
| customerId | 문자열 |
| subscriptionId | 문자열 |
| 수량 | BigDecimal |
| searchRequest | com.braintreegateway.SubscriptionSearchRequest. |
53.4.13. 끝점 접두사 트랜잭션 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 트랜잭션 을 사용하여 다음 끝점을 호출할 수 있습니다.
braintree://transaction/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| cancelRelease |
| id | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| cloneTransaction |
| id, cloneRequest | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| 신용 |
| 요청 | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| find |
| id | com.braintreegateway.Transaction |
| holdInEscrow |
| id | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| releaseFromEscrow |
| id | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| 환불 |
| id, amount, refundRequest | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| 판매 |
| 요청 | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| search |
| query | com.braintreegateway.ResourceCollection<com.braintreegateway.Transaction> |
| submitForPartialSettlement |
| ID, 양 | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| submitForSettlement |
| ID, 양, 요청 | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| voidTransaction |
| id | com.braintreegateway.Result<com.braintreegateway.Transaction> |
트랜잭션URI 옵션
| 이름 | 유형 |
|---|---|
| id | 문자열 |
| 요청 | com.braintreegateway.TransactionCloneRequest |
| cloneRequest | com.braintreegateway.TransactionCloneRequest |
| refundRequest | com.braintreegateway.TransactionRefundRequest |
| 수량 | BigDecimal |
| query | com.braintreegateway.TransactionSearchRequest |
53.4.14. 끝점 접두사 webhookNotification 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 접두사 webhookNotification 을 사용하여 다음 끝점을 호출할 수 있습니다.
braintree://webhookNotification/endpoint?[options]
| 끝점 | 단축 별칭 | 옵션 | 결과 본문 유형 |
|---|---|---|---|
| parse |
| 서명, 페이로드 | com.braintreegateway.WebhookNotification |
| 확인 |
| 챌린지 | 문자열 |
WebhookNotification에 대한 URI 옵션
| 이름 | 유형 |
|---|---|
| 서명 | 문자열 |
| 페이로드 | 문자열 |
| 챌린지 | 문자열 |
53.5. 소비자 끝점 링크 복사링크가 클립보드에 복사되었습니다!
모든 생산자 끝점을 소비자 끝점으로 사용할 수 있습니다. 소비자 엔드포인트는 Scheduled Poll Consumer Options 를 소비자 와 함께 사용하여 엔드포인트 호출을 예약할 수 있습니다. 기본적으로 배열 또는 컬렉션을 반환하는 소비자 엔드포인트는 요소당 하나의 교환을 생성하며 각 교환에 대해 경로가 한 번 실행됩니다. 이 동작을 변경하려면 속성 consumer.splitResults=true 를 사용하여 전체 목록 또는 배열에 대한 단일 교환을 반환합니다.
53.6. 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
모든 URI 옵션은 CamelBraintree. 접두사가 있는 생산자 끝점의 메시지 헤더에 제공할 수 있습니다.
53.7. 메시지 본문 링크 복사링크가 클립보드에 복사되었습니다!
모든 결과 메시지 본문은 Braintree Java SDK에서 제공하는 오브젝트를 활용합니다. 생산자 끝점 매개 변수는 inBody 엔드포인트 매개 변수에서 들어오는 메시지 본문에 대한 옵션 이름을 지정할 수 있습니다.
53.8. 예제 링크 복사링크가 클립보드에 복사되었습니다!
Blueprint
<?xml version="1.0"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
xsi:schemaLocation="
http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.0.0.xsd
http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
<cm:property-placeholder id="placeholder" persistent-id="camel.braintree">
</cm:property-placeholder>
<bean id="braintree" class="org.apache.camel.component.braintree.BraintreeComponent">
<property name="configuration">
<bean class="org.apache.camel.component.braintree.BraintreeConfiguration">
<property name="environment" value="${environment}"/>
<property name="merchantId" value="${merchantId}"/>
<property name="publicKey" value="${publicKey}"/>
<property name="privateKey" value="${privateKey}"/>
</bean>
</property>
</bean>
<camelContext trace="true" xmlns="http://camel.apache.org/schema/blueprint" id="braintree-example-context">
<route id="braintree-example-route">
<from uri="direct:generateClientToken"/>
<to uri="braintree://clientToken/generate"/>
<to uri="stream:out"/>
</route>
</camelContext>
</blueprint>
53.9. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
* Camel 구성 * 구성 요소 * 엔드 포인트 * 시작하기
54장. 구성 요소 검색 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 1.3에서 사용 가능
Browse 구성 요소는 테스트, 시각화 도구 또는 디버깅에 유용할 수 있는 간단한 BrowsableEndpoint를 제공합니다. 엔드포인트로 전송된 교환은 모두 검색할 수 있습니다.
54.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
browse:someName[?options]
여기서 someName 은 끝점을 고유하게 식별하기 위한 문자열일 수 있습니다.
54.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Browse 구성 요소에는 옵션이 없습니다.
Browse 엔드포인트는 URI 구문을 사용하여 구성됩니다.
browse:name
다음 경로 및 쿼리 매개변수를 사용합니다.
54.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| name | 필수 항목: 끝점을 고유하게 식별하는 문자열일 수 있는 이름입니다. | 문자열 |
54.2.2. 쿼리 매개변수 (4 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN/ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN/ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | Exchange를 만들 때 기본 교환 패턴을 설정합니다. | ExchangePattern | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
54.3. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
아래 경로에서 browse: 구성 요소를 삽입하여 통과하는 Exchange를 탐색할 수 있습니다.
from("activemq:order.in").to("browse:orderReceived").to("bean:processOrder");
이제 Java 코드 내에서 수신된 교환을 검사할 수 있습니다.
private CamelContext context;
public void inspectRecievedOrders() {
BrowsableEndpoint browse = context.getEndpoint("browse:orderReceived", BrowsableEndpoint.class);
List<Exchange> exchanges = browse.getExchanges();
// then we can inspect the list of received exchanges from Java
for (Exchange exchange : exchanges) {
String payload = exchange.getIn().getBody();
// do something with payload
}
}
54.4. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
55장. Ehcache Component(더 이상 사용되지 않음) 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.1에서 사용 가능
캐시 구성 요소를 사용하면 캐시 구현으로 EHCache를 사용하여 캐싱 작업을 수행할 수 있습니다. 캐시 자체는 요청에 따라 생성되거나 해당 이름의 캐시가 이미 존재하는 경우 원래 설정에서 간단히 사용됩니다.
이 구성 요소는 생산자 및 이벤트 기반 소비자 엔드 포인트를 지원합니다.
캐시 소비자는 이벤트 기반 소비자이며 특정 캐시 활동을 수신하고 응답하는 데 사용할 수 있습니다. 기존 캐시에서 선택 항목을 수행해야 하는 경우 캐시 구성 요소에 대해 정의된 프로세서를 사용합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cache</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
55.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
cache://cacheName[?options]
?option=value&option=#beanRef&… 형식으로 URI에 쿼리 옵션을 추가할 수 있습니다.
55.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
EHCache 구성 요소는 아래 나열된 4 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| cacheManagerFactory (advanced) | 주어진 CacheManagerFactory를 사용하여 CacheManager를 만듭니다. 기본적으로 DefaultCacheManagerFactory가 사용됩니다. | CacheManagerFactory | |
| 구성 (일반) | 캐시 구성 설정 | CacheConfiguration | |
| ConfigurationFile (일반) | classpath 또는 파일 시스템에서 로드할 ehcache.xml 파일의 위치를 설정합니다. 기본적으로 파일은 classpath:ehcache.xml에서 로드됩니다. | classpath:ehcache.xml | 문자열 |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
EHCache 엔드포인트는 URI 구문을 사용하여 구성됩니다.
cache:cacheName
다음 경로 및 쿼리 매개변수를 사용합니다.
55.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| cacheName | 필요한 캐시 이름 | 문자열 |
55.2.2. 쿼리 매개변수(19 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| DiskExpiryThreadInterval Seconds (common) | 디스크 만료 스레드 실행 간격(초)입니다. | long | |
| diskPersistent (common) | 애플리케이션을 다시 시작하는 동안 디스크 저장소가 지속되는지 여부입니다. | false | boolean |
| diskStorePath (common) | 더 이상 사용되지 않는 이 매개변수는 무시됩니다. CacheManager는 setter 주입을 사용하여 이를 설정합니다. | 문자열 | |
| 영구( 일반) | 요소가 영구적인지 여부를 설정합니다. 영구적인 경우 시간 제한이 무시되고 요소가 만료되지 않습니다. | false | boolean |
| 키 (일반) | 사용할 기본 키입니다. 키가 메시지 헤더에 제공되는 경우 헤더의 키가 우선합니다. | 문자열 | |
| maxElementsInMemory (common) | 메모리의 정의된 캐시에 저장할 수 있는 요소 수입니다. | 1000 | int |
| memoryStoreEvictionPolicy (common) | 메모리의 최대 요소 수에 도달할 때 사용할 제거 전략은 무엇입니까. 이 전략은 제거할 요소를 정의합니다. LRU - 최근에 가장 많이 사용되는 LFU - Lest Frequently Used FIFO - First In First In First In First In First In First In First In First In First In First In First In First In First In First In First In First In First In First | LFU | MemoryStoreEviction Policy |
| ObjectCache (common) | 직렬화되지 않은 개체를 캐시에 저장할 수 있도록 허용할지 여부입니다. 이 옵션을 활성화하면 디스크에 대한 오버플로도 활성화할 수 없습니다. | false | boolean |
| 작업 (일반) | 사용할 기본 캐시 작업입니다. 메시지 헤더에서 작업이 있으면 헤더의 작업이 우선합니다. | 문자열 | |
| overflowToDisk (common) | 캐시가 디스크에 오버플로될 수 있는지 여부를 지정합니다. | true | boolean |
| timeToIdleSeconds (일반) | 요소가 만료되기 전 액세스 간 최대 시간 | 300 | long |
| timeToLiveSeconds (일반) | 생성 시간과 요소가 만료되는 시점 사이의 최대 시간입니다. 요소가 영원하지 않은 경우에만 사용됩니다. | 300 | long |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| cacheLoaderRegistry (advanced) | CacheLoaderRegistry를 사용하여 cache loader를 구성하려면 | CacheLoaderRegistry | |
| cacheManagerFactory (advanced) | 사용자 지정 CacheManagerFactory를 사용하여 이 끝점에서 사용할 CacheManager를 만듭니다. 기본적으로 CacheManagerFactory 구성 요소가 사용됩니다. | CacheManagerFactory | |
| eventListenerRegistry (advanced) | CacheEventListenerRegistry를 사용하여 이벤트 리스너를 구성하려면 | CacheEventListener Registry | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
55.3. 캐시에서 메시지 전송/취소 링크 복사링크가 클립보드에 복사되었습니다!
55.3.1. Message Headers up to Camel 2.7 링크 복사링크가 클립보드에 복사되었습니다!
| header | 설명 |
|---|---|
|
| 캐시에서 수행할 작업입니다. 유효한 옵션
* GET * CHECK * ADD * UPDATE * DELETEALL |
|
| 캐시에 메시지를 저장하는 데 사용되는 캐시 키입니다. CACHE_OPERATION이 DELETEALL인 경우 캐시 키는 선택 사항입니다. |
55.3.2. Message Headers Camel 2.8+ 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.8의 헤더 변경
헤더 이름과 지원되는 값은 'CamelCache' 접두사로 변경되었으며 혼합된 케이스를 사용합니다. 이렇게 하면 다른 헤더와 분리하여 보다 쉽게 식별하고 유지할 수 있습니다. CacheConstants 변수 이름은 변경되지 않고 그대로 유지되며 해당 값만 변경되었습니다. 또한 이제 캐시 작업이 수행된 후 이러한 헤더가 교환에서 제거됩니다.
| header | 설명 |
|---|---|
|
| 캐시에서 수행할 작업입니다. 유효한 옵션은 다음과 같습니다. * CamelCacheGet * CamelCacheCheck * CamelCacheUpdate * CamelCacheUpdate * CamelCacheDelete * CamelCacheDeleteAll |
|
| 캐시에 메시지를 저장하는 데 사용되는 캐시 키입니다. CamelCacheOperation이 CamelCacheDeleteAll인 경우 캐시 키가 선택 사항입니다. |
CamelCacheAdd 및 CamelCacheUpdate 작업은 추가 헤더를 지원합니다.
| header | 유형 | 설명 |
|---|---|---|
|
|
| Camel 2.11: 시간(초)입니다. |
|
|
| Camel 2.11: 유휴 시간(초)입니다. |
|
|
| Camel 2.11: 콘텐츠가 영구적인지 여부. |
55.3.3. 캐시 Producer 링크 복사링크가 클립보드에 복사되었습니다!
캐시에 데이터를 보내면 교환에서 직접 페이로드를 기존 또는 생성된 온디맨드 캐시에 저장할 수 있습니다. 이 작업을 수행하는 메커니즘은 다음과 같습니다.
- 위에 표시된 메시지 교환 헤더를 설정합니다.
- 메시지 교환 본문에 캐시로 전송된 메시지가 포함되어 있는지 확인
55.3.4. Cache Consumer 링크 복사링크가 클립보드에 복사되었습니다!
캐시로부터 데이터를 수신하려면 CacheConsumer가 이벤트Listener를 사용하여 기존 또는 생성된 온디맨드 캐시에서 수신 대기하고 캐시 활동이 수행될 때 자동 알림을 받습니다(예: CamelCacheGet/CamelCacheUpdate/CamelCacheDelete/CamelCacheDelete/CamelCacheDeleteAll). 이러한 활동이 발생하는 경우
- 메시지 교환 헤더 및 방금 추가/업데이트된 페이로드를 포함하는 메시지 교환이 포함된 교환이 배치되고 전송됩니다.
- CamelCacheDeleteAll 작업의 경우 Message Exchange Header CamelCacheKey 및 Message Exchange 본문이 채워집니다.
55.3.5. 캐시 프로세서 링크 복사링크가 클립보드에 복사되었습니다!
캐시 조회를 수행하고 선택적으로 페이로드 콘텐츠를 대체할 수 있는 nice 프로세서 세트가 있습니다.
- body
- 토큰
- XPath 수준
55.4. 캐시 사용 샘플 링크 복사링크가 클립보드에 복사되었습니다!
55.4.1. 예 1: 캐시 구성 링크 복사링크가 클립보드에 복사되었습니다!
from("cache://MyApplicationCache" +
"?maxElementsInMemory=1000" +
"&memoryStoreEvictionPolicy=" +
"MemoryStoreEvictionPolicy.LFU" +
"&overflowToDisk=true" +
"&eternal=true" +
"&timeToLiveSeconds=300" +
"&timeToIdleSeconds=true" +
"&diskPersistent=true" +
"&diskExpiryThreadIntervalSeconds=300")
55.4.2. 예 2: 캐시에 키 추가 링크 복사링크가 클립보드에 복사되었습니다!
RouteBuilder builder = new RouteBuilder() {
public void configure() {
from("direct:start")
.setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_ADD))
.setHeader(CacheConstants.CACHE_KEY, constant("Ralph_Waldo_Emerson"))
.to("cache://TestCache1")
}
};
55.4.3. 예 2: 캐시의 기존 키 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
RouteBuilder builder = new RouteBuilder() {
public void configure() {
from("direct:start")
.setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_UPDATE))
.setHeader(CacheConstants.CACHE_KEY, constant("Ralph_Waldo_Emerson"))
.to("cache://TestCache1")
}
};
55.4.4. 예 3: 캐시에 있는 기존 키 삭제 링크 복사링크가 클립보드에 복사되었습니다!
RouteBuilder builder = new RouteBuilder() {
public void configure() {
from("direct:start")
.setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_DELETE))
.setHeader(CacheConstants.CACHE_KEY", constant("Ralph_Waldo_Emerson"))
.to("cache://TestCache1")
}
};
55.4.5. 예 4: 캐시에 있는 모든 기존 키 삭제 링크 복사링크가 클립보드에 복사되었습니다!
RouteBuilder builder = new RouteBuilder() {
public void configure() {
from("direct:start")
.setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_DELETEALL))
.to("cache://TestCache1");
}
};
55.4.6. 예제 5: 프로세서 및 기타 Producers에 캐시 등록 변경 확인 링크 복사링크가 클립보드에 복사되었습니다!
RouteBuilder builder = new RouteBuilder() {
public void configure() {
from("cache://TestCache1")
.process(new Processor() {
public void process(Exchange exchange)
throws Exception {
String operation = (String) exchange.getIn().getHeader(CacheConstants.CACHE_OPERATION);
String key = (String) exchange.getIn().getHeader(CacheConstants.CACHE_KEY);
Object body = exchange.getIn().getBody();
// Do something
}
})
}
};
55.4.7. 예 6: 프로세서를 사용하여 페이로드를 캐시 값으로 선택적으로 교체 링크 복사링크가 클립보드에 복사되었습니다!
RouteBuilder builder = new RouteBuilder() {
public void configure() {
//Message Body Replacer
from("cache://TestCache1")
.filter(header(CacheConstants.CACHE_KEY).isEqualTo("greeting"))
.process(new CacheBasedMessageBodyReplacer("cache://TestCache1","farewell"))
.to("direct:next");
//Message Token replacer
from("cache://TestCache1")
.filter(header(CacheConstants.CACHE_KEY).isEqualTo("quote"))
.process(new CacheBasedTokenReplacer("cache://TestCache1","novel","#novel#"))
.process(new CacheBasedTokenReplacer("cache://TestCache1","author","#author#"))
.process(new CacheBasedTokenReplacer("cache://TestCache1","number","#number#"))
.to("direct:next");
//Message XPath replacer
from("cache://TestCache1").
.filter(header(CacheConstants.CACHE_KEY).isEqualTo("XML_FRAGMENT"))
.process(new CacheBasedXPathReplacer("cache://TestCache1","book1","/books/book1"))
.process (new CacheBasedXPathReplacer("cache://TestCache1","book2","/books/book2"))
.to("direct:next");
}
};
55.4.8. 예제 7: 캐시에서 항목 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
from("direct:start")
// Prepare headers
.setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_GET))
.setHeader(CacheConstants.CACHE_KEY, constant("Ralph_Waldo_Emerson")).
.to("cache://TestCache1").
// Check if entry was not found
.choice().when(header(CacheConstants.CACHE_ELEMENT_WAS_FOUND).isNull()).
// If not found, get the payload and put it to cache
.to("cxf:bean:someHeavyweightOperation").
.setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_ADD))
.setHeader(CacheConstants.CACHE_KEY, constant("Ralph_Waldo_Emerson"))
.to("cache://TestCache1")
.end()
.to("direct:nextPhase");
55.4.9. 예 8: 캐시의 항목 확인 링크 복사링크가 클립보드에 복사되었습니다!
참고: CHECK 명령은 캐시에 항목이 있지만 본문에 메시지를 배치하지 않습니다.
from("direct:start")
// Prepare headers
.setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_CHECK))
.setHeader(CacheConstants.CACHE_KEY, constant("Ralph_Waldo_Emerson")).
.to("cache://TestCache1").
// Check if entry was not found
.choice().when(header(CacheConstants.CACHE_ELEMENT_WAS_FOUND).isNull()).
// If not found, get the payload and put it to cache
.to("cxf:bean:someHeavyweightOperation").
.setHeader(CacheConstants.CACHE_OPERATION, constant(CacheConstants.CACHE_OPERATION_ADD))
.setHeader(CacheConstants.CACHE_KEY, constant("Ralph_Waldo_Emerson"))
.to("cache://TestCache1")
.end();
55.5. EHCache 관리 링크 복사링크가 클립보드에 복사되었습니다!
Ehcache 에는 JMX의 자체 통계 및 관리가 있습니다.
다음은 Spring 애플리케이션 컨텍스트에서 JMX를 통해 노출하는 방법에 대한 코드 조각입니다.
<bean id="ehCacheManagementService" class="net.sf.ehcache.management.ManagementService" init-method="init" lazy-init="false">
<constructor-arg>
<bean class="net.sf.ehcache.CacheManager" factory-method="getInstance"/>
</constructor-arg>
<constructor-arg>
<bean class="org.springframework.jmx.support.JmxUtils" factory-method="locateMBeanServer"/>
</constructor-arg>
<constructor-arg value="true"/>
<constructor-arg value="true"/>
<constructor-arg value="true"/>
<constructor-arg value="true"/>
</bean>
물론 Java에서도 동일한 작업을 수행할 수 있습니다.
ManagementService.registerMBeans(CacheManager.getInstance(), mbeanServer, true, true, true, true);
캐시 적중, 누락, 메모리 내 적중, 디스크 적중, 크기 통계 등을 가져올 수 있습니다. 즉시 CacheConfiguration 매개 변수를 변경할 수도 있습니다.
55.6. 캐시 복제 Camel 2.8 링크 복사링크가 클립보드에 복사되었습니다!
Camel 캐시 구성 요소는 RMI, JGroups, JMS 및 Cache Server를 비롯한 다양한 복제 메커니즘을 사용하여 서버 노드에 캐시를 배포할 수 있습니다.
작업을 수행하는 두 가지 방법이 있습니다.
1. ehcache.xml 을 수동으로 설정할 수 있습니다.
또는
2. 다음 세 가지 옵션을 구성할 수 있습니다.
- cacheManagerFactory
- eventListenerRegistry
- cacheLoaderRegistry
첫 번째 옵션을 사용하여 Camel Cache 복제를 구성하는 것은 모든 캐시를 별도로 구성해야 하므로 약간의 하드 작업입니다. 따라서 모든 캐시 이름을 알 수 없는 상황에서 ehcache.xml 을 사용하는 것은 좋은 방법이 아닙니다.
두 번째 옵션은 캐시당 옵션을 정의할 필요가 없으므로 많은 다른 캐시를 사용하려는 경우 훨씬 좋습니다. 이는 복제 옵션이 CacheManager 및 CacheEndpoint 당 설정되어 있기 때문입니다. 또한 캐시 이름이 개발 단계에서 알 수 없는 유일한 방법입니다.
참고: Camel Cache 복제 메커니즘을 더 잘 이해할 수 있도록 EHCache 매뉴얼 을 읽는 것이 유용할 수 있습니다.
55.6.1. 예: JMS 캐시 복제 링크 복사링크가 클립보드에 복사되었습니다!
JMS 복제는 가장 강력하고 안전한 복제 방법입니다. Camel Cache 복제와 함께 사용하면 다소 간단해집니다. 예를 들어 별도의 페이지에서 사용할 수 있습니다.
56장. 카페인 캐시 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.20에서 사용 가능
카페인 캐시 구성 요소를 사용하면 Caffeine 의 간단한 캐시를 사용하여 캐싱 작업을 수행할 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-caffeine</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
56.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
caffeine-cache://cacheName[?options]
?option=value&option=#beanRef&… 형식으로 URI에 쿼리 옵션을 추가할 수 있습니다.
56.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Caffeine Cache 구성 요소는 아래 나열된 두 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | 글로벌 구성 요소 구성 설정 | CaffeineConfiguration | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Caffeine Cache 엔드포인트는 URI 구문을 사용하여 구성됩니다.
caffeine-cache:cacheName
다음 경로 및 쿼리 매개변수를 사용합니다.
56.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| cacheName | 필요한 캐시 이름 | 문자열 |
56.2.2. 쿼리 매개변수(19 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| createCacheIfNotExist (common) | 캐시가 존재하는 경우 또는 사전 구성할 수 없는 경우 캐시를 생성해야 하는 경우 를 구성합니다. | true | boolean |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| 작업 (producer) | 기본 캐시 작업을 구성하려면 다음을 수행합니다. 작업이 메시지 헤더에 설정된 경우 헤더의 작업이 우선합니다. | 문자열 | |
| 캐시 (producer) | 사용할 이미 인스턴스화된 기본 캐시를 구성하려면 다음을 수행합니다. | cache | |
| cacheLoader (producer) | LoadCache 사용 시 CacheLoader를 구성하려면 | CacheLoader | |
| evictionType (producer) | 이 캐시의 제거 유형 설정 | SIZE_BASED | EvictionType |
| expireAfterAccessTime (producer) | 시간 기반 Eviction의 경우 액세스 후 만료 날짜(초 단위)를 설정합니다. | 300 | int |
| expireAfterWriteTime (producer) | 시간 기반 Eviction(초 단위)의 경우 만료 후 액세스 쓰기를 설정합니다. | 300 | int |
| initialCapacity (producer) | 캐시의 초기 용량 설정 | 10000 | int |
| 키 (producer) | 기본 action 키를 구성하려면 다음을 수행합니다. 메시지가 메시지 헤더에 설정된 경우 헤더의 키가 우선합니다. | 개체 | |
| MaximumSize (producer) | 캐시의 최대 크기 설정 | 10000 | int |
| removalListener (producer) | 캐시에 대한 특정 제거 Listener 설정 | RemovalListener | |
| 통계Counter (producer) | 캐시 통계에 대한 특정 통계 카운터 설정 | StatsCounter | |
| 통계Enabled (producer) | 캐시에서 통계를 사용하려면To enable stats on the cache | false | boolean |
| keytype (advanced) | 캐시 키 유형, 기본 java.lang.Object | java.lang.Object | 문자열 |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| ValueType (advanced) | 캐시 값 유형, 기본 java.lang.Object | java.lang.Object | 문자열 |
57장. 카페인 LoadCache 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.20에서 사용 가능
카페인 로드 캐시 구성 요소를 사용하면 Caffeine 의 The Load 캐시를 사용하여 캐싱 작업을 수행할 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-caffeine</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
57.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
caffeine-loadcache://cacheName[?options]
?option=value&option=#beanRef&… 형식으로 URI에 쿼리 옵션을 추가할 수 있습니다.
57.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Caffeine LoadCache 구성 요소는 아래 나열된 두 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | 글로벌 구성 요소 구성 설정 | CaffeineConfiguration | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Caffeine LoadCache 엔드포인트는 URI 구문을 사용하여 구성됩니다.
caffeine-loadcache:cacheName
다음 경로 및 쿼리 매개변수를 사용합니다.
57.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| cacheName | 필요한 캐시 이름 | 문자열 |
57.2.2. 쿼리 매개변수(19 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| createCacheIfNotExist (common) | 캐시가 존재하는 경우 또는 사전 구성할 수 없는 경우 캐시를 생성해야 하는 경우 를 구성합니다. | true | boolean |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| 작업 (producer) | 기본 캐시 작업을 구성하려면 다음을 수행합니다. 작업이 메시지 헤더에 설정된 경우 헤더의 작업이 우선합니다. | 문자열 | |
| 캐시 (producer) | 사용할 이미 인스턴스화된 기본 캐시를 구성하려면 다음을 수행합니다. | cache | |
| cacheLoader (producer) | LoadCache 사용 시 CacheLoader를 구성하려면 | CacheLoader | |
| evictionType (producer) | 이 캐시의 제거 유형 설정 | SIZE_BASED | EvictionType |
| expireAfterAccessTime (producer) | 시간 기반 Eviction의 경우 액세스 후 만료 날짜(초 단위)를 설정합니다. | 300 | int |
| expireAfterWriteTime (producer) | 시간 기반 Eviction(초 단위)의 경우 만료 후 액세스 쓰기를 설정합니다. | 300 | int |
| initialCapacity (producer) | 캐시의 초기 용량 설정 | 10000 | int |
| 키 (producer) | 기본 action 키를 구성하려면 다음을 수행합니다. 메시지가 메시지 헤더에 설정된 경우 헤더의 키가 우선합니다. | 개체 | |
| MaximumSize (producer) | 캐시의 최대 크기 설정 | 10000 | int |
| removalListener (producer) | 캐시에 대한 특정 제거 Listener 설정 | RemovalListener | |
| 통계Counter (producer) | 캐시 통계에 대한 특정 통계 카운터 설정 | StatsCounter | |
| 통계Enabled (producer) | 캐시에서 통계를 사용하려면To enable stats on the cache | false | boolean |
| keytype (advanced) | 캐시 키 유형, 기본 java.lang.Object | java.lang.Object | 문자열 |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| ValueType (advanced) | 캐시 값 유형, 기본 java.lang.Object | java.lang.Object | 문자열 |
58장. castor DataFormat(더 이상 사용되지 않음) 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.1에서 사용 가능
캐스터는 Castor XML 라이브러리를 사용하여 XML 페이로드를 Java 객체로 마샬링하거나 Java 개체를 XML 페이로드로 마샬링하는 데이터 형식입니다.
일반적으로 Java DSL 또는 Spring XML을 사용하여 Castor 데이터 형식으로 작업할 수 있습니다.
58.1. Java DSL 사용 링크 복사링크가 클립보드에 복사되었습니다!
from("direct:order").
marshal().castor().
to("activemq:queue:order");
예를 들어 다음에서는 기본 Castor 데이터 바인딩 기능을 사용하는 Castor의 DataFormat을 사용합니다.For example the following uses a named DataFormat of Castor which uses default Castor data binding features.
CastorDataFormat castor = new CastorDataFormat ();
from("activemq:My.Queue").
unmarshal(castor).
to("mqseries:Another.Queue");
데이터 형식에 대한 명명된 참조를 사용하려는 경우(예: Spring XML 파일을 통해) 레지스트리에 정의할 수 있습니다.
from("activemq:My.Queue").
unmarshal("mycastorType").
to("mqseries:Another.Queue");
매핑 파일을 제공하여 기본 매핑 스키마를 재정의하려면 다음과 같이 설정할 수 있습니다.
CastorDataFormat castor = new CastorDataFormat ();
castor.setMappingFile("mapping.xml");
또한 Castor Marshaller 및 Unmarshaller에 대한 더 많은 제어 권한을 원한다면 아래와 같이 액세스 할 수 있습니다.
castor.getMarshaller();
castor.getUnmarshaller();
58.2. Spring XML 사용 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 Castor를 사용하여 캐스트라 데이터 유형을 구성하는 Spring을 사용하여 해상을 해제하는 방법을 보여줍니다.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
<unmarshal>
<castor validation="true" />
</unmarshal>
<to uri="mock:result"/>
</route>
</camelContext>
이 예에서는 데이터 유형을 한 번만 구성하고 여러 경로에서 재사용하는 방법을 보여줍니다. <castor> 요소를 <camelContext>에서 직접 설정해야 합니다.
<camelContext>
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<dataFormats>
<castor id="myCastor"/>
</dataFormats>
<route>
<from uri="direct:start"/>
<marshal ref="myCastor"/>
<to uri="direct:marshalled"/>
</route>
<route>
<from uri="direct:marshalled"/>
<unmarshal ref="myCastor"/>
<to uri="mock:result"/>
</route>
</camelContext>
58.3. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Castor dataformat은 아래에 나열된 9가지 옵션을 지원합니다.
| 이름 | 기본값 | Java Type | 설명 |
|---|---|---|---|
| mappingFile |
| classpath에서 로드할 Castor 매핑 파일의 경로입니다. | |
| whitelistEnabled |
|
| Whitelist 기능이 활성화되어 있는지 여부를 정의합니다. |
| allowedUnmarshallObjects |
| 허용되는 오브젝트를 unmarshalled로 정의합니다. 허용되는 개체의 FQN 클래스 이름을 지정하고 쉼표를 사용하여 여러 항목을 분리할 수 있습니다. 또한 링크 org.apache.camel.util.EndpointHelpermatchPattern(String, String)에서 정의한 패턴을 기반으로 하는 와일드카드 및 정규식을 사용할 수도 있습니다. 거부된 개체는 허용된 오브젝트보다 우선합니다. | |
| deniedUnmarshallObjects |
| 거부된 오브젝트를 unmarshalled로 정의합니다. 분기된 개체의 FQN 클래스 이름을 지정하고, 쉼표를 사용하여 여러 항목을 구분할 수 있습니다. 또한 링크 org.apache.camel.util.EndpointHelpermatchPattern(String, String)에서 정의한 패턴을 기반으로 하는 와일드카드 및 정규식을 사용할 수도 있습니다. 거부된 개체는 허용된 오브젝트보다 우선합니다. | |
| 검증 |
|
| 유효성 검사가 꺼져 있는지 여부입니다. 는 기본적으로 true입니다. |
| 인코딩 |
|
| 개체를 XML로 마샬링할 때 사용할 인코딩입니다. 기본값은 UTF-8입니다. |
| 패키지 |
| Castor XmlContext에 추가 패키지 추가 | |
| 클래스 |
| Castor XmlContext에 추가 클래스 이름 추가 | |
| contentTypeHeader |
|
| 데이터 형식이 데이터 형식에서 수행할 수 있는 경우 데이터 형식의 유형으로 Content-Type 헤더를 설정해야 하는지 여부입니다. 예를 들어 데이터 형식을 XML로 마샬링하거나, JSon으로 마샬링되는 데이터 형식에 대한 application/json 등이 있습니다. |
58.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
camel 경로에서 Castor를 사용하려면 이 데이터 형식을 구현하는 camel-castor 에 종속성을 추가해야 합니다.
maven을 사용하는 경우 pom.xml에 다음을 추가하면 최신 및 가장 큰 릴리스의 버전 번호를 대체합니다(최신 버전의 다운로드 페이지 참조).
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-castor</artifactId>
<version>x.x.x</version>
</dependency>
59장. Camel CDI 링크 복사링크가 클립보드에 복사되었습니다!
Camel CDI 구성 요소는 convention-over-configuration 을 기반으로 CDI를 종속성 주입 프레임워크로 사용하여 Apache Camel에 대한 자동 구성을 제공합니다. 애플리케이션에서 사용할 수 있는 Camel 경로를 자동으로 탐지하고 엔드포인트, FluentProducerTemplate,ProducerTemplate 또는 TypeConverter 와 같은 일반적인 Camel 프리미티브에 대한 빈을 제공합니다. @Consume, @Produce 및 @PropertyInject 와 같은 Camel 주석을 CDI 빈에서 원활하게 사용할 수 있도록 표준 Camel 빈 통합을 구현합니다. 또한 Camel 이벤트(예: RouteAddedEvent,CamelContextStartedEvent, ExchangeCompletedEvent, …)를 CDI 이벤트로 연결하고 /에서 Camel 경로에서 CDI 이벤트를 생성/생성하는 데 사용할 수 있는 CDI 이벤트 끝점을 제공합니다.
Camel 2.10 에서 Camel CDI 구성 요소를 사용할 수 있지만 CDI 프로그래밍 모델에 더 잘 부합하도록 Camel 2.17 에서 다시 작성됩니다. 따라서 Camel 이벤트와 CDI 이벤트 브리지와 CDI 이벤트 끝점과 같은 일부 기능은 Camel 2.17부터만 적용됩니다.
Camel CDI 애플리케이션을 테스트하는 방법에 대한 자세한 내용은 Camel CDI 테스트에서 확인할 수 있습니다.
Camel-cdi는 OSGi에서 더 이상 사용되지 않으며 지원되지 않습니다. OSGi와 함께 Camel을 사용하는 경우 OSGi Blueprint를 사용합니다.
59.1. 자동 구성된 Camel 컨텍스트 링크 복사링크가 클립보드에 복사되었습니다!
Camel CDI는 CamelContext 빈을 자동으로 배포 및 구성합니다. CDI 컨테이너가 초기화(resp. shuts down)할 때 CamelContext 빈이 자동으로 인스턴스화, 구성 및 시작(resp. stopped)됩니다. 다음과 같이 애플리케이션에 삽입할 수 있습니다.
@Inject
CamelContext context;
기본 CamelContext 빈은 기본 제공 @Default 한정자로 정규화되며 범위가 @ApplicationScoped 이며 DefaultCamelContext 유형입니다.
이 빈은 프로그래밍 방식으로 사용자 지정할 수 있으며 기타 Camel 컨텍스트 빈을 애플리케이션에도 배포할 수 있습니다.
59.2. Camel 경로 자동 감지 링크 복사링크가 클립보드에 복사되었습니다!
Camel CDI는 애플리케이션의 모든 RoutesBuilder 빈을 자동으로 수집하여 CDI 컨테이너를 초기화할 때 CamelContext 빈 인스턴스에 추가합니다. 예를 들어 Camel 경로를 추가하는 것은 다음과 같이 클래스를 선언하는 것만큼 간단합니다.
class MyRouteBean extends RouteBuilder {
@Override
public void configure() {
from("jms:invoices").to("file:/invoices");
}
}
원하는 만큼 RoutesBuilder 빈을 선언할 수 있습니다. 또한 RouteContainer 빈은 컨테이너가 초기화할 때 Camel CDI에서 관리하는 CamelContext 빈 인스턴스에 자동으로 수집, 인스턴스화 및 추가됩니다.
Camel 2.19에서 사용 가능
일부 상황에서는 RouteBuilder 및 RouteContainer 빈의 자동 구성을 비활성화해야 할 수 있습니다. 이는 CdiCamelConfiguration 이벤트를 관찰하여 수행할 수 있습니다. 예를 들면 다음과 같습니다.
static void configuration(@Observes CdiCamelConfiguration configuration) {
configuration.autoConfigureRoutes(false);
}
마찬가지로 구성된 CamelContext 빈의 자동 시작을 비활성화합니다. 예를 들면 다음과 같습니다.
static void configuration(@Observes CdiCamelConfiguration configuration) {
configuration.autoStartContexts(false);
}
59.3. 자동 구성된 Camel 기본 사항 링크 복사링크가 클립보드에 복사되었습니다!
Camel CDI는 모든 CDI 빈에 삽입할 수 있는 공통 Camel 프리미티브에 대한 빈을 제공합니다. 예를 들면 다음과 같습니다.
@Inject
@Uri("direct:inbound")
ProducerTemplate producerTemplate;
@Inject
@Uri("direct:inbound")
FluentProducerTemplate fluentProducerTemplate;
@Inject
MockEndpoint outbound; // URI defaults to the member name, i.e. mock:outbound
@Inject
@Uri("direct:inbound")
Endpoint endpoint;
@Inject
TypeConverter converter;
59.4. Camel 컨텍스트 구성 링크 복사링크가 클립보드에 복사되었습니다!
기본 CamelContext 빈의 이름만 변경하려면 Camel CDI에서 제공하는 @ContextName 한정자를 사용할 수 있습니다. 예를 들면 다음과 같습니다.
@ContextName("camel-context")
class MyRouteBean extends RouteBuilder {
@Override
public void configure() {
from("jms:invoices").to("file:/invoices");
}
}
사용자 지정이 필요한 경우 CamelContext 클래스를 사용하여 사용자 지정 Camel 컨텍스트 빈을 선언할 수 있습니다. 그런 다음 @PostConstruct 및 @PreDestroy 라이프사이클 콜백을 수행하여 사용자 지정을 수행할 수 있습니다. 예를 들면 다음과 같습니다.
@ApplicationScoped
class CustomCamelContext extends DefaultCamelContext {
@PostConstruct
void customize() {
// Set the Camel context name
setName("custom");
// Disable JMX
disableJMX();
}
@PreDestroy
void cleanUp() {
// ...
}
}
Producer 및 disposer 메서드를 사용하여 Camel 컨텍스트 빈을 사용자 지정할 수도 있습니다. 예를 들면 다음과 같습니다.
class CamelContextFactory {
@Produces
@ApplicationScoped
CamelContext customize() {
DefaultCamelContext context = new DefaultCamelContext();
context.setName("custom");
return context;
}
void cleanUp(@Disposes CamelContext context) {
// ...
}
}
마찬가지로 producer 필드를 사용할 수 있습니다. 예를 들면 다음과 같습니다.
@Produces
@ApplicationScoped
CamelContext context = new CustomCamelContext();
class CustomCamelContext extends DefaultCamelContext {
CustomCamelContext() {
setName("custom");
}
}
예를 들어, setAutoStartup 메서드를 호출하여 컨테이너가 초기화될 때 Camel 컨텍스트 경로가 자동으로 시작되지 않도록 하는 등의 방법으로 이 패턴을 사용할 수 있습니다.
@ApplicationScoped
class ManualStartupCamelContext extends DefaultCamelContext {
@PostConstruct
void manual() {
setAutoStartup(false);
}
}
59.5. 여러 Camel 컨텍스트 링크 복사링크가 클립보드에 복사되었습니다!
위의 설명대로 애플리케이션에서 CamelContext 빈을 실제로 선언할 수 있습니다. 이 경우 이러한 CamelContext 빈에 선언된 CDI 한정자는 Camel 경로 및 기타 Camel 프리미티브를 해당 Camel 컨텍스트에 바인딩하는 데 사용됩니다. 예를 들어 다음 빈이 선언되는 경우:
@ApplicationScoped
@ContextName("foo")
class FooCamelContext extends DefaultCamelContext {
}
@ApplicationScoped
@BarContextQualifier
class BarCamelContext extends DefaultCamelContext {
}
@ContextName("foo")
class RouteAddedToFooCamelContext extends RouteBuilder {
@Override
public void configure() {
// ...
}
}
@BarContextQualifier
class RouteAddedToBarCamelContext extends RouteBuilder {
@Override
public void configure() {
// ...
}
}
@ContextName("baz")
class RouteAddedToBazCamelContext extends RouteBuilder {
@Override
public void configure() {
// ...
}
}
@MyOtherQualifier
class RouteNotAddedToAnyCamelContext extends RouteBuilder {
@Override
public void configure() {
// ...
}
}
@ContextName 으로 정규화된 RoutesBuilder 빈은 Camel CDI를 통해 해당 CamelContext 빈에 자동으로 추가됩니다. 이러한 CamelContext 빈이 없는 경우 RouteAddedToBazCamelContext 빈과 같이 자동으로 생성됩니다. 이는 Camel CDI에서 제공하는 @ContextName 한정자에서만 발생합니다. 따라서 사용자 정의 @My OtherQualifier 한정자를 통해 자격을 갖춘 RouteNotAddedToAnyCamelContext 빈은 Camel 컨텍스트에 추가되지 않습니다. 예를 들어 애플리케이션 실행 중에 나중에 추가해야 할 수 있는 Camel 경로에 유용할 수 있습니다.
Camel 버전 2.17.0부터 Camel CDI는 모든 종류의 CamelContext 빈(예: DefaultCamelContext)을 관리할 수 있습니다. 이전 버전에서는 CdiCamelContext 유형의 빈만 관리할 수 있으므로 확장해야합니다.
CamelContext 빈에 선언된 CDI 한정자도 해당 Camel 프리미티브를 바인딩하는 데 사용됩니다. 예를 들면 다음과 같습니다.
@Inject
@ContextName("foo")
@Uri("direct:inbound")
ProducerTemplate producerTemplate;
@Inject
@ContextName("foo")
@Uri("direct:inbound")
FluentProducerTemplate fluentProducerTemplate;
@Inject
@BarContextQualifier
MockEndpoint outbound; // URI defaults to the member name, i.e. mock:outbound
@Inject
@ContextName("baz")
@Uri("direct:inbound")
Endpoint endpoint;
59.6. 구성 속성 링크 복사링크가 클립보드에 복사되었습니다!
속성 자리 표시자를 해결하기 위해 Camel에서 사용하는 구성 속성의 소싱을 구성하려면 @Named("properties") 로 자격을 갖춘 PropertiesComponent 빈을 선언할 수 있습니다. 예를 들면 다음과 같습니다.
@Produces
@ApplicationScoped
@Named("properties")
PropertiesComponent propertiesComponent() {
Properties properties = new Properties();
properties.put("property", "value");
PropertiesComponent component = new PropertiesComponent();
component.setInitialProperties(properties);
component.setLocation("classpath:placeholder.properties");
return component;
}
DeltaSpike 구성 메커니즘 을 사용하려면 다음 PropertiesComponent 빈을 선언할 수 있습니다.
@Produces
@ApplicationScoped
@Named("properties")
PropertiesComponent properties(PropertiesParser parser) {
PropertiesComponent component = new PropertiesComponent();
component.setPropertiesParser(parser);
return component;
}
// PropertiesParser bean that uses DeltaSpike to resolve properties
static class DeltaSpikeParser extends DefaultPropertiesParser {
@Override
public String parseProperty(String key, String value, Properties properties) {
return ConfigResolver.getPropertyValue(key);
}
}
DeltaSpike 구성 메커니즘을 사용하는 Camel CDI 애플리케이션의 작동 예시에 대한 camel-example-cdi-properties 예제를 확인할 수 있습니다.
59.7. 자동 구성된 유형 변환기 링크 복사링크가 클립보드에 복사되었습니다!
@Converter 주석이 주석이 추가된 CDI 빈은 배포된 Camel 컨텍스트(예:)에 자동으로 등록됩니다.
@Converter
public class MyTypeConverter {
@Converter
public Output convert(Input input) {
//...
}
}
CDI 주입은 변환기 내에서 지원됩니다.
59.8. Camel 빈 통합 링크 복사링크가 클립보드에 복사되었습니다!
59.8.1. Camel 주석 링크 복사링크가 클립보드에 복사되었습니다!
Camel 빈 통합의 일부로 Camel에는 Camel CDI에서 원활하게 지원하는 일련의 주석이 제공됩니다. http://camel.apache.org/bean-integration.html#BeanIntegration-Annotations 따라서 CDI 빈에서 이러한 주석을 사용할 수 있습니다. 예를 들면 다음과 같습니다.
| Camel 주석 | CDI와 동일 | |
|---|---|---|
| 구성 속성 |
| DeltaSpike 구성 메커니즘 을 사용하는 경우:
자세한 내용은 구성 속성을 참조하십시오. |
| 생산자 템플릿 삽입(기본 Camel 컨텍스트) |
|
|
| 끝점 삽입(기본 Camel 컨텍스트) |
|
|
| 끝점 주입 (이름별 컨텍스트) |
|
|
| 빈 주입(유형별) |
|
|
| 빈 주입(이름별) |
|
|
| POJO 사용 |
|
|
59.8.2. 빈 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Java Camel DSL과 같은 유형의 DSL에서 CDI 빈을 참조할 수 있습니다.
class MyBean {
//...
}
from("direct:inbound").bean(MyBean.class);
또는 Java DSL에서 이름으로 CDI 빈을 조회하려면 다음을 수행합니다.
@Named("foo")
class MyNamedBean {
//...
}
from("direct:inbound").bean("foo");
59.8.3. 끝점 URI에서 빈 참조 링크 복사링크가 클립보드에 복사되었습니다!
URI 구문을 사용하여 끝점을 구성할 때 # 표기법을 사용하여 레지스트리의 빈을 참조할 수 있습니다. URI 매개변수 값이 # 기호로 시작하는 경우 Camel CDI는 지정된 유형의 빈을 이름별로 조회합니다. 예를 들면 다음과 같습니다.
from("jms:queue:{{destination}}?transacted=true&transactionManager=#jtaTransactionManager").to("...");
@Named("jtaTransactionManager") 로 다음 CDI 빈을 사용할 수 있어야 합니다.
@Produces
@Named("jtaTransactionManager")
PlatformTransactionManager createTransactionManager(TransactionManager transactionManager, UserTransaction userTransaction) {
JtaTransactionManager jtaTransactionManager = new JtaTransactionManager();
jtaTransactionManager.setUserTransaction(userTransaction);
jtaTransactionManager.setTransactionManager(transactionManager);
jtaTransactionManager.afterPropertiesSet();
return jtaTransactionManager;
}
59.9. Camel 이벤트를 CDI 이벤트로 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.17로 사용 가능
Camel은 Camel 컨텍스트, 서비스, 경로 및 교환 이벤트를 수신 대기하기 위해 서브스크립션할 수 있는 관리 이벤트 세트를 제공합니다. Camel CDI는 이러한 Camel 이벤트를 CDI 관찰 자 방법 을 사용하여 관찰할 수 있는 CDI 이벤트로 원활하게 변환합니다. 예를 들면 다음과 같습니다.
void onContextStarting(@Observes CamelContextStartingEvent event) {
// Called before the default Camel context is about to start
}
Camel 2.18부터 특정 경로(RouteAddedEvent,RouteStartedEvent,RouteStoppedEvent 및 RouteRemovedEvent)에 대한 이벤트를 확인할 수 있습니다. 예를 들면 다음과 같습니다.
from("...").routeId("foo").to("...");
void onRouteStarted(@Observes @Named("foo") RouteStartedEvent event) {
// Called after the route "foo" has started
}
CDI 컨테이너에 여러 Camel 컨텍스트가 있는 경우 @ContextName 와 같은 Camel 컨텍스트 빈 한정자를 사용하여 관찰자 메서드 확인을 관찰자 확인에 지정된 대로 특정 Camel 컨텍스트로 구체화할 수 있습니다. 예를 들면 다음과 같습니다. http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#observer_resolution
void onRouteStarted(@Observes @ContextName("foo") RouteStartedEvent event) {
// Called after the route 'event.getRoute()' for the Camel context 'foo' has started
}
void onContextStarted(@Observes @Manual CamelContextStartedEvent event) {
// Called after the the Camel context qualified with '@Manual' has started
}
마찬가지로 @Default 한정자를 사용하여 여러 컨텍스트가 있는 경우 기본 Camel 컨텍스트에 대한 Camel 이벤트를 관찰할 수 있습니다. 예를 들면 다음과 같습니다.
void onExchangeCompleted(@Observes @Default ExchangeCompletedEvent event) {
// Called after the exchange 'event.getExchange()' processing has completed
}
이 예에서는 한정자를 지정하지 않으면 @Any 한정자가 암시적으로 가정되므로 모든 Camel 컨텍스트에 대한 해당 이벤트가 수신됩니다.
Camel 이벤트를 CDI 이벤트로 변환하는 지원은 배포에서 Camel 이벤트를 수신하는 관찰자 메서드 및 Camel 컨텍스트별로 감지되는 경우에만 활성화됩니다.
59.10. CDI 이벤트 끝점 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.17로 사용 가능
CDI 이벤트 끝점은 Camel 경로를 사용하여 CDI 이벤트 를 브리지하므로 Camel 소비자(C Camel 프로듀서에서 일시 중지)에서 CDI 이벤트를 원활하게 관찰/사용/시행할 수 있습니다.
Camel CDI에서 제공하는 CdiEventEndpoint<T > 빈을 사용하여 이벤트 유형이 T 인 CDI 이벤트 를 관찰하거나 사용할 수 있습니다. 예를 들면 다음과 같습니다.
@Inject
CdiEventEndpoint<String> cdiEventEndpoint;
from(cdiEventEndpoint).log("CDI event received: ${body}");
이는 쓰기와 동일합니다.
@Inject
@Uri("direct:event")
ProducerTemplate producer;
void observeCdiEvents(@Observes String event) {
producer.sendBody(event);
}
from("direct:event").log("CDI event received: ${body}");
반대로 CdiEventEndpoint<T > 빈을 사용하여 이벤트 유형이 T 인 / fire CDI 이벤트 를 생성할 수 있습니다. 예를 들면 다음과 같습니다.
@Inject
CdiEventEndpoint<String> cdiEventEndpoint;
from("direct:event").to(cdiEventEndpoint).log("CDI event sent: ${body}");
이는 쓰기와 동일합니다.
@Inject
Event<String> event;
from("direct:event").process(new Processor() {
@Override
public void process(Exchange exchange) {
event.fire(exchange.getBody(String.class));
}
}).log("CDI event sent: ${body}");
또는 Java 8 람다 식을 사용할 수 있습니다.
@Inject
Event<String> event;
from("direct:event")
.process(exchange -> event.fire(exchange.getIn().getBody(String.class)))
.log("CDI event sent: ${body}");
특정 CdiEventEndpoint< (resp. 한정자)는 다음과 같이 매개 변수가 있는 이벤트 유형 (예: 이벤트 한정자로) 자동으로 변환됩니다.
T > 삽입 지점의 유형 변수 T
@Inject
@FooQualifier
CdiEventEndpoint<List<String>> cdiEventEndpoint;
from("direct:event").to(cdiEventEndpoint);
void observeCdiEvents(@Observes @FooQualifier List<String> event) {
logger.info("CDI event: {}", event);
}
CDI 컨테이너에 여러 Camel 컨텍스트가 있는 경우 @ContextName 와 같은 Camel 컨텍스트 빈 한정자를 사용하여 CdiEventEndpoint<T > 삽입 지점을 받을 수 있습니다. 예를 들면 다음과 같습니다.
@Inject
@ContextName("foo")
CdiEventEndpoint<List<String>> cdiEventEndpoint;
// Only observes / consumes events having the @ContextName("foo") qualifier
from(cdiEventEndpoint).log("Camel context (foo) > CDI event received: ${body}");
// Produces / fires events with the @ContextName("foo") qualifier
from("...").to(cdiEventEndpoint);
void observeCdiEvents(@Observes @ContextName("foo") List<String> event) {
logger.info("Camel context (foo) > CDI event: {}", event);
}
CDI 이벤트 Camel 엔드포인트는 이벤트 유형 및 이벤트 한정 자의 각각의 고유한 조합에 대해 관찰자 방법 을 동적으로 추가하고 컨테이너 유형 안전 관찰자 해상도 에만 의존하여 가능한 한 효율적으로 구현을 유도합니다.
또한 CDI의 유형 안전 속성과 Camel 구성 요소 모델의 동적 특성이 매우 높기 때문에 URI 를 통해 CDI 이벤트 Camel 엔드포인트의 인스턴스를 생성할 수 없습니다. 실제로 CDI 이벤트 구성 요소의 URI 형식은 다음과 같습니다.
cdi-event://PayloadType<T1,...,Tn>[?qualifiers=QualifierType1[,...[,QualifierTypeN]...]]
authority PayloadType (resp. the QualifierType)을 사용하는 경우 페이로드 매개 변수 유형에 대한 각도 괄호로 구분된 페이로드(resp. modifier) 원시 유형의 URI로 이스케이프된 URI가 됩니다. 이는 친 숙한 URI로 이어집니다. 예를 들면 다음과 같습니다.
cdi-event://org.apache.camel.cdi.example.EventPayload%3Cjava.lang.Integer%3E?qualifiers=org.apache.camel.cdi.example.FooQualifier%2Corg.apache.camel.cdi.example.BarQualifier
그러나 근본적으로는 CDI 컨테이너가 배포 단계에서 Camel 컨텍스트 모델을 검색할 수 없기 때문에 엔드포인트 인스턴스와 관찰자 메서드 간의 효율적인 바인딩을 방지할 수 있습니다.
59.11. Camel XML 구성 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.18에서 사용 가능
CDI는 형식이 안전한 종속성 주입 메커니즘을 선호하지만 기존 Camel XML 구성 파일을 Camel CDI 애플리케이션으로 재사용하는 것이 유용할 수 있습니다. 다른 사용 사례에서는 Camel XML DSL을 사용하여 Camel 컨텍스트를 구성하는 것이 편리할 수 있습니다.
CDI 빈에서 Camel CDI가 제공하는 @ImportResource 주석을 사용할 수 있으며 Camel CDI는 다음과 같이 지정된 위치에 Camel XML 구성을 자동으로 로드합니다.
@ImportResource("camel-context.xml")
class MyBean {
}
Camel CDI는 classpath에서 지정된 위치에 리소스를 로드합니다(다른 프로토콜도 나중에 추가할 수 있음).
가져온 리소스의 모든 CamelContext 요소 및 기타 Camel 프리미티브 는 컨테이너 부트스트랩 중에 CDI 빈으로 자동 배포되므로 Camel CDI에서 제공하는 자동 구성을 활용하고 런타임에 주입할 수 있습니다. 이러한 요소에 명시적 id 속성이 설정된 경우 다음 Camel XML 구성이 제공됨과 같이 @Named 한정자를 사용하여 해당 CDI 빈이 정규화됩니다.
<camelContext id="foo">
<endpoint id="bar" uri="seda:inbound">
<property key="queue" value="#queue"/>
<property key="concurrentConsumers" value="10"/>
</endpoint>
<camelContext/>
해당 CDI 빈은 자동으로 배포되며 다음과 같이 삽입할 수 있습니다.
@Inject
@ContextName("foo")
CamelContext context;
@Inject
@Named("bar")
Endpoint endpoint;
CamelContext 빈은 @Named 및 @ContextName 한정자를 모두 사용하여 자동으로 정규화됩니다. 가져온 CamelContext 요소에 id 속성이 없는 경우 해당 빈은 기본 제공 @Default 한정자와 함께 배포됩니다.
반대로 애플리케이션에 배포된 CDI 빈은 일반적으로 ref 특성(예: 다음 빈이 선언된 경우) Camel XML 구성에서 참조할 수 있습니다.
@Produces
@Named("baz")
Processor processor = exchange -> exchange.getIn().setHeader("qux", "quux");
가져온 Camel XML 구성에서 해당 빈에 대한 참조를 선언할 수 있습니다. 예를 들면 다음과 같습니다.
<camelContext id="foo">
<route>
<from uri="..."/>
<process ref="baz"/>
</route>
<camelContext/>
59.12. 트랜잭션 지원 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.19에서 사용 가능
Camel CDI는 JTA를 사용하여 Camel 트랜잭션 클라이언트를 지원합니다.
이 지원은 선택 사항이므로 Maven을 사용할 때 종속성으로 JTA를 명시적으로 추가하여 애플리케이션 클래스 경로에 JTA를 포함해야 합니다.
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>javax.transaction-api</artifactId>
<scope>runtime</scope>
</dependency>
JTA 지원 컨테이너에 애플리케이션을 배포하거나 독립 실행형 JTA 구현을 제공해야 합니다.
트랜잭션 관리자는 Java :/TransactionManager 키를 사용하여 JNDI 리소스로 조회됩니다.
광범위한 배포 시나리오를 지원하기 위해 더 유연한 전략이 향후 추가됩니다.
59.12.1. 트랜잭션 정책 링크 복사링크가 클립보드에 복사되었습니다!
Camel CDI는 일반적으로 지원되는 Camel TransactedPolicy 를 CDI 빈으로 구현할 수 있습니다. 이러한 정책은 트랜잭션된 EIP를 사용하여 이름으로 검색할 수 있습니다. 예를 들면 다음과 같습니다.
class MyRouteBean extends RouteBuilder {
@Override
public void configure() {
from("activemq:queue:foo")
.transacted("PROPAGATION_REQUIRED")
.bean("transformer")
.to("jpa:my.application.entity.Bar")
.log("${body.id} inserted");
}
}
다음과 같습니다.
class MyRouteBean extends RouteBuilder {
@Inject
@Named("PROPAGATION_REQUIRED")
Policy required;
@Override
public void configure() {
from("activemq:queue:foo")
.policy(required)
.bean("transformer")
.to("jpa:my.application.entity.Bar")
.log("${body.id} inserted");
}
}
지원되는 트랜잭션 정책 이름 목록은 다음과 같습니다.
-
PROPAGATION_NEVER, -
PROPAGATION_NOT_SUPPORTED, -
PROPAGATION_SUPPORTS, -
PROPAGATION_REQUIRED, -
PROPAGATION_REQUIRES_NEW, -
PROPAGATION_NESTED, -
PROPAGATION_MANDATORY.
59.12.2. 트랜잭션 오류 처리기 링크 복사링크가 클립보드에 복사되었습니다!
Camel CDI는 redelivery 오류 처리기를 확장하는 트랜잭션 오류 처리기를 제공하며, 예외가 발생할 때마다 롤백을 강제하고 각 재전송마다 새 트랜잭션을 생성합니다.
Camel CDI는 다음과 같이 구성에 빠르게 액세스할 수 있도록 transactionErrorHandler 도우미 메서드를 노출하는 CdiRouteBuilder 클래스를 제공합니다.
class MyRouteBean extends CdiRouteBuilder {
@Override
public void configure() {
errorHandler(transactionErrorHandler()
.setTransactionPolicy("PROPAGATION_SUPPORTS")
.maximumRedeliveries(5)
.maximumRedeliveryDelay(5000)
.collisionAvoidancePercent(10)
.backOffMultiplier(1.5));
}
}
59.13. auto-configured OSGi 통합 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.17로 사용 가능
Camel 컨텍스트 빈은 Camel CDI에 의해 자동으로 조정되므로 OSGi 서비스로 등록되고 ComponentResolver 및 DataFormatResolver와 같은 다양한 확인자(예: ComponentResolver 및 DataFormatResolver)가 OSGi 레지스트리에 통합되도록 Camel CDI에 의해 자동으로 조정됩니다. 즉, Karaf Camel 명령을 사용하여 Camel CDI에서 자동으로 구성할 수 있습니다. 예를 들면 다음과 같습니다.
karaf@root()> camel:context-list
Context Status Total # Failed # Inflight # Uptime
------- ------ ------- -------- ---------- ------
camel-cdi Started 1 0 0 1 minute
Camel CDI OSGi 통합의 작동 예는 camel-example-cdi-osgi 예제를 참조하십시오.
59.14. lazy injection / Programmatic Lookup 링크 복사링크가 클립보드에 복사되었습니다!
CDI programmatic 모델은 애플리케이션 초기화 시 발생하는 typesafe resolution 메커니즘을 선호하지만 나중에 프로그래밍 방식 조회 메커니즘을 사용하여 애플리케이션 실행 중에 동적 / 지연 삽입을 수행할 수 있습니다.
Camel CDI는 Camel 프리미티브의 표준 주입에 사용할 수 있는 CDI 한정자에 해당하는 주석 리터럴을 편의를 제공합니다. 이러한 주석 리터럴은 지연 주입 / 프로그램 조회를 수행하는 CDI 진입점인 javax.enterprise.inject.Instance 인터페이스와 함께 사용할 수 있습니다.
예를 들어 @Uri 한정자에 대해 제공된 주석 리터럴을 사용하여 Camel 기본에 대해 지체적으로 조회할 수 있습니다(예: ProducerTemplate 빈의 경우).
@Any
@Inject
Instance<ProducerTemplate> producers;
ProducerTemplate inbound = producers
.select(Uri.Literal.of("direct:inbound"))
.get();
또는 Endpoint 빈의 경우 다음을 수행합니다.
@Any
@Inject
Instance<Endpoint> endpoints;
MockEndpoint outbound = endpoints
.select(MockEndpoint.class, Uri.Literal.of("mock:outbound"))
.get();
마찬가지로 @ContextName 한정자에 대해 제공된 주석 리터럴을 사용하여 CamelContext 빈을 지연할 수 있습니다. 예를 들면 다음과 같습니다.
@Any
@Inject
Instance<CamelContext> contexts;
CamelContext context = contexts
.select(ContextName.Literal.of("foo"))
.get();
Camel 컨텍스트 유형을 기반으로 선택 사항을 구체화할 수도 있습니다. 예를 들면 다음과 같습니다.
@Any
@Inject
Instance<CamelContext> contexts;
// Refine the selection by type
Instance<DefaultCamelContext> context = contexts.select(DefaultCamelContext.class);
// Check if such a bean exists then retrieve a reference
if (!context.isUnsatisfied())
context.get();
Camel 컨텍스트를 선택하는 단계를 반복할 수도 있습니다. 예를 들면 다음과 같습니다.
@Any
@Inject
Instance<CamelContext> contexts;
for (CamelContext context : contexts)
context.setUseBreadcrumb(true);
59.15. Maven Archetype 링크 복사링크가 클립보드에 복사되었습니다!
사용 가능한 Camel Maven archetypes 중에서 제공된 camel-archetype-cdi 을 사용하여 Camel CDI Maven 프로젝트를 생성할 수 있습니다. 예를 들면 다음과 같습니다.
mvn archetype:generate -DarchetypeGroupId=org.apache.camel.archetypes -DarchetypeArtifactId=camel-archetype-cdi
59.16. 지원되는 컨테이너 링크 복사링크가 클립보드에 복사되었습니다!
Camel CDI 구성 요소는 CDI 1.0, CDI 1.1 및 CDI 1.2 호환 런타임과 호환됩니다. 다음 런타임에 대해 성공적으로 테스트되었습니다.
| 컨테이너 | 버전 | 런타임 |
|---|---|---|
| weld SE |
| CDI 1.0 / Java SE 7 |
| OpenWebBeans |
| CDI 1.0 / Java SE 7 |
| weld SE |
| CDI 1.2 / Java SE 7 |
| OpenWebBeans |
| CDI 1.2 / Java SE 7 |
| WildFly |
| CDI 1.2 / Java EE 7 |
| WildFly |
| CDI 1.2 / Java EE 7 |
| WildFly |
| CDI 1.2 / Java EE 7 |
59.17. 예제 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제는 Camel 프로젝트의 예제 디렉터리에서 확인할 수 있습니다.
| 예제 | 설명 |
|---|---|
|
| 구성 요소, 끝점 및 빈을 구성하기 위해 CDI를 사용하여 Camel과 함께 작업하는 방법을 설명합니다. |
|
| Camel, CDI 및 Kubernetes 간의 통합을 설명합니다. |
|
| Camel, Dropwizard Metrics 및 CDI 간의 통합을 보여줍니다. |
|
| 구성 속성을 위한 Camel, DeltaSpike 및 CDI 간의 통합을 보여줍니다. |
|
| PAX CDI를 사용하여 OSGi 컨테이너 내에서 실행할 수 있는 SJMS 구성 요소를 사용하는 CDI 애플리케이션 |
|
| CDI를 종속성 주입 프레임워크로 사용하는 웹 애플리케이션에서 Camel REST DSL 사용 방법을 설명합니다. |
|
| Camel과 CDI 간의 통합의 일부로 제공되는 테스트 기능을 보여줍니다. |
|
| Camel XML 구성 파일을 Camel CDI 애플리케이션으로 사용하는 방법을 설명합니다. |
|
| CDI와 함께 REST DSL 및 OpenAPI Java 사용 예 |
|
| CDI와 함께 REST DSL 및 Swagger Java 사용 예 |
|
| CDI 종속성 주입이 있는 Java에서 구현된 EIP 책의 위젯 및 Gadget 사용 사례 |
59.18. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel CDI 테스트
- CDI 사양 웹 사이트
- CDI ecosystem
- weld 홈페이지
- OpenWebBeans 홈페이지
- CDI 및 Camel을 추가로 사용하는 방법 ( Camel CDI 섹션 참조)
59.19. {wildfly-camel}에 있는 EAR 배포를 위한 Camel CDI 링크 복사링크가 클립보드에 복사되었습니다!
{wildfly-camel}의 Camel CDI EAR 배포는 표준 WAR 또는 JAR 배포와 비교하여 클래스 및 리소스 로드 동작에서 몇 가지 차이점이 있습니다.
{Wildfly} EAR 배포 ClassLoader. {wildfly}를 사용하여 수집된 부트스트랩도 모든 EAR 하위 배포에서 단일 CDI 확장만 생성하고 공유하도록 합니다.
그러면 EAR 배포 ClassLoader를 사용하여 클래스 및 리소스를 동적으로 로드하기 위해 '자동 구성' CDI Camel Context가 생성됩니다. 기본적으로 이 ClassLoader는 EAR 하위 배포 내의 리소스에 액세스할 수 없습니다.
EAR 배포의 경우 'Auto-configured' CDI Camel Context를 사용하지 않도록 하고 RouteBuilder 클래스에 @ContextName 로 주석을 달거나 @ImportResource 주석을 통해 CamelContext 를 만들거나 CDI 생산자 메서드 및 필드를 통해 생성하는 것이 좋습니다. 이는 {wildfly-camel}에서 Camel과 함께 사용할 올바른 ClassLoader를 결정하는 데 도움이 됩니다.
60장. Chronicle Engine 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.18로 사용 가능
camel chronicle-engine 구성 요소를 사용하면 OpenHFT의 Chronicle-Engine의 이점을 활용할 수 있습니다.
60.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
chronicle-engine:addresses/path[?options]
60.2. URI 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Chronicle Engine 구성 요소에는 옵션이 없습니다.
Chronicle Engine 엔드포인트는 URI 구문을 사용하여 구성됩니다.
chronicle-engine:addresses/path
다음 경로 및 쿼리 매개변수를 사용합니다.
60.2.1. 경로 매개 변수(2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| addresses | 필수 엔진 주소. 여러 주소는 쉼표로 구분할 수 있습니다. | 문자열 | |
| path | 필수 엔진 경로 | 문자열 |
60.2.2. 쿼리 매개변수(12 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 작업 (일반) | 유효한 값을 수행하는 기본 동작은 - PUBLISH - PPUBLISH_AND_INDEX - PGET_AND_AND_PUT - PPUT_IF_ABSENT - PGET - PGET_AND_REMOVE - PGET - PGET_AND_REMOVE - PISOVE - PISOVE - PISEE - PGET_AND_AND_PUT - PGET_IF_ABSENT - PGET - PGET_AND_AND_PUT - PGET_IF_ABSENT - PGET - PGET_AND_AND_REMOVE - PISEE - PISE_MPE | 문자열 | |
| clustername (일반) | 큐의 클러스터 이름 | 문자열 | |
| filteredMapEvents (일반) | filer에 대한 Map 이벤트 유형의 쉼표로 구분된 목록, 유효한 값은 INSERT, UPDATE, REMOVE입니다. | 문자열 | |
| 영구 (일반) | 데이터 지속성 활성화/비활성화 | true | boolean |
| subscribeMapEvents (일반) | 소비자가 맵 이벤트인 default true로 구독해야 하는 경우 설정합니다. | true | boolean |
| subscribeTopicEvents (일반) | 소비자가 TopicEvents,d efault false로 가입해야 하는 경우 설정합니다. | false | boolean |
| subscribeTopologicalEvents (일반) | 소비자가 TopologicalEvents,d efault false로 가입해야 하는 경우 설정합니다. | false | boolean |
| wireType (common) | 사용할 유선 유형입니다. 기본값은 바이너리 와이어입니다. | BINARY | 문자열 |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
61장. 청크 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.15에서 사용 가능
chunk: 구성 요소를 사용하면 Chunk 템플릿을 사용하여 메시지를 처리할 수 있습니다. Templating을 사용하여 요청에 대한 응답을 생성할 때 이상적입니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-chunk</artifactId>
<version>x.x.x</version> <!-- use the same version as your Camel core version -->
</dependency>
61.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
chunk:templateName[?options]
여기서 templateName 은 호출할 템플릿의 classpath-local URI입니다.
다음 형식 ?option=value&option=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
61.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Chunk 구성 요소에는 옵션이 없습니다.
Chunk 엔드포인트는 URI 구문을 사용하여 구성됩니다.
chunk:resourceUri
다음 경로 및 쿼리 매개변수를 사용합니다.
61.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| resourceUri | 리소스의 필수 경로입니다. classpath, file, http, ref 또는 bean. classpath, file 및 http를 사용하여 접두사를 추가할 수 있습니다. (classpath는 기본값임) 이러한 프로토콜을 사용하여 리소스를 로드할 수 있습니다. ref는 registry. 빈의 리소스를 조회하여 리소스로 사용할 빈 메서드를 호출합니다. 빈의 경우 점 다음에 메서드 이름을 지정할 수 있습니다. eg bean:myBean.myMethod. | 문자열 |
61.2.2. 쿼리 매개변수(7 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| contentCache (producer) | 리소스 콘텐츠 캐시 사용 여부를 설정 | false | boolean |
| 인코딩 (producer) | 본문의 인코딩을 정의합니다. | 문자열 | |
| 확장 (producer) | 템플릿의 파일 확장자를 정의합니다. | 문자열 | |
| themeFolder (producer) | 검사할 테마 폴더를 정의합니다. | 문자열 | |
| themeLayer (producer) | 자세히 보기 위해 테마 계층 정의 | 문자열 | |
| themeSubfolder (producer) | 검사할 subject 하위 폴더를 정의합니다. | 문자열 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
청크 구성 요소는 확장 .chtml 또는 _.cxml이 있는 테마 폴더에서 특정 템플릿을 찾습니다. _ 다른 폴더 또는 확장 기능을 지정해야하는 경우 위에 나열된 특정 옵션을 사용해야합니다.
61.3. 청크 컨텍스트 링크 복사링크가 클립보드에 복사되었습니다!
Camel은 Chunk 컨텍스트( 맵조정)에서 교환 정보를 제공합니다. 교환은 다음과 같이 전송됩니다.
| key | value |
|---|---|
|
|
|
|
|
|
|
| In 메시지의 헤더입니다. |
|
| Camel 컨텍스트입니다. |
|
| In 메시지입니다. |
|
| 메시지 본문에 있습니다. |
|
| Out(Out) 메시지(InOut 메시지 교환 패턴에만 해당)입니다. |
61.4. 동적 템플릿 링크 복사링크가 클립보드에 복사되었습니다!
Camel은 템플릿 또는 템플릿 콘텐츠 자체에 대해 다른 리소스 위치를 정의할 수 있는 두 개의 헤더를 제공합니다. 이러한 헤더 중 하나라도 설정되면 Camel은 구성된 엔드포인트에서 이 헤더를 사용합니다. 이를 통해 런타임 시 동적 템플릿을 제공할 수 있습니다.
| header | 유형 | 설명 | 지원 버전 |
|---|---|---|---|
| ChunkConstants.CHUNK_RESOURCE_URI | 문자열 | 구성된 엔드포인트 대신 사용할 템플릿 리소스의 URI입니다. | |
| ChunkConstants.CHUNK_TEMPLATE | 문자열 | 구성된 엔드포인트 대신 사용할 템플릿입니다. |
61.5. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
예를 들어 다음과 같은 것을 사용할 수 있습니다.
from("activemq:My.Queue").
to("chunk:template");
Chunk 템플릿을 사용하여 InOut 메시지 교환( JMSReplyTo 헤더가 있는 경우) 메시지에 대한 응답을 공식화합니다.
InOnly를 사용하고 메시지를 사용하고 다른 목적지로 보내려면 다음을 사용할 수 있습니다.
from("activemq:My.Queue").
to("chunk:template").
to("activemq:Another.Queue");
예를 들어 구성 요소에서 헤더를 통해 동적으로 사용해야 하는 템플릿을 지정할 수 있습니다.
from("direct:in").
setHeader(ChunkConstants.CHUNK_RESOURCE_URI).constant("template").
to("chunk:dummy");
Chunk 구성 요소 옵션의 예는 다음과 같습니다.
from("direct:in").
to("chunk:file_example?themeFolder=template&themeSubfolder=subfolder&extension=chunk");
이 예에서 Chunk 구성 요소는 template/subfolder 폴더에 있는 file_example.chunk 파일을 찾습니다.
61.6. 이메일 샘플 링크 복사링크가 클립보드에 복사되었습니다!
이 샘플에서는 주문 확인 이메일을 위해 Chunk templating을 사용합니다. 이메일 템플릿은 Chunk에 다음과 같이 배치됩니다.
Dear {$headers.lastName}, {$headers.firstName}
Thanks for the order of {$headers.item}.
Regards Camel Riders Bookstore
{$body}
61.7. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
62장. 클래스 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.4로 사용 가능
class: 구성 요소는 Camel 메시지 교환에 빈을 바인딩합니다. 빈 구성 요소와 동일한 방식으로 작동하지만 레지스트리에서 빈 을 찾는 대신 클래스 이름을 기반으로 빈을 생성합니다.
62.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
class:className[?options]
여기서 className 은 빈으로 생성하고 사용할 정규화된 클래스 이름입니다.
62.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Class 구성 요소에는 옵션이 없습니다.
클래스 엔드포인트는 URI 구문을 사용하여 구성됩니다.
class:beanName
다음 경로 및 쿼리 매개변수를 사용합니다.
62.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| beanName | 필요한 빈의 이름 설정 | 문자열 |
62.2.2. 쿼리 매개변수 (5 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 방법 (producer) | 빈에서 호출할 메서드의 이름을 설정합니다. | 문자열 | |
| cache (advanced) | 이 기능을 활성화하면 Camel이 첫 번째 레지스트리 조회 결과를 캐시합니다. 레지스트리의 빈이 Singleton 범위로 정의된 경우 캐시를 활성화할 수 있습니다. | false | boolean |
| multiParameterArray (advanced) | 더 이상 사용되지 않는 방법 메시지 본문에서 전달되는 매개 변수를 처리하는 방법; true인 경우 메시지 본문이 매개 변수의 배열이어야 합니다. 참고: 이 옵션은 Camel에 의해 내부적으로 사용되며 최종 사용자가 사용할 수 없습니다. 사용 중단 참고: 이 옵션은 Camel에 의해 내부적으로 사용되며 최종 사용자가 사용할 수 없습니다. | false | boolean |
| 매개변수 (고급) | 빈에서 추가 속성을 구성하는 데 사용됩니다. | map | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
62.3. 사용 링크 복사링크가 클립보드에 복사되었습니다!
대신 정규화된 class name을 지정하면 빈 구성 요소로만 클래스 구성 요소를 사용할 수 있습니다.
예를 들어 MyFooBean 을 사용하려면 다음과 같이 수행해야 합니다.
from("direct:start").to("class:org.apache.camel.component.bean.MyFooBean").to("mock:result");
MyFooBean 에서 호출할 메서드를 지정할 수도 있습니다(예: hello ):
from("direct:start").to("class:org.apache.camel.component.bean.MyFooBean?method=hello").to("mock:result");
62.4. 생성된 인스턴스에서 속성 설정 링크 복사링크가 클립보드에 복사되었습니다!
끝점 uri에서 생성된 인스턴스에 설정할 속성을 지정할 수 있습니다(예: setPrefix 메서드의 경우).
// Camel 2.17 onwards
from("direct:start")
.to("class:org.apache.camel.component.bean.MyPrefixBean?bean.prefix=Bye")
.to("mock:result");
// Camel 2.16 and older
from("direct:start")
.to("class:org.apache.camel.component.bean.MyPrefixBean?prefix=Bye")
.to("mock:result");
또한 # 구문을 사용하여 레지스트리에서 조회할 속성을 참조할 수도 있습니다.
// Camel 2.17 onwards
from("direct:start")
.to("class:org.apache.camel.component.bean.MyPrefixBean?bean.cool=#foo")
.to("mock:result");
// Camel 2.16 and older
from("direct:start")
.to("class:org.apache.camel.component.bean.MyPrefixBean?cool=#foo")
.to("mock:result");
레지스트리의 빈을 id foo 로 조회하고 MyPrefixBean 클래스의 생성된 인스턴스에서 setCool 메서드를 호출합니다.
TIP: 클래스 구성 요소 가 거의 동일한 방식으로 작동하므로 빈 구성 요소에서 자세히 설명합니다.
62.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
- 빈
- 빈 바인딩
- 빈 통합
63장. CMIS 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.11로 사용 가능
cmis 구성 요소는 Apache Chemistry 클라이언트 API를 사용하며 CMIS 호환 콘텐츠 리포지토리에서 노드를 추가하거나 읽을 수 있습니다.
63.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
cmis://cmisServerUrl[?options]
다음 형식 ?options=value&option2=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
63.2. CMIS 옵션 링크 복사링크가 클립보드에 복사되었습니다!
CMIS 구성 요소는 아래 나열된 두 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| sessionFacadeFactory (일반) | 사용자 지정 CMISSessionFacadeFactory를 사용하여 CMISSessionFacade 인스턴스를 만듭니다. | CMISSessionFacade Factory | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
CMIS 끝점은 URI 구문을 사용하여 구성됩니다.
cmis:cmsUrl
다음 경로 및 쿼리 매개변수를 사용합니다.
63.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| cmsUrl | cmis 저장소에 필요한 URL | 문자열 |
63.2.2. 쿼리 매개변수(13 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| pageSize (일반) | 페이지당 검색할 노드 수 | 100 | int |
| ReadContent (일반) | true로 설정하면 속성 외에 문서 노드의 콘텐츠가 검색됩니다. | false | boolean |
| readCount (일반) | 읽을 최대 노드 수 | int | |
| repositoryId (common) | 사용할 저장소의 ID입니다. 첫 번째 사용 가능한 리포지토리를 지정하지 않은 경우 | 문자열 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 쿼리 (consumer) | 리포지토리에 대해 실행할 cmis 쿼리입니다. 지정하지 않으면 소비자는 콘텐츠 트리를 재귀적으로 반복하여 콘텐츠 리포지토리에서 모든 노드를 검색합니다. | 문자열 | |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| queryMode (producer) | true인 경우, 는 메시지 본문에서 cmis 쿼리를 실행하고 결과를 반환합니다. 그렇지 않으면 cmis 저장소에 노드를 만듭니다. | false | boolean |
| sessionFacadeFactory (advanced) | 사용자 지정 CMISSessionFacadeFactory를 사용하여 CMISSessionFacade 인스턴스를 만듭니다. | CMISSessionFacade Factory | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| 암호 (보안) | cmis 저장소의 암호 | 문자열 | |
| 사용자 이름 (보안) | cmis 리포지토리의 사용자 이름 | 문자열 |
63.3. 사용법 링크 복사링크가 클립보드에 복사되었습니다!
63.3.1. 생산자가 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| header | 기본값 | 설명 |
|---|---|---|
|
|
| 실행 중에 사용할 현재 폴더입니다. 지정하지 않으면 루트 폴더를 사용합니다. |
|
|
|
|
|
|
| 읽을 최대 노드 수입니다. |
|
|
|
|
|
|
|
|
|
|
| 노드의 유형입니다. |
|
|
| 문서에 설정할 mimetype |
63.3.2. Producer 작업을 쿼리하는 동안 메시지 헤더 설정 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
|
|
| 쿼리에서 반환된 노드 수입니다. |
메시지 본문에는 맵의 각 항목이 cmis 속성 및 해당 값인 맵 목록이 포함됩니다. CamelCMISRetrieveContent 헤더가 true로 설정된 경우 CamelCMISContent 키의 맵의 추가 항목에는 문서 유형 문서 유형의 InputStream 이 포함됩니다.
63.4. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Maven 사용자는 다음 종속성을 pom.xml에 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cmis</artifactId>
<version>${camel-version}</version>
</dependency>
여기서 ${camel-version}은 Camel의 실제 버전(2.11 이상)으로 교체해야 합니다.
63.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
64장. CM SMS 게이트웨이 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.18로 사용 가능
Camel-Cm-Sms 는 [CM SMS 게이트웨이](https://www.cmtelecom.com위한 Apache Camel 구성 요소입니다.
이를 통해 CM SMS API를 camel 구성 요소로 애플리케이션에 통합할 수 있습니다.
유효한 계정이 있어야 합니다. 자세한 내용은 CM Telecom 에서 확인할 수 있습니다.
cm-sms://sgw01.cm.nl/gateway.ashx?defaultFrom=DefaultSender&defaultMaxNumberOfParts=8&productToken=xxxxx
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cm-sms</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
64.1. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
CM SMS 게이트웨이 구성 요소에는 옵션이 없습니다.
CM SMS 게이트웨이 끝점은 URI 구문을 사용하여 구성됩니다.
cm-sms:host
다음 경로 및 쿼리 매개변수를 사용합니다.
64.1.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| host | 스키마가 포함된 필수 SMS 공급자 호스트 | 문자열 |
64.1.2. 쿼리 매개변수 (5 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| defaultFrom (producer) | 보낸 사람 이름입니다. 최대 길이는 11자입니다. | 문자열 | |
| defaultMaxNumberOfParts (producer) | 다중 파트 메시지인 경우 최대 번호가 적용됩니다. 메시지는 잘릴 수 있습니다. 기술적으로 게이트웨이는 먼저 메시지가 160자보다 큰지 확인합니다. 이 경우 메시지는 이러한 매개 변수에 의해 제한되는 153자 부분으로 잘립니다. | 8 | int |
| productToken (producer) | 필수 항목: 사용할 고유 토큰 | 문자열 | |
| TestConnectionOnStartup (producer) | 시작 시 SMS 게이트웨이에 대한 연결을 테스트할지 여부 | false | boolean |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
64.2. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
이 프로젝트 를 통해 camel-cm-sms를 camel 경로에 통합할 수 있는 방법을 확인할 수 있습니다.
65장. CoAP 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.16에서 사용 가능
Camel-CoAP 는 시스템 간 작업을 위한 경량 REST 유형 프로토콜인 CoAP와 함께 작업할 수 있는 Apache Camel 구성 요소입니다. CoAP, Constrained Application Protocol은 제한된 노드 및 제한된 네트워크와 함께 사용할 수 있는 특수화된 웹 전송 프로토콜이며 RFC 7252를 기반으로 합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-coap</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
65.1. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
CoAP 구성 요소에는 옵션이 없습니다.
CoAP 엔드포인트는 URI 구문을 사용하여 구성됩니다.
coap:uri
다음 경로 및 쿼리 매개변수를 사용합니다.
65.1.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| uri | CoAP 끝점의 URI | URI |
65.1.2. 쿼리 매개변수 (5 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| coapMethodRestrict (consumer) | CoAP 소비자가 바인딩할 메서드의 쉼표로 구분된 목록입니다. 기본값은 모든 메서드(DELETE, GET, POST, PUT)에 바인딩하는 것입니다. | 문자열 | |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
65.2. 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 유형 | 설명 |
|---|---|---|
|
|
| CoAP 생산자가 대상 CoAP 서버 URI를 호출할 때 사용해야 하는 요청 방법입니다. 유효한 옵션은 DELETE, GET, PING, POST & PUT입니다. |
|
|
| 외부 서버에서 보낸 CoAP 응답 코드입니다. 각 코드가 무엇을 의미하는지에 대한 자세한 내용은 RFC 7252를 참조하십시오. |
|
|
| 호출할 CoAP 서버의 URI입니다. 는 엔드포인트에 직접 구성된 기존 URI를 재정의합니다. |
65.2.1. CoAP 생산자 요청 방법 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 규칙은 CoAP 생산자가 대상 URI를 호출하는 데 사용할 요청 방법을 결정합니다.
-
CamelCoapMethod헤더의 값 - 대상 CoAP 서버 URI에 쿼리 문자열이 제공되는 경우 GET
- 메시지 교환 본문이 null이 아닌 경우 POST 입니다.
- 그렇지 않으면 GET 입니다.
66장. 일정 언어 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 1.5로 사용 가능
Constant Expression Language는 상수 문자열을 표현식 유형으로 지정하는 방법일 뿐입니다.
이는 경로를 시작하는 동안 한 번만 설정된 고정 상수 값이며 라우팅 중에 동적 값을 원하는 경우에는 사용하지 마십시오.
66.1. 일정 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Constant 언어는 아래 나열된 1 개의 옵션을 지원합니다.
| 이름 | 기본값 | Java Type | 설명 |
|---|---|---|---|
| trim |
|
| 선행 공백과 후행 공백과 줄 바꿈을 제거할 값을 조정할지 여부입니다. |
66.2. 사용 예 링크 복사링크가 클립보드에 복사되었습니다!
Spring DSL의 setHeader 요소는 다음과 같은 상수 표현식을 사용할 수 있습니다.
<route>
<from uri="seda:a"/>
<setHeader headerName="theHeader">
<constant>the value</constant>
</setHeader>
<to uri="mock:b"/>
</route>
이 경우 seda:a Endpoint에서 들어오는 Message에는 'theHeader' 헤더가 상수 값 'the value'로 설정됩니다.
Java DSL을 사용하는 것과 동일한 예입니다.
from("seda:a")
.setHeader("theHeader", constant("the value"))
.to("mock:b");
66.3. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Constant 언어는 camel-core 의 일부입니다.
67장. CometD Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.0에서 사용 가능
cometd: 구성 요소는 cometd/bayeux 프로토콜 의 jetty 구현 작업을 위한 전송입니다.
이 구성 요소를 dojo Toolkit 라이브러리와 함께 사용하면 AJAX 기반 메커니즘을 사용하여 Camel 메시지를 브라우저로 직접 푸시할 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cometd</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
67.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
cometd://host:port/channelName[?options]
channelName 은 Camel 엔드포인트에서 서브스크립션할 수 있는 주제를 나타냅니다.
67.2. 예제 링크 복사링크가 클립보드에 복사되었습니다!
cometd://localhost:8080/service/mychannel
cometds://localhost:8443/service/mychannel
여기서 cometds: SSL 구성된 끝점을 나타냅니다.
67.3. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
CometD 구성 요소는 아래에 나열된 8 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| sslKeyPassword (보안) | SSL을 사용하는 경우 키 저장소의 암호입니다. | 문자열 | |
| sslPassword (보안) | SSL을 사용하는 경우 암호입니다. | 문자열 | |
| sslKeystore (보안) | 키 저장소 경로입니다. | 문자열 | |
| SecurityPolicy (보안) | 사용자 정의 구성된 SecurityPolicy를 사용하여 권한 부여 제어 | SecurityPolicy | |
| 확장 (공용) | 들어오고 나가는 요청을 수정할 수 있는 사용자 정의 BayeuxServer.Extension 목록을 사용하려면 다음을 수행합니다. | list | |
| sslContextParameters (security) | SSLContextParameters를 사용하여 보안 구성 | SSLContextParameters | |
| useGlobalSslContext 매개변수 (보안) | 글로벌 SSL 컨텍스트 매개 변수의 사용을 활성화합니다. | false | boolean |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
CometD 엔드포인트는 URI 구문을 사용하여 구성됩니다.
cometd:host:port/channelName
다음 경로 및 쿼리 매개변수를 사용합니다.
67.3.1. 경로 매개 변수(3 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| host | 필수 호스트 이름 | 문자열 | |
| port | 필수 호스트 포트 번호 | int | |
| channelName | 필수 channelName은 Camel 엔드포인트에서 서브스크립션할 수 있는 주제를 나타냅니다. | 문자열 |
67.3.2. 쿼리 매개변수(16 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| allowedOrigins (common) | CrosssOriginFilterOn이 true인 경우 crosssOriginFilterOn을 지원하는 origins 도메인 | * | 문자열 |
| baseResource (common) | 웹 리소스 또는 classpath의 루트 디렉터리입니다. 구성 요소가 파일 시스템 또는 classpath에서 리소스를 로드하려면 프로토콜 file: 또는 classpath:를 사용합니다. classpath는 리소스가 jar에 패키지된 OSGI 배포에 필요합니다. | 문자열 | |
| crossOriginFilterOn (일반) | true인 경우 서버는 도메인 간 필터링을 지원합니다. | false | boolean |
| filterPath (common) | filterPath는 CrossOriginFilterOn이 true인 경우 CrossOriginFilterOn에서 사용합니다. | 문자열 | |
| 간격 (일반) | 클라이언트 측 폴링 시간(밀리초)입니다. 클라이언트에서 다시 연결 대기 시간 | int | |
| jsonCommented (일반) | true인 경우 서버는 주석에서 JSON을 래핑하고 주석에 JSON 래핑을 생성합니다. 이는 Ajax Hijacking에 대한 방어입니다. | true | boolean |
| loglevel (common) | 로깅 수준. 0=none, 1=info, 2=debug. | 1 | int |
| maxInterval (common) | 최대 클라이언트 쪽 폴링 시간(밀리초)입니다. 이 시점에 연결이 수신되지 않으면 클라이언트가 제거됩니다. | 30000 | int |
| multiFrameInterval (common) | 동일한 브라우저에서 여러 개의 연결이 감지되는 경우 클라이언트 측 폴링 시간 초과입니다. | 1500 | int |
| 시간 초과 (일반) | 서버 측 폴링 시간 초과(밀리초)입니다. 이는 서버가 응답하기 전에 다시 연결 요청을 유지하는 시간입니다. | 240000 | int |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| sessionHeadersEnabled (consumer) | 수신 요청을 위해 Camel Message를 생성할 때 Camel 메시지에 서버 세션 헤더를 포함할지 여부입니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| disconnectLocalSession (producer) | 메시지를 채널에 게시한 후 로컬 세션의 연결을 끊을지 여부입니다. 로컬 세션의 연결을 해제하는 것은 기본적으로 CometD에 의해 방해되지 않으므로 메모리가 부족해질 수 있습니다. | false | boolean |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
다음 형식 ?option=value&option=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
매개 변수를 전달하는 방법에 대한 몇 가지 예는 다음과 같습니다.
파일(Web Application 디렉토리 -Cinder cometd://localhost:8080?resourceBase=file./webapp
classpath의 경우)의 경우(예: 웹 리소스가 webapp 폴더 -qcow cometd://localhost:80?resource=classpath:80?resource=classpath:webapp 내에 패키징된 경우)
67.4. 인증 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.8 사용
여기에 설명된대로 인증을 사용할 수 있는 'CometdComponent's 사용자 정의 's를 구성할 수 있습니다.
SecurityPolicy 및 Extension
67.5. Cometd Component에 대한 SSL 설정 링크 복사링크가 클립보드에 복사되었습니다!
67.5.1. JSSE 구성 유틸리티 사용 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.9부터 Cometd 구성 요소는 Camel JSSE 구성 유틸리티를 통해 SSL/TLS 구성을 지원합니다. 이 유틸리티는 작성하는 데 필요한 구성 요소별 코드의 양을 크게 줄이고 엔드포인트 및 구성 요소 수준에서 구성할 수 있습니다. 다음 예제에서는 Cometd 구성 요소와 함께 유틸리티를 사용하는 방법을 보여줍니다. CometdComponent에서 SSL을 구성해야 합니다.
구성 요소의 프로그래밍 구성
KeyStoreParameters ksp = new KeyStoreParameters();
ksp.setResource("/users/home/server/keystore.jks");
ksp.setPassword("keystorePassword");
KeyManagersParameters kmp = new KeyManagersParameters();
kmp.setKeyStore(ksp);
kmp.setKeyPassword("keyPassword");
TrustManagersParameters tmp = new TrustManagersParameters();
tmp.setKeyStore(ksp);
SSLContextParameters scp = new SSLContextParameters();
scp.setKeyManagers(kmp);
scp.setTrustManagers(tmp);
CometdComponent commetdComponent = getContext().getComponent("cometds", CometdComponent.class);
commetdComponent.setSslContextParameters(scp);
끝점의 Spring DSL 기반 구성
...
<camel:sslContextParameters
id="sslContextParameters">
<camel:keyManagers
keyPassword="keyPassword">
<camel:keyStore
resource="/users/home/server/keystore.jks"
password="keystorePassword"/>
</camel:keyManagers>
<camel:trustManagers>
<camel:keyStore
resource="/users/home/server/keystore.jks"
password="keystorePassword"/>
</camel:keyManagers>
</camel:sslContextParameters>...
<bean id="cometd" class="org.apache.camel.component.cometd.CometdComponent">
<property name="sslContextParameters" ref="sslContextParameters"/>
</bean>
...
<to uri="cometds://127.0.0.1:443/service/test?baseResource=file:./target/test-classes/webapp&timeout=240000&interval=0&maxInterval=30000&multiFrameInterval=1500&jsonCommented=true&logLevel=2"/>...
67.6. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
68장. Consul 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.18로 사용 가능
Consul 구성 요소는 애플리케이션을 Consul과 통합하기 위한 구성 요소입니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-consul</artifactId>
<version>${camel-version}</version>
</dependency>
68.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
consul://domain?[options]
다음 형식으로 URI에 쿼리 옵션을 추가할 수 있습니다.
?option=value&option=value&...
68.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Consul 구성 요소는 아래에 나열된 9 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| URL (공용) | Consul 에이전트 URL | 문자열 | |
| 데이터 센터 (공용) | 데이터 센터 | 문자열 | |
| sslContextParameters (common) | org.apache.camel.util.jsse.SSLContextParameters 인스턴스를 사용하는 SSL 구성입니다. | SSLContextParameters | |
| useGlobalSslContext 매개변수 (보안) | 글로벌 SSL 컨텍스트 매개 변수의 사용을 활성화합니다. | false | boolean |
| aclToken (일반) | Consul과 함께 사용할 ACL 토큰 설정 | 문자열 | |
| 사용자 이름 (공용) | 기본 인증에 사용할 사용자 이름 설정 | 문자열 | |
| 암호 (공용) | 기본 인증에 사용할 암호를 설정합니다. | 문자열 | |
| 구성 (고급) | 끝점 간에 공유되는 공통 구성을 설정합니다. | ConsulConfiguration | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Consul 엔드포인트는 URI 구문을 사용하여 구성됩니다.
consul:apiEndpoint
다음 경로 및 쿼리 매개변수를 사용합니다.
68.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| apiEndpoint | 필수 API 끝점 | 문자열 |
68.2.2. 쿼리 매개변수 (4 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
68.3. headers 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 유형 | 설명 |
|---|---|---|
| CamelConsulAction | 문자열 | Producer 작업 |
| CamelConsulKey | 문자열 | 작업을 적용해야 하는 키입니다. |
| CamelConsulEventId | 문자열 | 이벤트 ID(소비자만 해당) |
| CamelConsulEventName | 문자열 | 이벤트 이름(consumer만 해당) |
| CamelConsulEventLTime | long | 이벤트 LTime |
| CamelConsulNodeFilter | 문자열 | Node 필터 |
| CamelConsulTagFilter | 문자열 | 태그 필터 |
| CamelConsulSessionFilter | 문자열 | 세션 필터 |
| CamelConsulVersion | int | 데이터 버전 |
| CamelConsulFlags | long | 값과 연결된 플래그 |
| CamelConsulCreateIndex | long | 항목이 생성될 때 표시되는 내부 인덱스 값입니다. |
| CamelConsulLockIndex | long | 잠금에서 이 키를 성공적으로 취득한 횟수 |
| CamelConsulModifyIndex | long | 이 키를 수정한 마지막 인덱스입니다. |
| CamelConsulOptions | 개체 | 요청과 관련된 옵션 |
| CamelConsulResult | boolean | 응답의 결과가 있는 경우 True |
| CamelConsulSession | 문자열 | 세션 ID |
| CamelConsulValueAsString | boolean | KV 엔드포인트의 Consul i.e.에서 문자열로 검색된 값을 변환하려면 다음을 수행하십시오. |
69장. Control Bus 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.11로 사용 가능
EIP 패턴의 Control Bus 를 사용하면 통합 시스템이 프레임워크 내에서 모니터링 및 관리할 수 있습니다.
Control Bus를 사용하여 엔터프라이즈 통합 시스템 관리. Control Bus는 애플리케이션 데이터에 사용되는 동일한 메시징 메커니즘을 사용하지만 별도의 채널을 사용하여 메시지 흐름과 관련된 구성 요소 관리와 관련된 데이터를 전송합니다.
Camel에서는 JMX를 사용하거나 CamelContext 에서 Java API를 사용하거나 org.apache.camel.api.management 패키지에서 Java API를 사용하거나 여기에 예제가 있는 event notifier를 사용하여 관리 및 모니터링할 수 있습니다.
Camel 2.11 이후부터는 그에 따라 반응하는 제어 버스 끝점에 메시지를 보낼 수 있는 새로운 ControlBus 구성 요소 를 도입했습니다.
69.1. ControlBus Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.11에서 사용 가능
controlbus: 구성 요소는 Control Bus EIP 패턴을 기반으로 Camel 애플리케이션을 쉽게 관리할 수 있습니다. 예를 들어, 메시지를 끝점으로 보내면 경로의 라이프사이클을 제어하거나 성능 통계를 수집할 수 있습니다.
controlbus:command[?options]
임의의 문자열이 될 수 있는 명령은 사용할 명령 유형을 식별합니다.
69.2. 명령 링크 복사링크가 클립보드에 복사되었습니다!
| 명령 | 설명 |
|---|---|
|
|
|
|
| 메시지 본문을 평가하는 데 사용할 언어 를 지정할 수 있습니다. 평가에서 결과가 있는 경우 결과는 메시지 본문에 배치됩니다. |
69.3. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Control Bus 구성 요소에는 옵션이 없습니다.
Control Bus 엔드포인트는 URI 구문을 사용하여 구성됩니다.
controlbus:command:language
다음 경로 및 쿼리 매개변수를 사용합니다.
69.3.1. 경로 매개 변수(2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| command | 필수 명령은 경로 또는 언어일 수 있습니다. | 문자열 | |
| language | 메시지 본문을 평가하는 데 사용할 언어의 이름을 지정할 수 있습니다. 평가에서 결과가 있는 경우 결과는 메시지 본문에 배치됩니다. | 언어 |
69.3.2. 쿼리 매개변수(6 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 작업 (producer) | start, stop 또는 status일 수 있는 작업을 나타냅니다. 경로를 시작하거나 중지하려면 경로 상태를 메시지 본문에 출력으로 가져옵니다. Camel 2.11.1에서 일시 중지 및 재개를 사용하여 경로를 일시 중지하거나 재개할 수 있습니다. 또한 Camel 2.11.1부터 stats를 사용하여 XML 형식으로 반환된 성능 static을 가져올 수 있습니다. routeId 옵션은 routeId가 정의되지 않은 경우 전체 CamelContext에 대한 통계를 얻을 수 있는 경로를 정의하는 데 사용할 수 있습니다. 재시작 작업이 경로를 다시 시작합니다. | 문자열 | |
| async (producer) | 제어 버스 작업을 비동기적으로 실행할지 여부입니다. 중요: 이 옵션을 사용하도록 설정한 경우 작업의 모든 결과는 Exchange에 설정되지 않습니다. 이는 작업을 동기적으로 실행하는 경우에만 가능합니다. | false | boolean |
| loggingLevel (producer) | 작업 완료 시 또는 작업을 처리하는 동안 예외가 발생한 경우 로깅에 사용되는 로깅 수준입니다. | INFO | LoggingLevel |
| restartDelay (producer) | 경로를 다시 시작할 때 사용할 밀리코어의 지연입니다. | 1000 | int |
| routeId (producer) | ID로 경로를 지정하려면 다음을 수행합니다. 현재 special 키워드는 현재 경로를 나타냅니다. | 문자열 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
다음 형식 ?option=value&option=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
69.4. 경로 명령 사용 링크 복사링크가 클립보드에 복사되었습니다!
route 명령을 사용하면 지정된 경로에서 일반적인 작업을 쉽게 수행할 수 있습니다(예: 경로를 시작하는 경우 빈 메시지를 이 끝점으로 보낼 수 있습니다.
template.sendBody("controlbus:route?routeId=foo&action=start", null);
경로 상태를 가져오려면 다음을 수행합니다.
String status = template.requestBody("controlbus:route?routeId=foo&action=status", null, String.class);
69.5. 성능 통계 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.11.1에서 사용 가능
이를 위해서는 JMX를 기본적으로 활성화(기본적으로) 활성화해야 하며, 경로당 성능 정적 또는 CamelContext를 가져올 수 있습니다. 예를 들어 foo라는 경로의 static을 가져오려면 다음을 수행할 수 있습니다.
String xml = template.requestBody("controlbus:route?routeId=foo&action=stats", null, String.class);
반환된 static은 XML 형식입니다. ManagedRouteMBean 에서 dumpRouteStatsAsXml 작업을 통해 JMX에서 얻을 수 있는 동일한 데이터를 가져옵니다.
전체 CamelContext에 대한 static을 얻으려면 아래와 같이 routeId 매개변수를 생략하면 됩니다.
String xml = template.requestBody("controlbus:route?action=stats", null, String.class);
69.6. 간단한 언어 사용 링크 복사링크가 클립보드에 복사되었습니다!
예를 들어 특정 경로를 중지하기 위해 제어 버스와 함께 Simple 언어를 사용할 수 있습니다. 다음 메시지가 포함된 "controlbus:language:simple" 엔드포인트에 메시지를 보낼 수 있습니다.
template.sendBody("controlbus:language:simple", "${camelContext.stopRoute('myRoute')}");
이는 void 작업이므로 결과가 반환되지 않습니다. 그러나 경로 상태를 원하는 경우 다음을 수행할 수 있습니다.
String status = template.requestBody("controlbus:language:simple", "${camelContext.getRouteStatus('myRoute')}", String.class);
경로의 라이프사이클을 제어하기 위해 route 명령을 사용하는 것이 더 쉽습니다. language 명령을 사용하면 Groovy 와 같은 강력한 성능을 갖춘 언어 스크립트를 실행하거나 간단 한 언어를 확장할 수 있습니다.
예를 들어 Camel 자체를 종료하려면 다음을 수행할 수 있습니다.
template.sendBody("controlbus:language:simple?async=true", "${camelContext.stop()}");
우리는 async=true 를 사용하여 Camel을 비동기적으로 중지합니다. 그렇지 않으면 컨트롤 버스 구성 요소로 보낸 메시지를 처리하는 동안 Camel을 중지하려고 합니다.
또한 Groovy 등 다른 언어를 사용할 수도 있습니다.
70장. Couchbase 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.19에서 사용 가능
couchbase: 구성 요소를 사용하면 CouchBase 인스턴스를 메시지의 생산자 또는 소비자로 처리할 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-couchbase</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
70.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
couchbase:url
70.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Couchbase 구성 요소에는 옵션이 없습니다.
Couchbase 엔드포인트는 URI 구문을 사용하여 구성됩니다.
couchbase:protocol:hostname:port
다음 경로 및 쿼리 매개변수를 사용합니다.
70.2.1. 경로 매개 변수(3 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 프로토콜 | 사용할 프로토콜 | 문자열 | |
| 호스트 이름 | 사용할 호스트 이름 | 문자열 | |
| port | 사용할 포트 번호 | 8091 | int |
70.2.2. 쿼리 매개변수(47 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 버킷 (공용) | 사용할 버킷 | 문자열 | |
| 키 (일반) | 사용할 키 | 문자열 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| consumerProcessedStrategy (consumer) | 사용할 소비자 프로세스 전략 정의 | none | 문자열 |
| 내림 차 (consumer) | 이 작업이 내림차순인지 여부를 정의합니다. | false | boolean |
| DesignDocumentName (consumer) | 사용할 디자인 문서 이름입니다. | 맥주 | 문자열 |
| 제한 (소비자) | 사용할 출력 제한 | -1 | int |
| rangeEndKey (consumer) | 최종 키 범위를 정의합니다. | 문자열 | |
| rangeStartKey (consumer) | 시작 키의 범위를 정의합니다. | 문자열 | |
| sendEmptyMessageWhenIdle (consumer) | 폴링 소비자가 파일을 폴링하지 않은 경우 이 옵션을 활성화하여 빈 메시지( 본문 없음)를 대신 보낼 수 있습니다. | false | boolean |
| 자주 묻 는 질문(FAQ) | 사용할 건너뛰기 정의 | -1 | int |
| viewName (consumer) | 사용할 보기 이름입니다. | brewery_beers | 문자열 |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| pollStrategy (consumer) | 플러그형 org.apache.camel.PollingConsumerPollingStrategy를 사용하면 Camel에서 Exchange를 생성하고 라우팅하기 전에 폴링 작업 중에 일반적으로 발생한 오류 처리를 제어하는 사용자 정의 구현을 제공할 수 있습니다. | PollingConsumerPoll Strategy | |
| autoStartIdForInserts (producer) | 삽입 작업을 수행할 때 자동 시작 Id를 원하는 경우 정의 | false | boolean |
| 작업 (producer) | 수행할 작업 | CCB_PUT | 문자열 |
| persistTo (producer) | 데이터를 보관할 위치 | 0 | int |
| producerRetryAttempts (producer) | 재시도 횟수를 정의합니다. | 2 | int |
| producerRetryPause (producer) | 다른 시도 간 재시도 일시 중지 정의 | 5000 | int |
| replicateTo (producer) | 데이터 복제 위치 | 0 | int |
| startingIdForInsertsFrom (producer) | 삽입 작업을 수행하는 시작 Id를 정의합니다. | long | |
| additionalHosts (advanced) | 추가 호스트 | 문자열 | |
| maxReconnectDelay (advanced) | 다시 연결 중 최대 지연 정의 | 30000 | long |
| obsPollInterval (advanced) | 관찰 폴링 간격을 정의합니다. | 400 | long |
| obsTimeout (advanced) | 관찰 시간 제한 정의 | -1 | long |
| opQueueMaxBlockTime (advanced) | 작업이 차단된 큐에 있을 수 있는 최대 시간을 정의합니다. | 10000 | long |
| opTimeOut (advanced) | 작업 시간 제한 정의 | 2500 | long |
| readBufferSize (advanced) | 버퍼 크기를 정의합니다. | 16384 | int |
| shouldOptimize (advanced) | 최적화를 사용하기를 원하는 경우 정의 | false | boolean |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| timeoutExceptionThreshold (advanced) | 시간 초과 예외를 throw하기 위한 임계값 정의 | 998 | int |
| backoffErrorThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 오류 폴링(일부 오류 발생) 수입니다. | int | |
| backoffIdleThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 유휴 폴링 수입니다. | int | |
| backoffMultiplier (scheduler) | 예약된 폴링 소비자 백오프가 연속된 여러 개의 유휴/errors가 있는 경우 해당 행에 사용할 수 있습니다. multiplier는 다음 실제 시도가 다시 발생하기 전에 건너뛸 폴링 수입니다. 이 옵션을 사용하는 경우 backoffIdleThreshold 및/또는 backoffErrorThreshold도 구성해야 합니다. | int | |
| 지연 (scheduler) | 다음 폴링보다 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 500 | long |
| greedy (scheduler) | greedy가 활성화된 경우 ScheduledPollConsumer는 이전 실행이 1개 이상의 메시지를 폴링하면 즉시 다시 실행됩니다. | false | boolean |
| initialDelay (scheduler) | 첫 번째 폴링이 시작되기 전까지의 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 1000 | long |
| runLoggingLevel (scheduler) | 소비자는 폴링할 때 시작/완료 로그 행을 기록합니다. 이 옵션을 사용하면 로깅 수준을 구성할 수 있습니다. | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 소비자에 사용할 사용자 지정/공유 스레드 풀을 구성할 수 있습니다. 기본적으로 각 소비자는 자체 스레드 스레드 풀이 있습니다. | ScheduledExecutor Service | |
| 스케줄러 (scheduler) | camel-spring 또는 camel-quartz2 구성 요소에서 cron 스케줄러를 사용하려면 | none | ScheduledPollConsumer Scheduler |
| 스케줄러 속성 (scheduler) | 사용자 지정 스케줄러 또는 Quartz2, Spring 기반 스케줄러를 사용할 때 추가 속성을 구성하려면 다음을 수행합니다. | map | |
| StartScheduler (scheduler) | 스케줄러가 자동으로 시작되어야 하는지 여부입니다. | true | boolean |
| timeUnit (scheduler) | initialDelay 및 지연 옵션의 시간 단위입니다. | 밀리초 | TimeUnit |
| UseFixedDelay (scheduler) | 고정 지연 또는 고정 속도가 사용되는 경우 제어합니다. 자세한 내용은 JDK의 ScheduledExecutorService를 참조하십시오. | true | boolean |
| 암호 (보안) | 사용할 암호 | 문자열 | |
| 사용자 이름 (보안) | 사용할 사용자 이름 | 문자열 |
71장. CouchDB Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.11로 사용 가능
couchdb: 구성 요소를 사용하면 CouchDB 인스턴스를 메시지의 생산자 또는 소비자로 처리할 수 있습니다. 경량 LightCouch API를 사용하면 이 도구 구성 요소에는 다음과 같은 기능이 있습니다.
- 소비자로서 삽입, 업데이트, 삭제 및 메시지 전송에 대한 couch changesets를 통해 camel 경로에 이를 게시합니다.
- 생산자로서 Camel 2.18 삭제에서 저장, 업데이트 및 ( DELETE 값이 있는 CouchDbMethod를 사용하여) 문서를 공동 저장할 수 있습니다.
- 필요에 따라 많은 끝점을 지원할 수 있으며, 예를 들어 여러 인스턴스에서 여러 데이터베이스를 사용할 수 있습니다.
- 삭제에만 이벤트 트리거를 지정할 수 있으며, 삽입/업데이트 또는 모두(기본값)만 가능합니다.
- sequenceId, 문서 버전, 문서 ID 및 HTTP 메서드 유형에 대해 설정된 헤더입니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-couchdb</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
71.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
couchdb:http://hostname[:port]/database?[options]
여기서 hostname 은 실행 중인 couchdb 인스턴스의 호스트 이름입니다. port는 선택 사항이며 지정하지 않으면 기본값은 5984입니다.
71.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
CouchDB 구성 요소에는 옵션이 없습니다.
CouchDB 엔드포인트는 URI 구문을 사용하여 구성됩니다.
couchdb:protocol:hostname:port/database
다음 경로 및 쿼리 매개변수를 사용합니다.
71.2.1. 경로 매개 변수 (4 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 프로토콜 | 필수 데이터베이스 통신에 사용할 프로토콜입니다. | 문자열 | |
| 호스트 이름 | 실행 중인 couchdb 인스턴스의 필수 호스트 이름 | 문자열 | |
| port | 실행 중인 couchdb 인스턴스의 포트 번호 | 5984 | int |
| database | 사용할 데이터베이스 의 이름입니다.The name of the database to use. | 문자열 |
71.2.2. 쿼리 매개변수(12 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| createDatabase (일반) | 데이터베이스가 아직 없는 경우 해당 데이터베이스를 생성합니다. | false | boolean |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 삭제 (consumer) | 문서 삭제가 이벤트로 게시됩니다. | true | boolean |
| 하트비트 (consumer) | 소켓을 밀리코어로 유지하기 위해 빈 메시지를 보내는 빈도 | 30000 | long |
| 이후 ( consumer) | 지정된 업데이트 시퀀스 직후 변경 내용 추적을 시작합니다. 기본값 null은 최신 시퀀스에서 모니터링을 시작합니다. | 문자열 | |
| 스타일 (consumer) | 변경 배열에 반환되는 버전 수를 지정합니다. 기본 main_only는 현재 승리된 버전만 반환합니다. all_docs는 모든 리프 버전 ( 충돌 및 삭제된 이전 충돌 포함)을 반환합니다. | main_only | 문자열 |
| 업데이트 (consumer) | 문서 삽입/업데이트는 이벤트로 게시 | true | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| 암호 (보안) | 인증된 데이터베이스의 암호 | 문자열 | |
| 사용자 이름 (보안) | 인증된 데이터베이스의 경우 사용자 이름 | 문자열 |
71.3. headers 링크 복사링크가 클립보드에 복사되었습니다!
다음 헤더는 메시지 전송 중에 교환에 설정됩니다.
| 속성 | 값 |
|---|---|
|
| 메시지에서 가져온 데이터베이스입니다. |
|
| Couchdb changeset 업데이트/삭제 메시지의 시퀀스 번호 |
|
| couchdb 문서 ID |
|
| couchdb 문서 개정 |
|
| 방법(삭제/업데이트) |
헤더는 메시지가 수신되면 소비자가 설정합니다. 또한 삽입/업데이트가 완료되면 다운스트림 프로세서의 헤더도 설정합니다. 생산자보다 먼저 설정된 헤더는 무시됩니다. 예를 들어 CouchDbId를 헤더로 설정하면 삽입용 id로 사용되지 않는 경우 문서의 ID가 사용됩니다.
71.4. 메시지 본문 링크 복사링크가 클립보드에 복사되었습니다!
구성 요소는 삽입할 문서로 메시지 본문을 사용합니다. 본문이 String의 인스턴스이면 삽입하기 전에 GSON 개체로 마샬링됩니다. 즉, 문자열이 유효한 JSON이어야 합니다. 그렇지 않으면 삽입/업데이트가 실패합니다. 본문이 com.google.gson.JsonElement의 인스턴스인 경우 그대로 삽입됩니다. 그렇지 않으면 생산자가 지원되지 않는 본문 유형의 예외를 throw합니다.
71.5. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
예를 들어 포트 9999에서 로컬로 실행되는 CouchDB 인스턴스에서 모든 삽입, 업데이트 및 삭제를 사용하려면 다음을 사용할 수 있습니다.
from("couchdb:http://localhost:9999").process(someProcessor);
삭제에만 관심이 있는 경우 다음을 사용할 수 있습니다.
from("couchdb:http://localhost:9999?updates=false").process(someProcessor);
메시지를 문서로 삽입하려면 교환의 본문이 사용됩니다.
from("someProducingEndpoint").process(someProcessor).to("couchdb:http://localhost:9999")
72장. Cassandra CQL 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.15에서 사용 가능
Apache Cassandra 는 상용 하드웨어에서 대량으로 처리하도록 설계된 오픈 소스 NoSQL 데이터베이스입니다. Amazon의 DynamoDB와 마찬가지로 Cassandra는 단일 장애 지점과 고가용성을 방지하기 위해 피어 투 피어 및 마스터리스 아키텍처를 보유하고 있습니다. Google의 BigTable과 마찬가지로 Cassandra 데이터는 Thrift RPC API 또는 CQL이라는 SQL 유사 API를 통해 액세스할 수 있는 열 제품군을 사용하여 구성됩니다.
이 구성 요소는 CQL3 API를 사용하는 Cassandra 2.0 이상(Trift API가 아님)을 통합하는 것을 목표로 합니다. 이는 DataStax에서 제공하는 Cassandra Java 드라이버 를 기반으로 합니다.
Maven 사용자는 pom.xml 에 다음 종속성을 추가해야 합니다.
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cassandraql</artifactId>
<version>x.y.z</version>
<!-- use the same version as your Camel core version -->
</dependency>
72.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
엔드포인트는 Cassandra 연결을 시작하거나 기존 연결을 사용할 수 있습니다.
| URI | 설명 |
|---|---|
|
| 테스트용 단일 호스트, 기본 포트 |
|
| 멀티 호스트, 기본 포트 |
|
| 다중 호스트, 사용자 정의 포트 |
|
| 기본 포트 및 키 공간 |
|
| 제공된 세션 참조 |
|
| 제공된 클러스터 참조 |
Cassandra 연결(SSL 옵션, 풀링 옵션, 로드 밸런싱 정책, 재시도 정책, reconnection policy…을 미세 조정)하려면 고유한 클러스터 인스턴스를 생성하고 Camel 엔드포인트에 제공합니다.
72.2. Cassandra 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Cassandra CQL 구성 요소에는 옵션이 없습니다.
Cassandra CQL 엔드포인트는 URI 구문을 사용하여 구성됩니다.
cql:beanRef:hosts:port/keyspace
다음 경로 및 쿼리 매개변수를 사용합니다.
72.2.1. 경로 매개 변수 (4 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| beanRef | bean:id를 사용하여 beanRef가 정의되어 있습니다. | 문자열 | |
| 호스트 | 호스트 이름(s) cassansdra 서버. 여러 호스트는 쉼표로 구분할 수 있습니다. | 문자열 | |
| port | cassansdra 서버의 포트 번호 | 정수 | |
| keyspace | 사용할 키 공간 | 문자열 |
72.2.2. 쿼리 매개변수(29 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 클러스터 (공용) | 클러스터 인스턴스를 사용하려면 (일반적으로 이 옵션을 사용하지 않습니다) | Cluster | |
| clustername (일반) | 클러스터 이름 | 문자열 | |
| consistencyLevel (일반) | 사용할 일관성 수준 | ConsistencyLevel | |
| C QL (일반) | 실행할 CQL 쿼리입니다. CamelCqlQuery 키를 사용하여 메시지 헤더를 재정의할 수 있습니다. | 문자열 | |
| loadBalancingPolicy (일반) | 특정 LoadBalancingPolicy를 사용하려면 | 문자열 | |
| 암호 (공용) | 세션 인증의 암호 | 문자열 | |
| prepareStatements (일반) | PreparedStatements 또는 Regular Statements 사용 여부 | true | boolean |
| resultSetConversionStrategy (common) | ResultSet을 메시지 본문 ALL, LIMIT_10, LIMIT_100…로 변환하는 사용자 정의 클래스를 사용하기 위해 | 문자열 | |
| session (common) | 세션 인스턴스를 사용하려면 (일반적으로 이 옵션을 사용하지 않습니다.) | session | |
| 사용자 이름 (공용) | 세션 인증의 사용자 이름 | 문자열 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| sendEmptyMessageWhenIdle (consumer) | 폴링 소비자가 파일을 폴링하지 않은 경우 이 옵션을 활성화하여 빈 메시지( 본문 없음)를 대신 보낼 수 있습니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| pollStrategy (consumer) | 플러그형 org.apache.camel.PollingConsumerPollingStrategy를 사용하면 Camel에서 Exchange를 생성하고 라우팅하기 전에 폴링 작업 중에 일반적으로 발생한 오류 처리를 제어하는 사용자 정의 구현을 제공할 수 있습니다. | PollingConsumerPoll Strategy | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| backoffErrorThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 오류 폴링(일부 오류 발생) 수입니다. | int | |
| backoffIdleThreshold (scheduler) | 백오프Multipler를 시작하기 전에 발생해야 하는 후속 유휴 폴링 수입니다. | int | |
| backoffMultiplier (scheduler) | 예약된 폴링 소비자 백오프가 연속된 여러 개의 유휴/errors가 있는 경우 해당 행에 사용할 수 있습니다. multiplier는 다음 실제 시도가 다시 발생하기 전에 건너뛸 폴링 수입니다. 이 옵션을 사용하는 경우 backoffIdleThreshold 및/또는 backoffErrorThreshold도 구성해야 합니다. | int | |
| 지연 (scheduler) | 다음 폴링보다 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 500 | long |
| greedy (scheduler) | greedy가 활성화된 경우 ScheduledPollConsumer는 이전 실행이 1개 이상의 메시지를 폴링하면 즉시 다시 실행됩니다. | false | boolean |
| initialDelay (scheduler) | 첫 번째 폴링이 시작되기 전까지의 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 1000 | long |
| runLoggingLevel (scheduler) | 소비자는 폴링할 때 시작/완료 로그 행을 기록합니다. 이 옵션을 사용하면 로깅 수준을 구성할 수 있습니다. | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 소비자에 사용할 사용자 지정/공유 스레드 풀을 구성할 수 있습니다. 기본적으로 각 소비자는 자체 스레드 스레드 풀이 있습니다. | ScheduledExecutor Service | |
| 스케줄러 (scheduler) | camel-spring 또는 camel-quartz2 구성 요소에서 cron 스케줄러를 사용하려면 | none | ScheduledPollConsumer Scheduler |
| 스케줄러 속성 (scheduler) | 사용자 지정 스케줄러 또는 Quartz2, Spring 기반 스케줄러를 사용할 때 추가 속성을 구성하려면 다음을 수행합니다. | map | |
| StartScheduler (scheduler) | 스케줄러가 자동으로 시작되어야 하는지 여부입니다. | true | boolean |
| timeUnit (scheduler) | initialDelay 및 지연 옵션의 시간 단위입니다. | 밀리초 | TimeUnit |
| UseFixedDelay (scheduler) | 고정 지연 또는 고정 속도가 사용되는 경우 제어합니다. 자세한 내용은 JDK의 ScheduledExecutorService를 참조하십시오. | true | boolean |
72.3. messages 링크 복사링크가 클립보드에 복사되었습니다!
72.3.1. 들어오는 메시지 링크 복사링크가 클립보드에 복사되었습니다!
Camel Cassandra 엔드포인트에서는 CQL 문에 쿼리 매개 변수로 바인딩되는 간단한 오브젝트(오브젝트 또는 <Object>)가 많이 필요합니다. 메시지 본문이 null이거나 비어 있는 경우 바인딩 매개 변수 없이 CQL 쿼리가 실행됩니다.
또는 CollectionObject []
headers:
-
CamelCqlQuery(선택 사항,문자열또는 정규식 ): CQL 쿼리는 일반 문자열로 쿼리되거나QueryBuilder를 사용하여 빌드됩니다.
72.3.2. 발신 메시지 링크 복사링크가 클립보드에 복사되었습니다!
Camel Cassandra 엔드포인트는 resultSetConversionStrategy 에 따라 하나 이상의 Cassandra 행 오브젝트를 생성합니다.
-
list<Row> ifresultSetSetConversionStrategyALL또는LIMIT_[0-9]+ -
resultSetConversionStrategy가ONE인 경우 single' Row' -
그 외에는,
resultSetConversionStrategy가ResultSetConversionStrategy의 사용자 지정 구현인 경우
72.4. 리포지토리 링크 복사링크가 클립보드에 복사되었습니다!
Cassandra는 멱등 및 집계 EIP에 대한 메시지 키 또는 메시지를 저장하는 데 사용할 수 있습니다.
Cassandra는 아직 사용 사례를 대기열에 넣는 데 가장 적합한 도구가 아닐 수 있으며, 데이터 세트와 같은 Cassandra 안티 패턴 및 대기열 을 읽는 데 사용할 수 있습니다. 이러한 테이블에 대해 LeveledCompaction과 작은 GC 유예 설정을 사용하여 림핑된 행을 신속하게 제거할 수 있도록 하는 것이 좋습니다.
72.5. 멱등 리포지토리 링크 복사링크가 클립보드에 복사되었습니다!
NamedCassandraIdementRepository 은 다음과 같은 Cassandra 테이블에 메시지 키를 저장합니다.
CAMEL_IDEMPOTENT.cql
CREATE TABLE CAMEL_IDEMPOTENT (
NAME varchar, -- Repository name
KEY varchar, -- Message key
PRIMARY KEY (NAME, KEY)
) WITH compaction = {'class':'LeveledCompactionStrategy'}
AND gc_grace_seconds = 86400;
이 리포지토리 구현에서는 경량 트랜잭션(Compare and Set이라고도 함)을 사용하며 Cassandra 2.0.7 이상이 필요합니다.
또는 CassandraIdempotentRepository 에는 NAME 열이 없으며 다른 데이터 모델을 사용하도록 확장할 수 있습니다.
| 옵션 | 기본값 | 설명 |
|---|---|---|
|
|
| 테이블 이름 |
|
|
| 기본 키 열 |
|
|
리포지토리 이름, | |
|
| 자주하는 질문 | |
|
|
| |
|
|
|
72.6. 집계 리포지터리 링크 복사링크가 클립보드에 복사되었습니다!
NamedCassandraAggregationRepository 은 다음과 같은 Cassandra 테이블의 키와 상관 관계가 있는 교환 기능을 저장합니다.
CAMEL_AGGREGATION.cql
CREATE TABLE CAMEL_AGGREGATION (
NAME varchar, -- Repository name
KEY varchar, -- Correlation id
EXCHANGE_ID varchar, -- Exchange id
EXCHANGE blob, -- Serialized exchange
PRIMARY KEY (NAME, KEY)
) WITH compaction = {'class':'LeveledCompactionStrategy'}
AND gc_grace_seconds = 86400;
또는 CassandraAggregationRepository 에는 NAME 열이 없으며 다른 데이터 모델을 사용하도록 확장할 수 있습니다.
| 옵션 | 기본값 | 설명 |
|---|---|---|
|
|
| 테이블 이름 |
|
|
| 기본 키 열 |
|
|
| 교환 Id 열 |
|
|
| 콘텐츠 열 교환 |
|
|
리포지토리 이름, | |
|
| 자주 묻는 질문 | |
|
|
교환 삽입/삭제에 사용되는 일관성 수준: | |
|
|
Exchange 읽기/확인에 사용되는 일관성 수준: |
73장. crypto (JCE) 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.3에서 사용 가능
Camel 암호화 끝점과 Java의 Cryptographic extension을 사용하면 Exchange용 디지털 서명을 쉽게 만들 수 있습니다. Camel은 교환 워크플로의 한 부분에서 교환용 서명을 만든 다음 워크플로의 뒷부분에서 서명을 확인하는 데 사용할 수 있는 유연한 엔드포인트 쌍을 제공합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-crypto</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
73.1. 소개 링크 복사링크가 클립보드에 복사되었습니다!
디지털 서명은 Asymmetric Cryptographic 기술을 사용하여 메시지에 서명합니다. (very) 높은 수준에서 알고리즘은 하나의 키로 암호화된 데이터를 다른 키로만 해독할 수 있는 특수 속성과 함께 무료 키 쌍을 사용합니다. 하나는 개인 키가 밀접하게 보호되고 다른 공개 키는 서명된 메시지를 확인하는 데 관심이 있는 모든 사용자에게 메시지 서명'에 사용됩니다. 메시지는 개인 키를 사용하여 메시지의 다이제스트를 암호화하여 서명합니다. 이 암호화된 다이제스트는 메시지와 함께 전송됩니다. 다른 측면에서 확인자는 메시지 다이제스트를 다시 계산하고 공개 키를 사용하여 서명에서 다이제스트를 해독합니다. 두 다이제스트가 모두 일치하면 확인기에서 개인 키의 소유자만 알고 있으면 서명을 만들 수 있습니다.
Camel은 Java Cryptographic Extension의 서명 서비스를 사용하여 교환 서명을 생성하는 데 필요한 많은 암호화 상승을 수행합니다. 다음은 Cryptography, 메시지 다이제스트 및 디지털 서명의 메커니즘을 설명하고 JCE와 함께 활용하는 방법을 설명하는 훌륭한 리소스입니다.
- Bruce Schneier의 Applied Cryptography
- David Hook에서 Java로 암호화하기
- 신뢰할 수 있는 Wikipedia Digital_signatures
73.2. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
언급된 Camel은 서명을 생성하고 확인할 수 있는 암호화 엔드포인트 한 쌍을 제공합니다.
crypto:sign:name[?options]
crypto:verify:name[?options]
-
crypto:sign은 서명을 생성하고 상수org.apache.camel.component.crypto.DigitalSignatureConstants.SIGNATURE.SIGNATURE .e.에 의해 연결된 헤더에 저장합니다."CamelDigitalSignature". -
crypto:verify는 이 헤더의 내용을 읽고 확인 계산을 수행합니다.
올바르게 작동하기 위해 서명 및 확인 프로세스에서는 PrivateKey 를 필요로 하고 PublicKey (또는 하나를 포함하는 인증서 )를 확인해야 합니다. JCE를 사용하면 이러한 키 쌍을 생성하는 것은 매우 간단하지만 일반적으로 KeyStore를 사용하여 키를 저장하고 공유하는 것이 가장 안전합니다. DSL은 키가 제공되는 방법에 대해 매우 유연하고 여러 메커니즘을 제공합니다.
참고: crypto:sign 엔드포인트는 일반적으로 한 경로에 정의되고 무료 crypto:verify 는 다른 예제에서 단순화하기 위해 다른 경로로 정의됩니다. 서명과 검증 둘 다 동일하게 구성되어야 한다고 말하지 않습니다.
73.3. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Crypto (JCE) 구성 요소는 아래 나열된 두 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | 공유 DigitalSignatureConfiguration을 구성으로 사용하려면 | DigitalSignature 구성 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Crypto(JCE) 엔드포인트는 URI 구문을 사용하여 구성됩니다.
crypto:cryptoOperation:name
다음 경로 및 쿼리 매개변수를 사용합니다.
73.3.1. 경로 매개 변수(2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| cryptoOperation | required: crypto:sign을 작업으로 설정합니다. 예를 들어, crypto:sign은 끝점의 암호 구성표 뒤에 제공된 Crypto 작업을 설정합니다. | CryptoOperation | |
| name | 필수 이 작업의 논리 이름입니다. | 문자열 |
73.3.2. 쿼리 매개변수(19 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 알고리즘 (producer) | 서명자에게 사용해야 하는 알고리즘의 JCE 이름을 설정합니다. | SHA1WithDSA | 문자열 |
| 별칭 (producer) | KeyStore에서 키에 대해 쿼리하는 데 사용되는 별칭을 설정하고 java.security.cert.Certificate Certificates를 링크하여 교환 서명 및 검증에 사용됩니다. 이 값은 메시지 헤더 링크 org.apache.camel.component.crypto.DigitalSignatureConstantsKEYSTORE_ALIAS를 통해 런타임 시 제공될 수 있습니다. | 문자열 | |
| certificateName (producer) | 레지스트리에 둘 수 있는 PrivateKey의 참조 이름을 설정합니다. | 문자열 | |
| 키 저장소 (producer) | 교환 서명 및 확인에 사용할 키 및 Certficates를 포함할 수 있는 KeyStore를 설정합니다. KeyStore는 일반적으로 경로 정의에 제공된 별칭 또는 메시지 헤더 CamelSignatureKeyStoreAlias를 통해 동적으로 사용됩니다. 별칭을 제공하지 않고 키 저장소에 하나의 항목만 있는 경우 이 단일 항목이 사용됩니다. | KeyStore | |
| keystoreName (producer) | 레지스트리에 둘 수 있는 Keystore의 참조 이름을 설정합니다. | 문자열 | |
| privateKey (producer) | 교환에 서명하는 데 사용해야 하는 PrivateKey 설정 | PrivateKey | |
| privateKeyName (producer) | 레지스트리에 둘 수 있는 PrivateKey의 참조 이름을 설정합니다. | 문자열 | |
| 공급자 (producer) | 구성된 Signature 알고리즘을 제공하는 보안 공급자의 ID를 설정합니다. | 문자열 | |
| publicKeyName (producer) | 컨텍스트가 변경될 때 해결되어야 하는 참조 | 문자열 | |
| secureRandomName (producer) | 레지스트리에서 처리할 수 있는 SecureRandom의 참조 이름을 설정합니다. | 문자열 | |
| signatureHeaderName (producer) | base64로 인코딩된 서명을 저장하는 데 사용해야 하는 메시지 헤더의 이름을 설정합니다. 기본값은 'CamelDigitalSignature'입니다. | 문자열 | |
| bufferSize (advanced) | Exchange 페이로드 데이터에서 읽는 데 사용되는 버퍼의 크기를 설정합니다.Set the size of the buffer used to read in the Exchange payload data. | 2048 | 정수 |
| 인증서 (고급) | 페이로드에 따라 교환에서 서명을 확인하는 데 사용해야 하는 인증서를 설정합니다. | certificate | |
| clearHeaders (advanced) | 서명 및 검증 후 서명 특정 헤더가 지워질지 여부를 결정합니다. 기본값은 true로, 설정되지 않은 경우 키 및 암호와 같은 중요한 개인 정보로 인해 불이익을 일으킬 수 있습니다. | true | boolean |
| keyStoreParameters (advanced) | 지정된 KeyStores에 따라 서명 및 확인에 사용할 키와 Certficates를 포함할 수 있는 KeyStore를 설정합니다. KeyStore는 일반적으로 경로 정의에 제공된 별칭 또는 메시지 헤더 CamelSignatureKeyStoreAlias를 통해 동적으로 사용됩니다. 별칭을 제공하지 않고 키 저장소에 하나의 항목만 있는 경우 이 단일 항목이 사용됩니다. | KeyStoreParameters | |
| publickey (advanced) | 교환에서 서명을 확인하는 데 사용해야 하는 PublicKey를 설정합니다. | PublicKey | |
| secureRandom (advanced) | 서명 서비스를 초기화하는 데 사용되는 SecureRandom 설정 | SecureRandom | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| 암호 (보안) | KeyStore에서 별칭이 지정된 PrivateKey에 액세스하는 데 사용되는 암호를 설정합니다. | 문자열 |
73.4. 사용 링크 복사링크가 클립보드에 복사되었습니다!
73.4.1. 원시 키 링크 복사링크가 클립보드에 복사되었습니다!
교환에 서명하고 확인하는 가장 기본적인 방법은 다음과 같이 KeyPair를 사용하는 것입니다.
키에 대한 참조를 사용하여 Spring XML Extensions 에서도 동일한 작업을 수행할 수 있습니다.
73.4.2. 키 저장소 및 별칭. 링크 복사링크가 클립보드에 복사되었습니다!
JCE는 개인 키와 인증서 쌍으로 구성된 주택에 매우 다채로운 키 저장소 개념을 제공하여 암호화되고 암호로 보호됩니다. 검색 API에 별칭을 적용하여 검색할 수 있습니다. 키와 인증서를 키 저장소로 가져올 수 있는 여러 가지 방법이 있습니다. 대부분의 경우 외부 'keytool' 애플리케이션에서 이 작업을 수행합니다. 이는 keytool을 사용하여 자체 서명된 인증서 및 개인 키가 있는 KeyStore를 생성하는 좋은 예입니다.
이 예제에서는 키가 있고 'bob'로 별칭이 있는 키 저장소를 사용합니다. 키 저장소의 암호 및 키는 'letmein'입니다.
다음은 Fluent 빌더를 통해 Keystore를 사용하는 방법을 보여줍니다. 또한 키 저장소를 로드하고 초기화하는 방법도 보여줍니다.
Spring a ref는 실제 키 저장소 인스턴스를 조회하는 데 사용됩니다.
73.4.3. JCE 공급자 및 알고리즘 변경 링크 복사링크가 클립보드에 복사되었습니다!
서명 알고리즘 또는 보안 공급자를 변경하는 것은 이름을 지정하는 간단한 문제입니다. 선택한 알고리즘과 호환되는 키도 사용해야 합니다.
또는
73.4.4. 서명 메시지 헤더 변경 링크 복사링크가 클립보드에 복사되었습니다!
서명을 저장하는 데 사용되는 메시지 헤더를 변경하는 것이 바람직할 수 있습니다. 다음과 같이 경로 정의에 다른 헤더 이름을 지정할 수 있습니다.
또는
73.4.5. 버퍼 크기 변경 링크 복사링크가 클립보드에 복사되었습니다!
예를 들어, buffer…의 크기를 업데이트해야 합니다.
또는
73.4.6. 키를 동적으로 제공합니다. 링크 복사링크가 클립보드에 복사되었습니다!
Recipient 목록 또는 유사한 EIP를 사용하는 경우 교환 수신자는 동적으로 다를 수 있습니다. 모든 수신자에게 동일한 키를 사용하는 것은 불가능하거나 바람직하지 않을 수 있습니다. 변경 내용에 따라 서명 키를 동적으로 지정할 수 있는 것이 유용합니다. 그런 다음 교환은 서명하기 전에 대상 수신자의 키로 동적으로 보강될 수 있습니다. 서명 메커니즘을 용이하게 하기 위해 아래의 메시지 헤더를 통해 키를 동적으로 제공할 수 있습니다.
-
Exchange.SIGNATURE_PRIVATE_KEY,"CamelSignaturePrivateKey" -
Exchange.SIGNATURE_PUBLIC_KEY_OR_CERT,"CamelSignaturePublicKeyOrCert"
또는
더 나은 방법은 키 저장소 별칭을 동적으로 제공하는 것입니다. 다시, 별칭은 메시지 헤더에 제공될 수 있습니다
-
Exchange.KEYSTORE_ALIAS,"CamelSignatureKeyStoreAlias"
또는
헤더는 다음과 같이 설정됩니다.
Exchange unsigned = getMandatoryEndpoint("direct:alias-sign").createExchange();
unsigned.getIn().setBody(payload);
unsigned.getIn().setHeader(DigitalSignatureConstants.KEYSTORE_ALIAS, "bob");
unsigned.getIn().setHeader(DigitalSignatureConstants.KEYSTORE_PASSWORD, "letmein".toCharArray());
template.send("direct:alias-sign", unsigned);
Exchange signed = getMandatoryEndpoint("direct:alias-sign").createExchange();
signed.getIn().copyFrom(unsigned.getOut());
signed.getIn().setHeader(KEYSTORE_ALIAS, "bob");
template.send("direct:alias-verify", signed);
73.5. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
74장. crypto CMS 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.20에서 사용 가능
CMS(Cryptographic Message Syntax) 는 메시지에 서명 및 암호화하기 위한 잘 설정된 표준입니다. Apache Crypto CMS 구성 요소는 이 표준의 다음 부분을 지원합니다. * 컨텐츠 유형 "Enveloped Data"와 키 전송(symmetric key), * Content Type "Signed Data"를 사용합니다. CMS Enveloped Data 인스턴스를 생성하고, CMS Enveloped Data 인스턴스를 해독하고, CMS Signed Data 인스턴스를 생성하고, CMS Signed Data 인스턴스를 검증할 수 있습니다.
구성 요소는 Bouncy Castle 라이브러리 bcprov-jdk15on 및 bcpkix-jdk15on을 사용합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-crypto-cms</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
이 구성 요소의 끝점을 호출하기 전에 애플리케이션에 Bouncy Castle 보안 공급자를 등록하는 것이 좋습니다.
Security.addProvider(new BouncyCastleProvider());
Bouncy Castle 보안 공급자가 등록되지 않은 경우 Crypto CMS 구성 요소는 공급자를 등록합니다.
74.1. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Crypto CMS 구성 요소는 아래에 나열된 3 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| signedDataVerifier 구성 (advanced) | 확인 작업에 대한 uri 매개 변수를 결정하는 공유 SignedDataVerifierConfiguration을 구성하려면 다음을 수행합니다. | SignedDataVerifier 구성 | |
| EnvvedDataDecryptor 구성 (advanced) | 암호 해독 작업에 대한 uri 매개 변수를 결정하는 공유 EnvelopedDataDecryptorConfiguration을 구성하려면 다음을 수행합니다. | EnvelopedDataDecryptor 구성 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Crypto CMS 끝점은 URI 구문을 사용하여 구성됩니다.
crypto-cms:cryptoOperation:name
다음 경로 및 쿼리 매개변수를 사용합니다.
74.1.1. 경로 매개 변수(2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| cryptoOperation | required: crypto-cms:sign을 작업으로 설정합니다. 예를 들어, crypto-cms:sign의 암호 구성표 뒤에 제공된 Crypto 작업을 설정합니다. 가능한 값: 서명, 확인, 암호화 또는 암호 해독. | CryptoOperation | |
| name | 필수 URI의 이름 부분은 camel 컨텍스트 내에서 서로 다른 서명자/verifier/encrypt 또는 끝점을 구분하도록 사용자에 의해 선택할 수 있습니다. | 문자열 |
74.1.2. 쿼리 매개변수(15 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 키 저장소 (공용) | 서명자 개인 키, 확인자 공개 키, 공개 키 암호화, 조작에 따라 개인 키 해독 또는 개인 키가 포함된 키 저장소입니다. 이 매개변수 또는 매개변수 'keyStoreParameters'를 사용합니다. | KeyStore | |
| keyStoreParameters (common) | 서명자 개인 키, 확인자 공개 키, 공개 키 암호화, 조작에 따라 개인 키 암호 해독이 포함된 키 저장소입니다. 이 매개변수 또는 매개변수 'keystore'를 사용합니다. | KeyStoreParameters | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| 암호 (암호) | 개인 키의 암호를 설정합니다. 키 저장소의 모든 개인 키의 암호가 동일한 것으로 가정합니다. 설정하지 않으면 KeyStoreParameters에 제공된 키 저장소 암호가 개인 키의 암호라고 가정합니다. | char[] | |
| fromBase64 (decrypt_verify) | true인 경우 CMS 메시지는 base 64로 인코딩되며 처리 중에 디코딩해야 합니다. 기본값은 false입니다. | false | 부울 |
| contentEncryptionAlgorithm (encrypt) | 암호화 알고리즘 (예: DESede/CBC/PKCS5Padding) 가능한 값: DESede/CBC/PKCS5Padding, AES/CBC/PKCS5Padding, Camellia/CBC/PKCS5Padding, CAST5/CBC/PKCS5Padding. | 문자열 | |
| originatorInformation Provider (encrypt) | originator 정보에 대한 공급자입니다. https://tools.ietf.org/html/rfc5652section-6.1 에서 참조하십시오. 기본값은 null입니다. | OriginatorInformation 공급자 | |
| 수신자 ( encrypt) | 수신자 정보: org.apache.camel.component.crypto.cms.api.TransRecipientInfo 인터페이스를 구현하는 빈에 대한 참조입니다. | list | |
| secretKeyLength (encrypt) | 콘텐츠 암호화에 사용되는 비밀 대칭 키의 키 길이입니다. 지정된 콘텐츠 암호화 알고리즘이 다른 크기의 키를 허용하는 경우에만 사용됩니다. contentEncryptionAlgorithm=AES/CBC/PKCS5Padding or Camellia/PKCS5Padding then 128; contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding then 192, 128; 강력한 암호화가 활성화된 경우 AES/CBC/PKCS5Padding 및 Camellia/CBC/PKCS5Padding의 경우 키 길이 192 및 256을 사용할 수 있습니다. | int | |
| 보호되지 않은Attributes GeneratorProvider (encrypt) | 보호되지 않은 특성에 대한 생성기의 공급자입니다. 기본값은 null이며, 보호되지 않은 특성이 Enveloped Data 개체에 추가되지 않음을 의미합니다. https://tools.ietf.org/html/rfc5652section-6.1 에서 참조하십시오. | AttributesGenerator 공급자 | |
| toBase64 (encrypt_sign) | 서명된 데이터 또는 Enveloped Data 인스턴스가 64로 인코딩되어야 하는지 여부를 나타냅니다. 기본값은 false입니다. | false | 부울 |
| includeContent (sign) | 서명된 콘텐츠를 서명한 데이터 인스턴스에 포함해야 하는지 여부를 나타냅니다. false인 경우 CamelCryptoCmsSignedData 헤더에 분리된 데이터 인스턴스가 생성됩니다. | true | 부울 |
| 서명 자(sign) | 서명자 정보: org.apache.camel.component.crypto.cms.api.SignerInfo를 구현하는 빈에 대한 참조 | list | |
| signedDataHeaderBase64 (verify) | CamelCryptoCmsSignedData 헤더의 값이 base64 인코딩인지 여부를 나타냅니다. 기본값은 false입니다. 분리된 서명에만 관련이 있습니다. 분리된 서명 사례에서 헤더에는 Signed Data 오브젝트가 포함됩니다. | false | 부울 |
| verifySignaturesOfAll Signers (verify) | true인 경우 Signed Data 개체에 포함된 모든 서명자의 서명이 확인됩니다. false인 경우 서명자 정보가 지정된 인증서 중 하나와 일치하는 하나의 서명만 확인합니다. 기본값은 true입니다. | true | 부울 |
74.2. 봉투 데이터 링크 복사링크가 클립보드에 복사되었습니다!
crypto-cms:encypt 엔드포인트는 일반적으로 하나의 경로에 정의되고 다른 경로에서는 보완적인 crypto-cms:decrypt 가 정의되어 있지만 다른 예제에서는 간소화할 수 있습니다.
다음 예제에서는 Enveloped Data 메시지를 만드는 방법과 Enveloped Data 메시지를 해독하는 방법을 보여줍니다.
Java DSL의 기본 예
import org.apache.camel.util.jsse.KeyStoreParameters;
import org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo;
...
KeyStoreParameters keystore = new KeyStoreParameters();
keystore.setType("JCEKS");
keystore.setResource("keystore/keystore.jceks);
keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the crypto-cms:decrypt endpoint
DefaultKeyTransRecipientInfo recipient1 = new DefaultKeyTransRecipientInfo();
recipient1.setCertificateAlias("rsa"); // alias of the public key used for the encryption
recipient1.setKeyStoreParameters(keystore);
simpleReg.put("keyStoreParameters", keystore); // register keystore in the registry
simpleReg.put("recipient1", recipient1); // register recipient info in the registry
from("direct:start")
.to("crypto-cms:encrypt://testencrpyt?toBase64=true&recipient=#recipient1&contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding&secretKeyLength=128")
.to("crypto-cms:decrypt://testdecrypt?fromBase64=true&keyStoreParameters=#keyStoreParameters")
.to("mock:result");
Spring XML의 기본 예
<keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
id="keyStoreParameters1" resource="./keystore/keystore.jceks"
password="some_password" type="JCEKS" />
<bean id="recipient1"
class="org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo">
<property name="keyStoreParameters" ref="keyStoreParameters1" />
<property name="certificateAlias" value="rsa" />
</bean>
...
<route>
<from uri="direct:start" />
<to uri="crypto-cms:encrypt://testencrpyt?toBase64=true&recipient=#recipient1&contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding&secretKeyLength=128" />
<to uri="crypto-cms:decrypt://testdecrypt?fromBase64=true&keyStoreParameters=#keyStoreParameters1" />
<to uri="mock:result" />
</route>
Java DSL의 두 가지 인식
import org.apache.camel.util.jsse.KeyStoreParameters;
import org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo;
...
KeyStoreParameters keystore = new KeyStoreParameters();
keystore.setType("JCEKS");
keystore.setResource("keystore/keystore.jceks);
keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the crypto-cms:decrypt endpoint
DefaultKeyTransRecipientInfo recipient1 = new DefaultKeyTransRecipientInfo();
recipient1.setCertificateAlias("rsa"); // alias of the public key used for the encryption
recipient1.setKeyStoreParameters(keystore);
DefaultKeyTransRecipientInfo recipient2 = new DefaultKeyTransRecipientInfo();
recipient2.setCertificateAlias("dsa");
recipient2.setKeyStoreParameters(keystore);
simpleReg.put("keyStoreParameters", keystore); // register keystore in the registry
simpleReg.put("recipient1", recipient1); // register recipient info in the registry
from("direct:start")
.to("crypto-cms:encrypt://testencrpyt?toBase64=true&recipient=#recipient1&recipient=#recipient2&contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding&secretKeyLength=128")
//the decryptor will automatically choose one of the two private keys depending which one is in the decryptor keystore
.to("crypto-cms:decrypt://testdecrypt?fromBase64=true&keyStoreParameters=#keyStoreParameters")
.to("mock:result");
Spring XML의 두 가지 수정
<keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
id="keyStoreParameters1" resource="./keystore/keystore.jceks"
password="some_password" type="JCEKS" />
<bean id="recipient1"
class="org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo">
<property name="keyStoreParameters" ref="keyStoreParameters1" />
<property name="certificateAlias" value="rsa" />
</bean>
<bean id="recipient2"
class="org.apache.camel.component.crypto.cms.crypt.DefaultKeyTransRecipientInfo">
<property name="keyStoreParameters" ref="keyStoreParameters1" />
<property name="certificateAlias" value="dsa" />
</bean>
...
<route>
<from uri="direct:start" />
<to uri="crypto-cms:encrypt://testencrpyt?toBase64=true&recipient=#recipient1&recipient=#recipient2&contentEncryptionAlgorithm=DESede/CBC/PKCS5Padding&secretKeyLength=128" />
<!-- the decryptor will automatically choose one of the two private keys depending which one is in the decryptor keystore -->
<to uri="crypto-cms:decrypt://testdecrypt?fromBase64=true&keyStoreParameters=#keyStoreParameters1" />
<to uri="mock:result" />
</route>
74.3. 서명된 데이터 링크 복사링크가 클립보드에 복사되었습니다!
crypto-cms:sign 엔드포인트는 일반적으로 하나의 경로에 정의되고 다른 경로에는 무료 crypto-cms:verify 가 정의되어 있지만 예제의 단순성을 위해 서로의 단순성을 제공합니다.
다음 예에서는 Signed Data 메시지를 생성하는 방법과 Signed Data 메시지를 확인하는 방법을 보여줍니다.
Java DSL의 기본 예
import org.apache.camel.util.jsse.KeyStoreParameters;
import org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo;
...
KeyStoreParameters keystore = new KeyStoreParameters();
keystore.setType("JCEKS");
keystore.setResource("keystore/keystore.jceks);
keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the signerInfo1 bean
//Signer Information, by default the following signed attributes are included: contentType, signingTime, messageDigest, and cmsAlgorithmProtect; by default no unsigned attribute is included.
// If you want to add your own signed attributes or unsigned attributes, see methods DefaultSignerInfo.setSignedAttributeGenerator and DefaultSignerInfo.setUnsignedAttributeGenerator.
DefaultSignerInfo signerInfo1 = new DefaultSignerInfo();
signerInfo1.setIncludeCertificates(true); // if set to true then the certificate chain of the private key will be added to the Signed Data object
signerInfo1.setSignatureAlgorithm("SHA256withRSA"); // signature algorithm; attention, the signature algorithm must fit to the signer private key.
signerInfo1.setPrivateKeyAlias("rsa"); // alias of the private key used for the signing
signerInfo1.setPassword("private_key_pw".toCharArray()); // optional parameter, if not set then the password of the KeyStoreParameters will be used for accessing the private key
signerInfo1.setKeyStoreParameters(keystore);
simpleReg.put("keyStoreParameters", keystore); //register keystore in the registry
simpleReg.put("signer1", signerInfo1); //register signer info in the registry
from("direct:start")
.to("crypto-cms:sign://testsign?signer=#signer1&includeContent=true&toBase64=true")
.to("crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters&fromBase64=true"")
.to("mock:result");
Spring XML의 기본 예
<keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
id="keyStoreParameters1" resource="./keystore/keystore.jceks"
password="some_password" type="JCEKS" />
<bean id="signer1"
class="org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo">
<property name="keyStoreParameters" ref="keyStoreParameters1" />
<property name="privateKeyAlias" value="rsa" />
<property name="signatureAlgorithm" value="SHA256withRSA" />
<property name="includeCertificates" value="true" />
<!-- optional parameter 'password', if not set then the password of the KeyStoreParameters will be used for accessing the private key -->
<property name="password" value="private_key_pw" />
</bean>
...
<route>
<from uri="direct:start" />
<to uri="crypto-cms:sign://testsign?signer=#signer1&includeContent=true&toBase64=true" />
<to uri="crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters1&fromBase64=true" />
<to uri="mock:result" />
</route>
Java DSL에서 두 개의 서명자가 있는 예
import org.apache.camel.util.jsse.KeyStoreParameters;
import org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo;
...
KeyStoreParameters keystore = new KeyStoreParameters();
keystore.setType("JCEKS");
keystore.setResource("keystore/keystore.jceks);
keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the signerInfo1 bean
//Signer Information, by default the following signed attributes are included: contentType, signingTime, messageDigest, and cmsAlgorithmProtect; by default no unsigned attribute is included.
// If you want to add your own signed attributes or unsigned attributes, see methods DefaultSignerInfo.setSignedAttributeGenerator and DefaultSignerInfo.setUnsignedAttributeGenerator.
DefaultSignerInfo signerInfo1 = new DefaultSignerInfo();
signerInfo1.setIncludeCertificates(true); // if set to true then the certificate chain of the private key will be added to the Signed Data object
signerInfo1.setSignatureAlgorithm("SHA256withRSA"); // signature algorithm; attention, the signature algorithm must fit to the signer private key.
signerInfo1.setPrivateKeyAlias("rsa"); // alias of the private key used for the signing
signerInfo1.setPassword("private_key_pw".toCharArray()); // optional parameter, if not set then the password of the KeyStoreParameters will be used for accessing the private key
signerInfo1.setKeyStoreParameters(keystore);
DefaultSignerInfo signerInfo2 = new DefaultSignerInfo();
signerInfo2.setIncludeCertificates(true);
signerInfo2.setSignatureAlgorithm("SHA256withDSA");
signerInfo2.setPrivateKeyAlias("dsa");
signerInfo2.setKeyStoreParameters(keystore);
simpleReg.put("keyStoreParameters", keystore); //register keystore in the registry
simpleReg.put("signer1", signerInfo1); //register signer info in the registry
simpleReg.put("signer2", signerInfo2); //register signer info in the registry
from("direct:start")
.to("crypto-cms:sign://testsign?signer=#signer1&signer=#signer2&includeContent=true")
.to("crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters")
.to("mock:result");
Spring XML에서 두 개의 서명자가 있는 예
<keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
id="keyStoreParameters1" resource="./keystore/keystore.jceks"
password="some_password" type="JCEKS" />
<bean id="signer1"
class="org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo">
<property name="keyStoreParameters" ref="keyStoreParameters1" />
<property name="privateKeyAlias" value="rsa" />
<property name="signatureAlgorithm" value="SHA256withRSA" />
<property name="includeCertificates" value="true" />
<!-- optional parameter 'password', if not set then the password of the KeyStoreParameters will be used for accessing the private key -->
<property name="password" value="private_key_pw" />
</bean>
<bean id="signer2"
class="org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo">
<property name="keyStoreParameters" ref="keyStoreParameters1" />
<property name="privateKeyAlias" value="dsa" />
<property name="signatureAlgorithm" value="SHA256withDSA" />
<!-- optional parameter 'password', if not set then the password of the KeyStoreParameters will be used for accessing the private key -->
<property name="password" value="private_key_pw2" />
</bean>
...
<route>
<from uri="direct:start" />
<to uri="crypto-cms:sign://testsign?signer=#signer1&signer=#signer2&includeContent=true" />
<to uri="crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters1" />
<to uri="mock:result" />
</route>
Java DSL의 분리된 서명 예
import org.apache.camel.util.jsse.KeyStoreParameters;
import org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo;
...
KeyStoreParameters keystore = new KeyStoreParameters();
keystore.setType("JCEKS");
keystore.setResource("keystore/keystore.jceks);
keystore.setPassword("some_password"); // this password will also be used for accessing the private key if not specified in the signerInfo1 bean
//Signer Information, by default the following signed attributes are included: contentType, signingTime, messageDigest, and cmsAlgorithmProtect; by default no unsigned attribute is included.
// If you want to add your own signed attributes or unsigned attributes, see methods DefaultSignerInfo.setSignedAttributeGenerator and DefaultSignerInfo.setUnsignedAttributeGenerator.
DefaultSignerInfo signerInfo1 = new DefaultSignerInfo();
signerInfo1.setIncludeCertificates(true); // if set to true then the certificate chain of the private key will be added to the Signed Data object
signerInfo1.setSignatureAlgorithm("SHA256withRSA"); // signature algorithm; attention, the signature algorithm must fit to the signer private key.
signerInfo1.setPrivateKeyAlias("rsa"); // alias of the private key used for the signing
signerInfo1.setPassword("private_key_pw".toCharArray()); // optional parameter, if not set then the password of the KeyStoreParameters will be used for accessing the private key
signerInfo1.setKeyStoreParameters(keystore);
simpleReg.put("keyStoreParameters", keystore); //register keystore in the registry
simpleReg.put("signer1", signerInfo1); //register signer info in the registry
from("direct:start")
//with the option includeContent=false the SignedData object without the signed text will be written into the header "CamelCryptoCmsSignedData"
.to("crypto-cms:sign://testsign?signer=#signer1&includeContent=false&toBase64=true")
//the verifier reads the Signed Data object form the header CamelCryptoCmsSignedData and assumes that the signed content is in the message body
.to("crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters&signedDataHeaderBase64=true")
.to("mock:result");
Spring XML의 분리된 서명 예
<keyStoreParameters xmlns="http://camel.apache.org/schema/spring"
id="keyStoreParameters1" resource="./keystore/keystore.jceks"
password="some_password" type="JCEKS" />
<bean id="signer1"
class="org.apache.camel.component.crypto.cms.sig.DefaultSignerInfo">
<property name="keyStoreParameters" ref="keyStoreParameters1" />
<property name="privateKeyAlias" value="rsa" />
<property name="signatureAlgorithm" value="SHA256withRSA" />
<property name="includeCertificates" value="true" />
<!-- optional parameter 'password', if not set then the password of the KeyStoreParameters will be used for accessing the private key -->
<property name="password" value="private_key_pw" />
</bean>
...
<route>
<from uri="direct:start" />
<!-- with the option includeContent=false the SignedData object without the signed text will be written into the header "CamelCryptoCmsSignedData" -->
<to uri="crypto-cms:sign://testsign?signer=#signer1&includeContent=false&toBase64=true" />
<!-- the verifier reads the Signed Data object form the header CamelCryptoCmsSignedData and assumes that the signed content is in the message body -->
<to uri="crypto-cms:verify://testverify?keyStoreParameters=#keyStoreParameters1&signedDataHeaderBase64=true" />
<to uri="mock:result" />
</route>
75장. 암호화(Java Cryptographic Extension) DataFormat 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.3에서 사용 가능
Crypto Data Format은 Java Cryptographic Extension을 Camel에 통합하므로 Camel의 친숙한 marshall 및 unmarshal 형식 메커니즘을 사용하여 메시지의 간단하고 유연한 암호화 및 암호 해독을 수행할 수 있습니다. 마샬링은 cyphertext 및 unmarshalling에 암호화를 의미하여 원래 일반 텍스트로 다시 암호 해독을 의미하는 것으로 가정합니다. 이 데이터 형식은 대칭(공유 키) 암호화 및 decyption만 구현합니다.
75.1. CryptoDataFormat Options 링크 복사링크가 클립보드에 복사되었습니다!
Crypto (Java Cryptographic Extension) 데이터 형식은 아래에 나열된 10 가지 옵션을 지원합니다.
| 이름 | 기본값 | Java Type | 설명 |
|---|---|---|---|
| algorithm |
|
| 사용할 암호화 알고리즘을 나타내는 JCE 알고리즘 이름입니다. 기본적으로 DES/CBC/PKCS5Padding입니다. |
| cryptoProvider |
| 사용할 JCE 보안 공급자의 이름입니다. | |
| keyRef |
| 사용할 레지스터에서 조회할 시크릿 키를 나타냅니다. | |
| initVectorRef |
| Cipher를 초기화하는 데 사용할 Initialization 벡터가 포함된 바이트 배열을 나타냅니다.Represents a byte array containing the Initialization Vector that will be used to initialize the Cipher. | |
| algorithmParameterRef |
| Cipher를 초기화하는 데 사용되는 JCE AlgorithmParameterSpec입니다. 은 지정된 이름을 java.security.spec.AlgorithmParameterSpec 유형으로 사용하여 유형을 조회합니다. | |
| bufferSize |
| 서명 프로세스에서 사용되는 버퍼의 크기입니다. | |
| macAlgorithm |
|
| Message Authentication 알고리즘을 나타내는 JCE 알고리즘입니다. |
| shouldAppendHMAC |
|
| 메시지 인증 코드를 계산하고 암호화된 데이터에 추가해야 함을 나타내는 플래그입니다. |
| inline |
|
| 구성된 IV가 암호화된 데이터 스트림으로 인라인화되어야 함을 나타내는 플래그입니다. 기본값은 false입니다. |
| contentTypeHeader |
|
| 데이터 형식이 데이터 형식에서 수행할 수 있는 경우 데이터 형식의 유형으로 Content-Type 헤더를 설정해야 하는지 여부입니다. 예를 들어 데이터 형식을 XML로 마샬링하거나, JSon으로 마샬링되는 데이터 형식에 대한 application/json 등이 있습니다. |
75.2. 기본 사용 링크 복사링크가 클립보드에 복사되었습니다!
가장 기본적인 것으로 교환기를 암호화/암호화하는데 필요한 것은 공유 비밀 키입니다. 하나 이상의 Crypto 데이터 형식의 인스턴스가 이 키로 구성된 경우 형식을 사용하여 한 경로(또는 하나의 일부)에서 페이로드를 암호화하고 다른 경로에서 해독할 수 있습니다. 예를 들어 다음과 같이 Java DSL을 사용합니다.
KeyGenerator generator = KeyGenerator.getInstance("DES");
CryptoDataFormat cryptoFormat = new CryptoDataFormat("DES", generator.generateKey());
from("direct:basic-encryption")
.marshal(cryptoFormat)
.to("mock:encrypted")
.unmarshal(cryptoFormat)
.to("mock:unencrypted");
Spring에서 dataformat이 먼저 구성된 다음 경로에서 사용됩니다.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<dataFormats>
<crypto id="basic" algorithm="DES" keyRef="desKey" />
</dataFormats>
...
<route>
<from uri="direct:basic-encryption" />
<marshal ref="basic" />
<to uri="mock:encrypted" />
<unmarshal ref="basic" />
<to uri="mock:unencrypted" />
</route>
</camelContext>
75.3. 암호화 알고리즘 지정 링크 복사링크가 클립보드에 복사되었습니다!
알고리즘을 변경하는 것은 JCE 알고리즘 이름을 제공하는 문제입니다. 알고리즘을 변경하는 경우 호환되는 키를 사용해야 합니다.
KeyGenerator generator = KeyGenerator.getInstance("DES");
CryptoDataFormat cryptoFormat = new CryptoDataFormat("DES", generator.generateKey());
cryptoFormat.setShouldAppendHMAC(true);
cryptoFormat.setMacAlgorithm("HmacMD5");
from("direct:hmac-algorithm")
.marshal(cryptoFormat)
.to("mock:encrypted")
.unmarshal(cryptoFormat)
.to("mock:unencrypted");
Java 7에서 사용 가능한 알고리즘 목록은 Java Cryptography Architecture Standard Algorithm Name 설명서를 통해 사용할 수 있습니다.
75.4. Initialization 벡터 지정 링크 복사링크가 클립보드에 복사되었습니다!
일부 암호화 알고리즘, 특히 블록 알고리즘에서는 Initialization 벡터로 알려진 데이터의 초기 블록을 구성해야 합니다. JCE에서는 Cipher가 초기화될 때 AlgorithmParameterSpec로 전달됩니다. CryptoDataFormat에서 이러한 벡터를 사용하기 위해 필요한 데이터가 포함된 byte[]로 구성할 수 있습니다.
KeyGenerator generator = KeyGenerator.getInstance("DES");
byte[] initializationVector = new byte[] {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
CryptoDataFormat cryptoFormat = new CryptoDataFormat("DES/CBC/PKCS5Padding", generator.generateKey());
cryptoFormat.setInitializationVector(initializationVector);
from("direct:init-vector")
.marshal(cryptoFormat)
.to("mock:encrypted")
.unmarshal(cryptoFormat)
.to("mock:unencrypted");
또는 Spring을 통해 바이트[]에 대한 참조를 제공합니다.
<crypto id="initvector" algorithm="DES/CBC/PKCS5Padding" keyRef="desKey" initVectorRef="initializationVector" />
암호화 및 암호 해독 단계에서 동일한 벡터가 필요합니다. IV를 비밀로 유지할 필요는 없으므로 DataFormat을 통해 암호화된 데이터로 인라인화되고 나중에 암호 해독 단계에서 읽을 수 있습니다. IV를 인라인으로 설정하려면 /oinline 플래그를 설정합니다.
KeyGenerator generator = KeyGenerator.getInstance("DES");
byte[] initializationVector = new byte[] {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
SecretKey key = generator.generateKey();
CryptoDataFormat cryptoFormat = new CryptoDataFormat("DES/CBC/PKCS5Padding", key);
cryptoFormat.setInitializationVector(initializationVector);
cryptoFormat.setShouldInlineInitializationVector(true);
CryptoDataFormat decryptFormat = new CryptoDataFormat("DES/CBC/PKCS5Padding", key);
decryptFormat.setShouldInlineInitializationVector(true);
from("direct:inline")
.marshal(cryptoFormat)
.to("mock:encrypted")
.unmarshal(decryptFormat)
.to("mock:unencrypted");
또는 봄과 함께.
<crypto id="inline" algorithm="DES/CBC/PKCS5Padding" keyRef="desKey" initVectorRef="initializationVector"
inline="true" />
<crypto id="inline-decrypt" algorithm="DES/CBC/PKCS5Padding" keyRef="desKey" inline="true" />
Initialization Vector 사용에 대한 자세한 내용은 참조를 참조하십시오.
75.5. 해시된 메시지 인증 코드(HMAC) 링크 복사링크가 클립보드에 복사되었습니다!
CryptoDataFormat을 전송하는 동안 암호화된 데이터에 대한 공격을 방지하려면 구성 가능한 MAC 알고리즘을 기반으로 암호화된 교환 콘텐츠에 대한 메시지 인증 코드를 계산할 수도 있습니다. 계산된 HMAC는 암호화 후 스트림에 추가됩니다. 암호 해독 단계의 스트림과 분리됩니다. 전송 중 아무것도 변경되지 않도록 전송된 버전에 대해 MAC을 다시 계산 및 확인합니다. 메시지 인증 코드에 대한 자세한 내용은 http://en.wikipedia.org/wiki/HMAC을 참조하십시오.
KeyGenerator generator = KeyGenerator.getInstance("DES");
CryptoDataFormat cryptoFormat = new CryptoDataFormat("DES", generator.generateKey());
cryptoFormat.setShouldAppendHMAC(true);
from("direct:hmac")
.marshal(cryptoFormat)
.to("mock:encrypted")
.unmarshal(cryptoFormat)
.to("mock:unencrypted");
또는 봄과 함께.
<crypto id="hmac" algorithm="DES" keyRef="desKey" shouldAppendHMAC="true" />
기본적으로 HMAC는 HmacSHA1 mac 알고리즘을 사용하여 계산되지만 다른 알고리즘 이름을 제공하여 쉽게 변경할 수 있습니다. 구성된 보안 공급자를 통해 사용 가능한 알고리즘을 확인하는 방법은 여기를 참조하십시오.
KeyGenerator generator = KeyGenerator.getInstance("DES");
CryptoDataFormat cryptoFormat = new CryptoDataFormat("DES", generator.generateKey());
cryptoFormat.setShouldAppendHMAC(true);
cryptoFormat.setMacAlgorithm("HmacMD5");
from("direct:hmac-algorithm")
.marshal(cryptoFormat)
.to("mock:encrypted")
.unmarshal(cryptoFormat)
.to("mock:unencrypted");
또는 봄과 함께.
<crypto id="hmac-algorithm" algorithm="DES" keyRef="desKey" macAlgorithm="HmacMD5" shouldAppendHMAC="true" />
75.6. 동적으로 키 제공 링크 복사링크가 클립보드에 복사되었습니다!
Recipient 목록 또는 유사한 EIP를 사용하는 경우 교환 수신자는 동적으로 다를 수 있습니다. 모든 수신자에게 동일한 키를 사용하는 것은 불가능하거나 바람직하지 않을 수 있습니다. 교환별로 키를 동적으로 지정할 수 있는 것이 유용합니다. 그런 다음 교환은 데이터 형식에서 처리되기 전에 대상 수신자의 키로 동적으로 보강될 수 있습니다. DataFormat을 사용하면 아래의 메시지 헤더를 통해 키가 동적으로 제공될 수 있습니다.
- CryptoDataFormat.KEY "CamelCryptoKey"
CryptoDataFormat cryptoFormat = new CryptoDataFormat("DES", null);
/**
* Note: the header containing the key should be cleared after
* marshalling to stop it from leaking by accident and
* potentially being compromised. The processor version below is
* arguably better as the key is left in the header when you use
* the DSL leaks the fact that camel encryption was used.
*/
from("direct:key-in-header-encrypt")
.marshal(cryptoFormat)
.removeHeader(CryptoDataFormat.KEY)
.to("mock:encrypted");
from("direct:key-in-header-decrypt").unmarshal(cryptoFormat).process(new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.getIn().getHeaders().remove(CryptoDataFormat.KEY);
exchange.getOut().copyFrom(exchange.getIn());
}
}).to("mock:unencrypted");
또는 봄과 함께.
<crypto id="nokey" algorithm="DES" />
75.7. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
camel 경로에서 Crypto dataformat을 사용하려면 다음 종속성을 pom에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-crypto</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
75.8. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- 데이터 형식
- 암호화(Digital Signatures)
- http://www.bouncycastle.org/java.html
76장. CSV DataFormat 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 1.3에서 사용 가능
CSV 데이터 형식은 Apache Commons CSV 를 사용하여 CSV 페이로드(예: Excel에서 내보낸/가져오기/가져오기 값)를 처리합니다.
76.1. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
CSV dataformat은 아래에 나열된 28개의 옵션을 지원합니다.
| 이름 | 기본값 | Java Type | 설명 |
|---|---|---|---|
| formatRef |
| 사용할 참조 형식은 다른 형식 옵션으로 업데이트됩니다. 기본값은 CSVFormat.DEFAULT입니다. | |
| formatName |
| 사용할 형식의 이름, 기본값은 CSVFormat.DEFAULT입니다. | |
| commentMarkerDisabled |
|
| 참조 형식의 주석 표시기를 비활성화합니다. |
| commentMarker |
| 참조 형식의 주석 표시를 설정합니다. | |
| 구분 기호 |
| 사용할 구분 기호를 설정합니다. 기본값은 , (comma)입니다. | |
| escapeDisabled |
|
| 이스케이프 문자를 사용하여 비활성화에 사용 |
| escape |
| 사용할 이스케이프 문자를 설정합니다. | |
| headerDisabled |
|
| 헤더를 비활성화하는 데 를 사용합니다. |
| header |
| CSV 헤더를 구성하려면 다음을 수행합니다. | |
| allowMissingColumnNames |
|
| 누락된 열 이름을 허용할지 여부입니다. |
| ignoreEmptyLines |
|
| 빈 줄을 무시할지 여부입니다. |
| ignoreSurroundingSpaces |
|
| 주변 공간을 무시할지 여부 |
| nullStringDisabled |
|
| null 문자열을 비활성화하는 데 사용됩니다. |
| nullString |
| null 문자열을 설정합니다. | |
| quoteDisabled |
|
| 따옴표를 비활성화하는 데 사용됩니다. |
| quote |
| 기본적으로 인용문을 설정합니다. | |
| recordSeparatorDisabled |
| 레코드 구분 기호 비활성화에 사용 | |
| recordSeparator |
| 기본적으로 새 줄 문자(CRLF)인 레코드 구분 기호( new line) 설정 | |
| skipHeaderRecord |
|
| 출력에서 헤더 레코드를 건너뛸지 여부 |
| quoteMode |
| 견적 모드를 설정 | |
| ignoreHeaderCase |
|
| 헤더 이름에 액세스할 때 대/소문자를 무시할지 여부를 설정합니다. |
| trim |
|
| 공백과 후행 공백을 정렬할지 여부를 설정합니다.Sets whether or not to trim leading and trailing blanks. |
| trailingDelimiter |
|
| 후행 구분 기호를 추가할지 여부를 설정합니다. |
| lazyLoad |
|
| unmarshalling이 즉시 라인을 읽는 iterator를 만들거나 모든 줄을 하나씩 읽어야 하는지 여부입니다. |
| useMaps |
|
| unmarshalling이 목록 대신 행 값에 대한 맵(HashMap)을 생성해야 하는지 여부입니다. 헤더(정의 또는 수집)가 필요합니다. |
| useOrderedMaps |
|
| unmarshalling이 목록 대신 행 값에 대해 정렬된 맵(LinkedHashMap)을 생성해야 하는지 여부입니다. 헤더(정의 또는 수집)가 필요합니다. |
| recordConverterRef |
| 사용할 레지스트리에서 조회하는 사용자 지정 CsvRecordConverter를 나타냅니다. | |
| contentTypeHeader |
|
| 데이터 형식이 데이터 형식에서 수행할 수 있는 경우 데이터 형식의 유형으로 Content-Type 헤더를 설정해야 하는지 여부입니다. 예를 들어 데이터 형식을 XML로 마샬링하거나, JSon으로 마샬링되는 데이터 형식에 대한 application/json 등이 있습니다. |
76.2. CSV로 맵 마샬링 링크 복사링크가 클립보드에 복사되었습니다!
구성 요소를 사용하면 Java 맵(또는 맵에서 변환될 수 있는 다른 메시지 유형)을 CSV 페이로드로 마샬링할 수 있습니다.
다음 본문을 고려하십시오.
Map<String, Object> body = new LinkedHashMap<>();
body.put("foo", "abc");
body.put("bar", 123);
이 Java 경로 정의
from("direct:start")
.marshal().csv()
.to("mock:result");
또는 이 XML 경로 정의
<route>
<from uri="direct:start" />
<marshal>
<csv />
</marshal>
<to uri="mock:result" />
</route>
그런 다음 생산할 것입니다.
abc,123
76.3. CSV 메시지를 Java 목록에 분리 링크 복사링크가 클립보드에 복사되었습니다!
미끄러지는 CSV를 CSV 파일 줄과 함께 Java Listsage로 변환합니다(모든 필드 값과 함께 다른 목록 유지).
예: 이름이 사람, IQ 및 현재 활동이 있는 CSV 파일이 있습니다.
Jack Dalton, 115, mad at Averell
Joe Dalton, 105, calming Joe
William Dalton, 105, keeping Joe from killing Averell
Averell Dalton, 80, playing with Rantanplan
Lucky Luke, 120, capturing the Daltons
이제 CSV 구성 요소를 사용하여 이 파일을 손상되지 않도록 할 수 있습니다.
from("file:src/test/resources/?fileName=daltons.csv&noop=true")
.unmarshal().csv()
.to("mock:daltons");
결과 메시지에는 List<List<String>> like…이 포함 됩니다.The resulting message will contain a List<List<String>& gt; like….
List<List<String>> data = (List<List<String>>) exchange.getIn().getBody();
for (List<String> line : data) {
LOG.debug(String.format("%s has an IQ of %s and is currently %s", line.get(0), line.get(1), line.get(2)));
}
76.4. List 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.1에서 사용 가능
CSV 형식으로 마샬링하려는 여러 데이터 행이 있는 경우 해당 메시지 페이로드를 List<Map<String, Object>> 개체에 저장할 수 있습니다.If you have multiple rows of data you want to be marshalled into CSV format, you can now store the message payload as a List<Map<String, Object >> object where the list contains a Map for each row.
76.5. CSV 파일의 Poller, unmarshaling 링크 복사링크가 클립보드에 복사되었습니다!
들어오는 data…을 처리할 수 있는 빈이 제공됩니다.
MyCsvHandler.java
// Some comments here
public void doHandleCsvData(List<List<String>> csvData)
{
// do magic here
}
- 귀하의 경로는 다음과 같습니다.
<route>
<!-- poll every 10 seconds -->
<from uri="file:///some/path/to/pickup/csvfiles?delete=true&consumer.delay=10000" />
<unmarshal><csv /></unmarshal>
<to uri="bean:myCsvHandler?method=doHandleCsvData" />
</route>
76.6. 파이프를 구분 기호로 마샬링 링크 복사링크가 클립보드에 복사되었습니다!
다음 본문을 고려하십시오.
Map<String, Object> body = new LinkedHashMap<>();
body.put("foo", "abc");
body.put("bar", 123);
이 Java 경로 정의
// Camel version < 2.15
CsvDataFormat oldCSV = new CsvDataFormat();
oldCSV.setDelimiter("|");
from("direct:start")
.marshal(oldCSV)
.to("mock:result")
// Camel version >= 2.15
from("direct:start")
.marshal(new CsvDataFormat().setDelimiter('|'))
.to("mock:result")
또는 이 XML 경로 정의
<route>
<from uri="direct:start" />
<marshal>
<csv delimiter="|" />
</marshal>
<to uri="mock:result" />
</route>
그런 다음 생산할 것입니다.
abc|123
XML 내에서 autogenColumns, configRef 및 strategyRef 속성 사용
Camel 2.9.2 / 2.10에서 사용할 수 있으며 Camel 2.15에서 삭제
CSV 데이터 형식을 사용자 지정하여 자체 CSVConfig 및/또는 CSVStrategy 를 사용할 수 있습니다. autogenColumns 옵션의 기본값은 true입니다. 다음 예제에서는 이 사용자 지정을 보여줍니다.
<route>
<from uri="direct:start" />
<marshal>
<!-- make use of a strategy other than the default one which is 'org.apache.commons.csv.CSVStrategy.DEFAULT_STRATEGY' -->
<csv autogenColumns="false" delimiter="|" configRef="csvConfig" strategyRef="excelStrategy" />
</marshal>
<convertBodyTo type="java.lang.String" />
<to uri="mock:result" />
</route>
<bean id="csvConfig" class="org.apache.commons.csv.writer.CSVConfig">
<property name="fields">
<list>
<bean class="org.apache.commons.csv.writer.CSVField">
<property name="name" value="orderId" />
</bean>
<bean class="org.apache.commons.csv.writer.CSVField">
<property name="name" value="amount" />
</bean>
</list>
</property>
</bean>
<bean id="excelStrategy" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
<property name="staticField" value="org.apache.commons.csv.CSVStrategy.EXCEL_STRATEGY" />
</bean>
76.7. 눈에 띄지 않는 동안 skipFirstLine 옵션 사용 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.10에서 사용 가능 및 Camel 2.15의 경우 삭제
CSV 헤더가 포함된 첫 번째 줄을 건너뛰도록 CSV 데이터 형식에 지시할 수 있습니다. Spring/XML DSL 사용:
<route>
<from uri="direct:start" />
<unmarshal>
<csv skipFirstLine="true" />
</unmarshal>
<to uri="bean:myCsvHandler?method=doHandleCsv" />
</route>
또는 Java DSL:
CsvDataFormat csv = new CsvDataFormat();
csv.setSkipFirstLine(true);
from("direct:start")
.unmarshal(csv)
.to("bean:myCsvHandler?method=doHandleCsv");
76.8. 구분 기호로 파이프를 사용하여 분할 해제 링크 복사링크가 클립보드에 복사되었습니다!
Spring/XML DSL 사용:
<route>
<from uri="direct:start" />
<unmarshal>
<csv delimiter="|" />
</unmarshal>
<to uri="bean:myCsvHandler?method=doHandleCsv" />
</route>
또는 Java DSL:
CsvDataFormat csv = new CsvDataFormat();
CSVStrategy strategy = CSVStrategy.DEFAULT_STRATEGY;
strategy.setDelimiter('|');
csv.setStrategy(strategy);
from("direct:start")
.unmarshal(csv)
.to("bean:myCsvHandler?method=doHandleCsv");
CsvDataFormat csv = new CsvDataFormat();
csv.setDelimiter("|");
from("direct:start")
.unmarshal(csv)
.to("bean:myCsvHandler?method=doHandleCsv");
CsvDataFormat csv = new CsvDataFormat();
CSVConfig csvConfig = new CSVConfig();
csvConfig.setDelimiter(";");
csv.setConfig(csvConfig);
from("direct:start")
.unmarshal(csv)
.to("bean:myCsvHandler?method=doHandleCsv");
CSVConfig에서 문제
다음과 같습니다.
CSVConfig csvConfig = new CSVConfig();
csvConfig.setDelimiter(';');
작동하지 않습니다. 구분 기호를 문자열로 설정해야 합니다.
76.9. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Camel 경로에서 CSV를 사용하려면 이 데이터 형식을 구현하는 camel-csv 에 종속성을 추가해야 합니다.
Maven을 사용하는 경우 pom.xml에 다음을 추가하여 최신 버전과 가장 큰 릴리스의 버전 번호를 대체합니다(최신 버전의 다운로드 페이지 참조).
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-csv</artifactId>
<version>x.x.x</version>
</dependency>
77장. CXF 링크 복사링크가 클립보드에 복사되었습니다!
77.1. CXF 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
cxf: 구성 요소는 CXF에서 호스팅되는 JAX-WS 서비스에 연결하기 위해 Apache CXF 와의 통합을 제공합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cxf</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
CXF 종속 항목에 대해 알아보려면 WHICH-JARS 텍스트 파일을 참조하십시오.
스트리밍 모드에서 CXF를 사용하는 경우(DataFormat 옵션 참조) 스트림 캐싱 에 대해 읽어 보십시오.
77.2. EAP 배포용 Camel 링크 복사링크가 클립보드에 복사되었습니다!
이 구성 요소는 Red Hat JBoss EAP(JBoss Enterprise Application Platform) 컨테이너에서 단순화된 배포 모델을 제공하는 Camel on EAP(Wildfly Camel) 프레임워크에서 지원합니다.
CXF 구성 요소는 Apache CXF도 사용하는 JBoss EAP 웹 서비스 susbsystem과 통합됩니다. 자세한 내용은 JAX-WS 를 참조하십시오.
현재 EAP 하위 시스템의 Camel은 CXF 또는 Restlet 소비자를 지원하지 않습니다. 그러나 CamelProxy 를 사용하여 CXF 소비자의 동작을 모방할 수 있습니다.
77.3. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
cxf:bean:cxfEndpoint[?options]
여기서 cxfEndpoint 는 Spring 빈 레지스트리의 빈을 참조하는 빈 ID를 나타냅니다. 이 URI 형식을 사용하면 대부분의 끝점 세부 정보가 빈 정의에 지정됩니다.
cxf://someAddress[?options]
여기서 someAddress 는 CXF 끝점의 주소를 지정합니다. 이 URI 형식을 사용하면 대부분의 엔드포인트 세부 정보가 옵션을 사용하여 지정됩니다.
위의 두 스타일 모두 다음과 같이 URI에 옵션을 추가할 수 있습니다.
cxf:bean:cxfEndpoint?wsdlURL=wsdl/hello_world.wsdl&dataFormat=PAYLOAD
77.4. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 필수 항목 | 설명 |
|
| 없음 | WSDL의 위치입니다. WSDL은 기본적으로 끝점 주소에서 가져옵니다. 예를 들면 다음과 같습니다.
|
|
| 있음 | SEI(Service Endpoint Interface) 클래스의 이름입니다. 이 클래스에는 포함될 수 있지만 필요한 것은 필수는 아니며, JSR181 주석이 필요하지 않습니다. 2.0부터 이 옵션은 POJO 모드에만 필요합니다. wsdlURL 옵션이 제공되는 경우 PAYLOAD 및 MESSAGE 모드에 serviceClass가 필요하지 않습니다. serviceClass 없이 wsdlURL 옵션을 사용하는 경우 serviceName 및 portName( Spring 구성의endpointName) 옵션을 제공해야 합니다.
2.0부터
AOP 프록시가 아닌 경우 2.8부터 PAYLOAD 및 MESSAGE 모드에 대한 wsdlURL 및 serviceClass 옵션을 둘 다 생략할 수 있습니다. 이러한 요소를 생략하면 CXF Dispatch Mode를 용이하게 하기 위해 PAYLOAD 모드에서 CxfPayload의 본문에 임의의 XML 요소를 배치할 수 있습니다.
예: |
|
|
WSDL에 두 개 이상의 |
이 서비스가 구현되고 있는 서비스 이름은
|
|
|
|
이 서비스가 구현 중인 포트 이름은
|
|
| 없음 |
CXF 끝점이 지원하는 메시지 데이터 형식은 무엇입니까. 가능한 값은 |
|
| 없음 |
이 옵션은 |
|
| 없음 |
다음 중 CXF 엔드포인트 생산자가 호출할 작업 유형은 무엇입니까. 가능한 값은 |
|
| 없음 |
2.5.0 이후 매개변수가 SOAP 본문에 표시되는 방법을 설명하는 WSDL 스타일입니다. 값이 |
|
| 없음 |
deprecated: 이 끝점에 대해 기본 CXF 버스를 사용할지 여부를 지정합니다. 가능한 값은 |
|
| 없음 |
deprecated: 이 끝점에 대해 기본 CXF 버스를 사용할지 여부를 지정합니다. 가능한 값은 |
|
| 없음 |
기본적으로, CXF 버스 팩토리에 의해 생성된 기본 버스를 사용합니다. |
|
| 없음 |
|
|
| 없음 |
|
|
| 없음 |
2.3의 새로운 기능을 사용하면 인바운드 및 아웃바운드 SOAP 메시지를 로그에 쓰는 CXF Logging 기능을 사용할 수 있습니다. 가능한 값은 |
|
| 없음 |
2.4에서 새로 추가된 이 옵션은 원격 서비스를 호출하는
|
|
| 없음 | 2.4의 새로운 기능 이 옵션은 원격 서비스를 호출하는 CxfProducer에서 사용할 기본 operationNamespace를 설정합니다. 예를 들면 다음과 같습니다.
|
|
| 없음 |
2.5의 새로운 기능을 통해 CXF 엔드포인트가 동기화 또는 async API를 사용하여 기본 작업을 수행하도록 결정할 수 있습니다. 기본값은 |
|
| 없음 |
2.5의 새로운 기능인 이 옵션은 서비스 주소 URL과
|
|
| 없음 |
Camel 2.8: 엔드포인트 URI에서 사용자 지정 CXF 속성을 설정할 수 있습니다. 예를 들어 |
|
| 없음 | 2.8.2의 새로운 기능 이 옵션은 PAYLOAD 모드에서 실행할 때(아래 참조)에서 CXF 구성 요소를 제어하는지 여부를 제어합니다(아래 참조)는 수신되는 메시지를 DOM Elements로 구문 분석하거나 페이로드를 일부 경우에 허용하는 javax.xml.transform.Source 개체로 유지합니다. |
|
| 없음 | 2.11의 새로운 기능. 이 옵션은 phaseInterceptorChain이 catch하는 Fault 로깅을 건너뛰는지 여부를 제어합니다. |
|
| 없음 |
Camel 2.11 의 새로운 기능. 이 옵션은 프로그래밍 방식으로 CXF 엔드포인트 구성을 |
|
| 없음 | Camel 2.12.3 의 새로운 기능은 CXF 클라이언트에 대한 사용자 이름의 기본 인증 정보를 설정하는 데 사용됩니다. |
|
| 없음 | Camel 2.12.3 의 새로운 기능 이 옵션은 CXF 클라이언트의 암호에 대한 기본 인증 정보를 설정하는 데 사용됩니다. |
|
| 없음 | Camel 2.14.0 의 새로운 기능은 CXF 서버가 Jetty 또는 Servlet 전송을 사용할 때 기본적으로 CxfConsumer에서 사용할 수 있는 CXF 연속 타임아웃을 설정하는 데 사용됩니다. ( Cx fConsumer는 연속 시간 초과를 0으로 설정하므로 연속 일시 중지 작업이 시간 초과되지 않음을 의미합니다.) 기본값: 30000 예: 연속 = 80000 |
serviceName 및 portName 은 QNames 이므로, 제공한 경우 위의 예에 표시된 대로 {namespace} 로 접두사가 있어야 합니다.
77.5. dataformat에 대한 설명 링크 복사링크가 클립보드에 복사되었습니다!
| DataFormat | 설명 |
|
| POJO(plain old Java 객체)는 대상 서버에서 호출되는 메서드에 대한 Java 매개 변수입니다. 프로토콜 및 논리 JAX-WS 핸들러가 모두 지원됩니다. |
|
|
|
|
|
|
|
|
Camel 2.8.2 의 새로운 기능 |
교환 속성 CamelCXFDataFormat 을 검색하여 교환의 데이터 형식 모드를 결정할 수 있습니다. 교환 키 상수는 org.apache.camel.component.cxf.CxfConstants.DATA_FORMAT_PROPERTY 에서 정의됩니다.
77.6. Apache Aries Blueprint를 사용하여 CXF 엔드포인트 구성. 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.8부터 CXF 엔드포인트에 대한 Aries 청사진 종속성 주입을 사용할 수 있습니다. 스키마는 Spring 스키마와 매우 유사하므로 전환은 상당히 투명합니다.
예를 들면 다음과 같습니다.
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
xmlns:camel-cxf="http://camel.apache.org/schema/blueprint/cxf"
xmlns:cxfcore="http://cxf.apache.org/blueprint/core"
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
<camel-cxf:cxfEndpoint id="routerEndpoint"
address="http://localhost:9001/router"
serviceClass="org.apache.servicemix.examples.cxf.HelloWorld">
<camel-cxf:properties>
<entry key="dataFormat" value="MESSAGE"/>
</camel-cxf:properties>
</camel-cxf:cxfEndpoint>
<camel-cxf:cxfEndpoint id="serviceEndpoint"
address="http://localhost:9000/SoapContext/SoapPort"
serviceClass="org.apache.servicemix.examples.cxf.HelloWorld">
</camel-cxf:cxfEndpoint>
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route>
<from uri="routerEndpoint"/>
<to uri="log:request"/>
</route>
</camelContext>
</blueprint>
현재 endpoint 요소는 지원되는 첫 번째 CXF 네임스페이스handler입니다.
또한 Spring에서와 마찬가지로 빈 참조를 사용할 수도 있습니다.
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws"
xmlns:cxf="http://cxf.apache.org/blueprint/core"
xmlns:camel="http://camel.apache.org/schema/blueprint"
xmlns:camelcxf="http://camel.apache.org/schema/blueprint/cxf"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://cxf.apache.org/blueprint/jaxws http://cxf.apache.org/schemas/blueprint/jaxws.xsd
http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd
">
<camelcxf:cxfEndpoint id="reportIncident"
address="/camel-example-cxf-blueprint/webservices/incident"
wsdlURL="META-INF/wsdl/report_incident.wsdl"
serviceClass="org.apache.camel.example.reportincident.ReportIncidentEndpoint">
</camelcxf:cxfEndpoint>
<bean id="reportIncidentRoutes" class="org.apache.camel.example.reportincident.ReportIncidentRoutes" />
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<routeBuilder ref="reportIncidentRoutes"/>
</camelContext>
</blueprint>
77.7. MESSAGE 모드에서 CXF의 LoggingOutInterceptor를 활성화하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
CXF의 LoggingOutInterceptor 는 유선 로깅 시스템 (java.util.logging)으로 들어오는 아웃바운드 메시지를 출력합니다. LoggingOutInterceptor 는 PRE_STREAM 단계에 있기 때문에 (하지만 PRE_STREAM 단계가 MESSAGE 모드에서 제거됨)이므로 WRITE 단계에서 LoggingOutInterceptor 를 실행하도록 구성해야 합니다. 다음은 예제입니다.
<bean id="loggingOutInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor">
<!-- it really should have been user-prestream but CXF does have such phase! -->
<constructor-arg value="target/write"/>
</bean>
<cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:9002/helloworld"
serviceClass="org.apache.camel.component.cxf.HelloService">
<cxf:outInterceptors>
<ref bean="loggingOutInterceptor"/>
</cxf:outInterceptors>
<cxf:properties>
<entry key="dataFormat" value="MESSAGE"/>
</cxf:properties>
</cxf:cxfEndpoint>
77.8. relayHeaders 옵션에 대한 설명 링크 복사링크가 클립보드에 복사되었습니다!
JAXWSWS -first 개발자의 관점에서 볼 때 대역 외 및 대역 외 온-선 헤더가 있습니다.
인 밴드 헤더는 SOAP 헤더와 같은 끝점에 대한 WSDL 바인딩 계약의 일부로 명시적으로 정의된 헤더입니다.
대역 외 헤더는 유선을 통해 직렬화되는 헤더이지만 WSDL 바인딩 계약의 일부는 명시적으로 포함되지 않습니다.
헤더 릴레이/필터링은 양방향입니다.
경로에 CXF 엔드포인트가 있고 개발자가 SOAP 헤더와 같은 on-the-wire 헤더가 있어야 하는 경우 다른 JAXWS 엔드포인트에서 사용할 경로를 따라 릴레이된 다음 relayHeaders 를 true 로 설정해야 합니다. 그러면 relayHeaders는 기본값입니다.
77.9. POJO 모드에서만 사용 가능 링크 복사링크가 클립보드에 복사되었습니다!
relayHeaders=true 설정은 헤더를 릴레이하려는 의도를 표시합니다. 지정된 헤더를 릴레이하는지 여부에 대한 실제 결정은 MessageHeadersRelay 인터페이스를 구현하는 플러그형 인스턴스에 위임됩니다. MessageHeadersRelay 의 구체적인 구현을 참조하여 헤더를 릴레이해야 하는지 여부를 결정합니다. 이미 잘 알려진 SOAP 네임 스페이스에 자체적으로 바인딩하는 SoapMessageHeadersRelay 구현이 이미 있습니다. 현재 대역 외 헤더만 필터링되고, relayHeaders=true 일 때 항상 대역 내 헤더가 중계됩니다. 이름 공간이 런타임에서 알 수 없는 전선에 헤더가 있는 경우 fall DefaultMessageHeadersRelay 가 사용됩니다. 그러면 단순히 모든 헤더를 릴레이할 수 있습니다.
relayHeaders=false 설정은 모든 헤더, 대역 내 및 대역 외가 삭제됨을 나타냅니다.
자체 MessageHeadersRelay 구현을 재정의하거나 릴레이 목록에 추가할 수 있습니다. 사전 로드된 릴레이 인스턴스를 재정의하려면 MessageHeadersRelay 구현 서비스가 재정의하려는 것과 동일한 네임 스페이스를 제공하는지 확인하십시오. 또한 덮어쓰기 릴레이는 모든 네임 스페이스를 재정의하려는 항목으로 제공해야 합니다. 그러지 않으면 인스턴스 매핑을 릴레이하는 네임 스페이스에 모호함을 도입하므로 라우팅 시작 시 런타임 예외가 throw됩니다.
<cxf:cxfEndpoint ...>
<cxf:properties>
<entry key="org.apache.camel.cxf.message.headers.relays">
<list>
<ref bean="customHeadersRelay"/>
</list>
</entry>
</cxf:properties>
</cxf:cxfEndpoint>
<bean id="customHeadersRelay" class="org.apache.camel.component.cxf.soap.headers.CustomHeadersRelay"/>
여기에서 릴레이/drop 헤더를 릴레이할 수 있는 방법을 보여주는 테스트를 살펴보십시오.
77.10. Release 2.0 이후의 변경 링크 복사링크가 클립보드에 복사되었습니다!
-
POJO및PAYLOAD모드가 지원됩니다.POJO모드에서는 대역 내 헤더가 CXF에 의해 헤더 목록에서 처리 및 제거됨에 따라 대역 외 메시지 헤더만 필터링할 수 있습니다. 대역 내 헤더는POJO모드의MessageContentList에 통합되어 있습니다.camel-cxf구성 요소에서 대역 내 헤더를 필터링해야 하는 경우, CXF 인터셉터/JAXWS Handler에PAYLOAD모드 또는 플러그를 사용하여 (prettyly) CXF 인터셉터/JAXWS Handler를 사용하여MessageContentList에서 인 대역폭 헤더를 제거하려고 합니다. Message Header Relay 메커니즘이
CxfHeaderFilterStrategy에 병합되었습니다.relayHeaders옵션, 해당 의미 체계 및 기본값은 동일하게 유지되지만CxfHeaderFilterStrategy의 속성입니다. 다음은 이를 구성하는 예입니다.<bean id="dropAllMessageHeadersStrategy" class="org.apache.camel.component.cxf.common.header.CxfHeaderFilterStrategy"> <!-- Set relayHeaders to false to drop all SOAP headers --> <property name="relayHeaders" value="false"/> </bean>그런 다음 끝점에서
CxfHeaderFilterStrategy를 참조할 수 있습니다.<route> <from uri="cxf:bean:routerNoRelayEndpoint?headerFilterStrategy=#dropAllMessageHeadersStrategy"/> <to uri="cxf:bean:serviceNoRelayEndpoint?headerFilterStrategy=#dropAllMessageHeadersStrategy"/> </route>MessageHeadersRelay인터페이스가 약간 변경되었으며 이름이MessageHeaderFilter로 변경되었습니다.CxfHeaderFilterStrategy의 속성입니다. 다음은 사용자 정의 메시지 헤더 필터를 구성하는 예입니다.<bean id="customMessageFilterStrategy" class="org.apache.camel.component.cxf.common.header.CxfHeaderFilterStrategy"> <property name="messageHeaderFilters"> <list> <!-- SoapMessageHeaderFilter is the built in filter. It can be removed by omitting it. --> <bean class="org.apache.camel.component.cxf.common.header.SoapMessageHeaderFilter"/> <!-- Add custom filter here --> <bean class="org.apache.camel.component.cxf.soap.headers.CustomHeaderFilter"/> </list> </property> </bean>-
relayHeaders외에CxfHeaderFilterStrategy에서 구성할 수 있는 새로운 속성이 있습니다.
| 이름 | 설명 | type | 필수 여부 | 기본값 |
|
| 모든 메시지 헤더는 Message Header Filters에 의해 처리됩니다. |
| 없음 |
|
|
| 모든 메시지 헤더가 전파됩니다(메시지 헤더 필터에 의한 처리 없이) |
| 없음 |
|
|
|
활성화 네임스페이스에서 두 필터가 겹치는 경우 속성은 처리 방법을 제어합니다. 값이 |
| 없음 |
|
77.11. Spring을 사용하여 CXF 엔드포인트 구성 링크 복사링크가 클립보드에 복사되었습니다!
아래에 표시된 Spring 구성 파일을 사용하여 CXF 엔드포인트를 구성할 수 있으며, 해당 엔드포인트를 camelContext 태그에 포함할 수도 있습니다. 서비스 끝점을 호출할 때 operationName 및 operationNamespace 헤더를 호출할 작업을 명시적으로 state로 설정할 수 있습니다.
참고 Camel 2.x에서는 http://camel.apache.org/schema/cxf 을 CXF 엔드포인트의 대상 네임스페이스로 사용하도록 변경되었습니다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cxf="http://camel.apache.org/schema/cxf"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd ">
...
Apache Camel 2.x에서 http://activemq.apache.org/camel/schema/cxfEndpoint 네임스페이스가 http://camel.apache.org/schema/cxf 로 변경되었습니다.
루트 빈 요소에 지정된 JAX-WS 스키마Location 속성을 포함해야 합니다. 이를 통해 CXF는 파일의 유효성을 검사하고 필요합니다. 또한 결합된 {namespace}localName 구문이 현재 이 태그의 특성 값에 대해 지원되지 않으므로 < cxf:cxfEndpoint /> 태그의 끝에 네임스페이스 선언이 필요합니다.
cxf:cxfEndpoint 요소는 다음과 같은 많은 추가 특성을 지원합니다.
| 이름 | 값 |
|
|
이 서비스가 구현되는 엔드포인트 이름은 |
|
|
이 서비스가 구현되고 있는 서비스 이름은 |
|
| WSDL의 위치입니다. classpath, 파일 시스템에 있거나 원격으로 호스팅될 수 있습니다. |
|
|
사용할 서비스 모델의 |
|
| 서비스는 공개 주소입니다. |
|
| JAX-WS 엔드포인트에서 사용할 버스 이름입니다. |
|
| JSR181 주석이 있거나 없을 수 있는 SEI(Service Endpoint Interface) 클래스의 클래스 이름입니다. |
또한 많은 자식 요소를 지원합니다.
| 이름 | 값 |
|
|
이 끝점의 들어오는 인터셉터입니다. < |
|
|
이 끝점에 대한 들어오는 오류 인터셉터입니다. < |
|
|
이 끝점의 발신 인터셉터입니다. < |
|
|
이 끝점의 발신 오류 인터셉터입니다. < |
|
| JAX-WS 엔드포인트에 제공해야 하는 속성 맵입니다. 아래를 참조하십시오. |
|
| JAX-WS 엔드포인트에 제공해야 하는 JAX-WS 핸들러 목록입니다. 아래를 참조하십시오. |
|
|
끝점에서 사용할 DataBinding을 지정할 수 있습니다.You can specify the |
|
|
이 끝점에서 사용할 |
|
|
이 끝점에 대한 인터셉터를 보유하는 기능입니다. < |
|
|
사용할 끝점의 스키마 위치입니다. < |
|
|
이 엔드포인트에서 사용할 서비스 팩토리입니다. 이는 Spring < |
인터셉터, 속성 및 핸들러를 제공하는 방법을 보여주는 고급 예제를 찾을 수 있습니다. http://cwiki.apache.org/CXF20DOC/jax-ws-configuration.html
CXF:properties를 사용하여 Spring 구성 파일에서 CXF 끝점의 dataFormat 및 setDefaultBus 속성을 다음과 같이 설정할 수 있습니다.
<cxf:cxfEndpoint id="testEndpoint" address="http://localhost:9000/router"
serviceClass="org.apache.camel.component.cxf.HelloService"
endpointName="s:PortName"
serviceName="s:ServiceName"
xmlns:s="http://www.example.com/test">
<cxf:properties>
<entry key="dataFormat" value="MESSAGE"/>
<entry key="setDefaultBus" value="true"/>
</cxf:properties>
</cxf:cxfEndpoint>
77.12. camel-cxf 구성 요소가 java.util.logging 대신 log4j를 사용하도록 설정하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
CXF의 기본 로거는 java.util.logging 입니다. log4j 로 변경하려면 다음과 같이 진행하십시오. META-INF/cxf/org.apache.cxf.logger 라는 클래스 경로에 파일을 만듭니다. 이 파일에는 주석이 없는 org.apache.cxf.common.logging.Log4jLogger 클래스의 정규화된 이름이 포함되어야 합니다.
77.13. xml 시작 문서로 camel-cxf 응답 메시지를 보내는 방법 링크 복사링크가 클립보드에 복사되었습니다!
PHP와 같은 몇 가지 SOAP 클라이언트를 사용하는 경우 CXF가 XML 시작 문서 < ?xml 버전="1.0" encoding="utf-8"? >을 추가하지 않기 때문에 이러한 종류의 오류가 발생합니다.
Error:sendSms: SoapFault exception: [Client] looks like we got no XML document in [...]
이 문제를 해결하려면 StaxOutInterceptor에 XML 시작 문서를 작성해야 합니다.
public class WriteXmlDeclarationInterceptor extends AbstractPhaseInterceptor<SoapMessage> {
public WriteXmlDeclarationInterceptor() {
super(Phase.PRE_STREAM);
addBefore(StaxOutInterceptor.class.getName());
}
public void handleMessage(SoapMessage message) throws Fault {
message.put("org.apache.cxf.stax.force-start-document", Boolean.TRUE);
}
}
고객 인터셉터를 다음과 같이 추가하고 camel-cxf endpont로 구성할 수 있습니다.
<cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:${CXFTestSupport.port2}/CXFGreeterRouterTest/CamelContext/RouterPort"
serviceClass="org.apache.hello_world_soap_http.GreeterImpl"
skipFaultLogging="true">
<cxf:outInterceptors>
<!-- This interceptor will force the CXF server send the XML start document to client -->
<bean class="org.apache.camel.component.cxf.WriteXmlDeclarationInterceptor"/>
</cxf:outInterceptors>
<cxf:properties>
<!-- Set the publishedEndpointUrl which could override the service address from generated WSDL as you want -->
<entry key="publishedEndpointUrl" value="http://www.simple.com/services/test" />
</cxf:properties>
</cxf:cxfEndpoint>
또는 Camel 2.4 를 사용하는 경우 이와 같이 메시지 헤더를 추가합니다.
// set up the response context which force start document
Map<String, Object> map = new HashMap<String, Object>();
map.put("org.apache.cxf.stax.force-start-document", Boolean.TRUE);
exchange.getOut().setHeader(Client.RESPONSE_CONTEXT, map);
77.14. POJO 데이터 형식의 camel-cxf 끝점에서 메시지를 사용하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
camel-cxf 엔드포인트 소비자 POJO 데이터 형식은 cxf 호출자 를 기반으로 하므로 메시지 헤더에는 CxfConstants.OPERATION_NAME 및 메시지 본문이 SEI 메서드 매개 변수의 목록입니다.
public class PersonProcessor implements Processor {
private static final transient Logger LOG = LoggerFactory.getLogger(PersonProcessor.class);
@SuppressWarnings("unchecked")
public void process(Exchange exchange) throws Exception {
LOG.info("processing exchange in camel");
BindingOperationInfo boi = (BindingOperationInfo)exchange.getProperty(BindingOperationInfo.class.toString());
if (boi != null) {
LOG.info("boi.isUnwrapped" + boi.isUnwrapped());
}
// Get the parameters list which element is the holder.
MessageContentsList msgList = (MessageContentsList)exchange.getIn().getBody();
Holder<String> personId = (Holder<String>)msgList.get(0);
Holder<String> ssn = (Holder<String>)msgList.get(1);
Holder<String> name = (Holder<String>)msgList.get(2);
if (personId.value == null || personId.value.length() == 0) {
LOG.info("person id 123, so throwing exception");
// Try to throw out the soap fault message
org.apache.camel.wsdl_first.types.UnknownPersonFault personFault =
new org.apache.camel.wsdl_first.types.UnknownPersonFault();
personFault.setPersonId("");
org.apache.camel.wsdl_first.UnknownPersonFault fault =
new org.apache.camel.wsdl_first.UnknownPersonFault("Get the null value of person name", personFault);
// Since camel has its own exception handler framework, we can't throw the exception to trigger it
// We just set the fault message in the exchange for camel-cxf component handling and return
exchange.getOut().setFault(true);
exchange.getOut().setBody(fault);
return;
}
name.value = "Bonjour";
ssn.value = "123";
LOG.info("setting Bonjour as the response");
// Set the response message, first element is the return value of the operation,
// the others are the holders of method parameters
exchange.getOut().setBody(new Object[] {null, personId, ssn, name});
}
}
77.15. POJO 데이터 형식에서 camel-cxf 엔드포인트에 대한 메시지를 준비하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
camel-cxf 엔드포인트 생산자는 cxf 클라이언트 API 를 기반으로 합니다. 먼저 메시지 헤더에 작업 이름을 지정한 다음 메서드 매개 변수를 목록에 추가하고 이 매개변수 목록을 사용하여 메시지를 초기화해야 합니다. 응답 메시지의 본문은 messageContentsList 이므로 해당 목록에서 결과를 가져올 수 있습니다.
메시지 헤더에 작업 이름을 지정하지 않으면 CxfProducer 는 CxfEndpoint 에서 defaultOperationName 을 사용합니다. CxfEndpoint 에 defaultOperationName 이 설정되어 있지 않으면 작업 목록에서 첫 번째 작업 이름을 선택합니다.
메시지 본문에서 개체 배열을 가져오려면 다음과 같이 message.getbody(Object[].class) 를 사용하여 본문을 가져올 수 있습니다.
Exchange senderExchange = new DefaultExchange(context, ExchangePattern.InOut);
final List<String> params = new ArrayList<String>();
// Prepare the request message for the camel-cxf procedure
params.add(TEST_MESSAGE);
senderExchange.getIn().setBody(params);
senderExchange.getIn().setHeader(CxfConstants.OPERATION_NAME, ECHO_OPERATION);
Exchange exchange = template.send("direct:EndpointA", senderExchange);
org.apache.camel.Message out = exchange.getOut();
// The response message's body is an MessageContentsList which first element is the return value of the operation,
// If there are some holder parameters, the holder parameter will be filled in the reset of List.
// The result will be extract from the MessageContentsList with the String class type
MessageContentsList result = (MessageContentsList)out.getBody();
LOG.info("Received output text: " + result.get(0));
Map<String, Object> responseContext = CastUtils.cast((Map<?, ?>)out.getHeader(Client.RESPONSE_CONTEXT));
assertNotNull(responseContext);
assertEquals("We should get the response context here", "UTF-8", responseContext.get(org.apache.cxf.message.Message.ENCODING));
assertEquals("Reply body on Camel is wrong", "echo " + TEST_MESSAGE, result.get(0));
77.16. PAYLOAD 데이터 형식의 camel-cxf 엔드포인트에 대한 메시지를 처리하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
Apache Camel 2.0: CxfMessage.getBody() 는 SOAP 메시지 헤더 및 Body 요소에 대한 getter가 있는 org.apache.camel.component.cxf.CxfPayload 오브젝트를 반환합니다. 이러한 변경으로 기본 CXF 메시지를 Apache Camel 메시지에서 분리할 수 있습니다.
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
from(SIMPLE_ENDPOINT_URI + "&dataFormat=PAYLOAD").to("log:info").process(new Processor() {
@SuppressWarnings("unchecked")
public void process(final Exchange exchange) throws Exception {
CxfPayload<SoapHeader> requestPayload = exchange.getIn().getBody(CxfPayload.class);
List<Source> inElements = requestPayload.getBodySources();
List<Source> outElements = new ArrayList<Source>();
// You can use a customer toStringConverter to turn a CxfPayLoad message into String as you want
String request = exchange.getIn().getBody(String.class);
XmlConverter converter = new XmlConverter();
String documentString = ECHO_RESPONSE;
Element in = new XmlConverter().toDOMElement(inElements.get(0));
// Just check the element namespace
if (!in.getNamespaceURI().equals(ELEMENT_NAMESPACE)) {
throw new IllegalArgumentException("Wrong element namespace");
}
if (in.getLocalName().equals("echoBoolean")) {
documentString = ECHO_BOOLEAN_RESPONSE;
checkRequest("ECHO_BOOLEAN_REQUEST", request);
} else {
documentString = ECHO_RESPONSE;
checkRequest("ECHO_REQUEST", request);
}
Document outDocument = converter.toDOMDocument(documentString);
outElements.add(new DOMSource(outDocument.getDocumentElement()));
// set the payload header with null
CxfPayload<SoapHeader> responsePayload = new CxfPayload<SoapHeader>(null, outElements, null);
exchange.getOut().setBody(responsePayload);
}
});
}
};
}
77.17. How to get and set SOAP headers in POJO mode 링크 복사링크가 클립보드에 복사되었습니다!
POJO 는 CXF 엔드포인트가 Camel Exchange를 생성하거나 사용할 때 데이터 형식이 Java 개체의 목록 임을 의미합니다. Apache Camel은 이 모드에서 메시지 본문을 POJO로 공개하지만 CXF 구성 요소는 SOAP 헤더를 읽고 쓸 수 있는 액세스 권한을 계속 제공합니다. 그러나 CXF 인터셉터는 처리된 후 헤더 목록에서 인 대역 내 SOAP 헤더를 제거하므로 대역 외 SOAP 헤더만 POJO 모드에서 사용할 수 있습니다.
다음 예제에서는 SOAP 헤더를 가져오거나 설정하는 방법을 보여줍니다. 한 CXF 끝점에서 다른 CXF 엔드포인트로 전달하는 경로가 있다고 가정합니다. 즉, SOAP 클라이언트 → Apache Camel → CXF 서비스입니다. 요청이 CXF 서비스에 나가기 전에 (1)에 SOAP 헤더를 가져오고 삽입하기 위해 두 개의 프로세서를 연결하고, (2) 응답이 SOAP Client로 되돌아오기 전에 연결할 수 있습니다. 이 예에서 프로세서 (1) 및 (2)는 InsertRequestOutHeaderProcessor 및 InsertResponseOutHeaderProcessor입니다. 우리의 경로는 다음과 같습니다.
<route>
<from uri="cxf:bean:routerRelayEndpointWithInsertion"/>
<process ref="InsertRequestOutHeaderProcessor" />
<to uri="cxf:bean:serviceRelayEndpointWithInsertion"/>
<process ref="InsertResponseOutHeaderProcessor" />
</route>
2.x SOAP 헤더는 Apache Camel Message 헤더로 또는 Apache Camel Message 헤더로 전파됩니다. Apache Camel 메시지 헤더 이름은 org.apache.cxf.headers.Header.list 이며, CXF(org.apache.cxf.headers.Header.HEADER_LIST)에 정의된 상수입니다. 헤더 값은 CXF SoapHeader 오브젝트(org.apache.cxf.binding.soap.Soap.Soap.Soap)의 다음 스니펫은 List <>입니다.InsertResponseOutHeaderProcessor (응답 메시지에 새 SOAP 헤더를 삽입함)입니다. InsertResponseOutHeaderProcessor 및 InsertRequestOutHeaderProcessor 에서 SOAP 헤더에 액세스하는 방법은 실제로 동일합니다. 두 프로세서의 유일한 차이점은 삽입된 SOAP 헤더의 방향을 설정하는 것입니다.
public static class InsertResponseOutHeaderProcessor implements Processor {
@SuppressWarnings("unchecked")
public void process(Exchange exchange) throws Exception {
// You should be able to get the header if exchange is routed from camel-cxf endpoint
List<SoapHeader> soapHeaders = CastUtils.cast((List<?>)exchange.getIn().getHeader(Header.HEADER_LIST));
if (soapHeaders == null) {
// we just create a new soap headers in case the header is null
soapHeaders = new ArrayList<SoapHeader>();
}
// Insert a new header
String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><outofbandHeader "
+ "xmlns=\"http://cxf.apache.org/outofband/Header\" hdrAttribute=\"testHdrAttribute\" "
+ "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" soap:mustUnderstand=\"1\">"
+ "<name>New_testOobHeader</name><value>New_testOobHeaderValue</value></outofbandHeader>";
SoapHeader newHeader = new SoapHeader(soapHeaders.get(0).getName(),
DOMUtils.readXml(new StringReader(xml)).getDocumentElement());
// make sure direction is OUT since it is a response message.
newHeader.setDirection(Direction.DIRECTION_OUT);
//newHeader.setMustUnderstand(false);
soapHeaders.add(newHeader);
}
}
77.18. PAYLOAD 모드에서 SOAP 헤더를 가져오고 설정하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
PAYLOAD 모드에서 SOAP 메시지(CxfPayload 오브젝트)에 액세스하는 방법을 이미 보여주었습니다( “PAYLOAD 데이터 형식의 camel-cxf 엔드포인트에 대한 메시지를 처리하는 방법”참조).
CxfPayload 오브젝트를 확보하면 CxfPayload.getHeaders() 메서드를 호출하여 DOM Elements(SOAP 헤더) 목록 을 반환합니다.
from(getRouterEndpointURI()).process(new Processor() {
@SuppressWarnings("unchecked")
public void process(Exchange exchange) throws Exception {
CxfPayload<SoapHeader> payload = exchange.getIn().getBody(CxfPayload.class);
List<Source> elements = payload.getBodySources();
assertNotNull("We should get the elements here", elements);
assertEquals("Get the wrong elements size", 1, elements.size());
Element el = new XmlConverter().toDOMElement(elements.get(0));
elements.set(0, new DOMSource(el));
assertEquals("Get the wrong namespace URI", "http://camel.apache.org/pizza/types",
el.getNamespaceURI());
List<SoapHeader> headers = payload.getHeaders();
assertNotNull("We should get the headers here", headers);
assertEquals("Get the wrong headers size", headers.size(), 1);
assertEquals("Get the wrong namespace URI",
((Element)(headers.get(0).getObject())).getNamespaceURI(),
"http://camel.apache.org/pizza/types");
}
})
.to(getServiceEndpointURI());
Camel 2.16.0부터 “How to get and set SOAP headers in POJO mode” 에 설명된 것과 동일한 방법을 사용하여 SOAP 헤더를 설정하거나 가져올 수 있습니다. 이제 org.apache.cxf.headers.Header.list 헤더를 사용하여 SOAP 헤더 목록을 가져오고 설정할 수 있습니다. 즉, 하나의 Camel CXF 끝점에서 다른 (SOAP Client → Camel → CXF 서비스)로 전달하는 경로가 있는 경우 SOAP 클라이언트에서 보낸 SOAP 헤더도 CXF 서비스로 전달됩니다. 헤더를 전달하지 않으려면 org.apache.cxf.headers.Header.list Camel 헤더에서 해당 헤더를 제거합니다.
77.19. MESSAGE 모드에서는 SOAP 헤더를 사용할 수 없습니다. 링크 복사링크가 클립보드에 복사되었습니다!
SOAP 처리를 건너뛰기 때문에 MESSAGE 모드에서 SOAP 헤더를 사용할 수 없습니다.
77.20. Apache Camel에서 SOAP Fault를 throw하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
SOAP 요청을 사용하기 위해 CXF 엔드포인트를 사용하는 경우 camel 컨텍스트에서 SOAP Fault 를 throw해야 할 수 있습니다. 기본적으로 throwFault DSL을 사용하여 이 작업을 수행할 수 있습니다. POJO,PAYLOAD 및 MESSAGE 데이터 형식에 대해 작동합니다. 다음과 같이 soap 오류를 정의할 수 있습니다.
SOAP_FAULT = new SoapFault(EXCEPTION_MESSAGE, SoapFault.FAULT_CODE_CLIENT);
Element detail = SOAP_FAULT.getOrCreateDetail();
Document doc = detail.getOwnerDocument();
Text tn = doc.createTextNode(DETAIL_TEXT);
detail.appendChild(tn);
그런 다음, 원하는 대로 던질 수 있습니다:
from(routerEndpointURI).setFaultBody(constant(SOAP_FAULT));
CXF 끝점이 MESSAGE 데이터 형식으로 작동하는 경우 메시지 본문에서 SOAP Fault 메시지를 설정하고 메시지 헤더에 응답 코드를 설정할 수 있습니다.
from(routerEndpointURI).process(new Processor() {
public void process(Exchange exchange) throws Exception {
Message out = exchange.getOut();
// Set the message body with the
out.setBody(this.getClass().getResourceAsStream("SoapFaultMessage.xml"));
// Set the response code here
out.setHeader(org.apache.cxf.message.Message.RESPONSE_CODE, new Integer(500));
}
});
POJO 데이터 형식에도 마찬가지입니다. Out body에 SOAP Fault를 설정하고 다음과 같이 Message.setFault(true) 를 호출하여 오류임을 나타낼 수 있습니다.
from("direct:start").onException(SoapFault.class).maximumRedeliveries(0).handled(true)
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
SoapFault fault = exchange
.getProperty(Exchange.EXCEPTION_CAUGHT, SoapFault.class);
exchange.getOut().setFault(true);
exchange.getOut().setBody(fault);
}
}).end().to(serviceURI);
77.21. CXF 엔드포인트의 요청 및 응답 컨텍스트를 전파하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
CXF 클라이언트 API 는 요청 및 응답 컨텍스트를 사용하여 작업을 호출할 수 있는 방법을 제공합니다. CXF 엔드포인트 생산자를 사용하여 외부 웹 서비스를 호출하는 경우 요청 컨텍스트를 설정하고 다음 코드로 응답 컨텍스트를 가져올 수 있습니다.
CxfExchange exchange = (CxfExchange)template.send(getJaxwsEndpointUri(), new Processor() {
public void process(final Exchange exchange) {
final List<String> params = new ArrayList<String>();
params.add(TEST_MESSAGE);
// Set the request context to the inMessage
Map<String, Object> requestContext = new HashMap<String, Object>();
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, JAXWS_SERVER_ADDRESS);
exchange.getIn().setBody(params);
exchange.getIn().setHeader(Client.REQUEST_CONTEXT , requestContext);
exchange.getIn().setHeader(CxfConstants.OPERATION_NAME, GREET_ME_OPERATION);
}
});
org.apache.camel.Message out = exchange.getOut();
// The output is an object array, the first element of the array is the return value
Object\[\] output = out.getBody(Object\[\].class);
LOG.info("Received output text: " + output\[0\]);
// Get the response context form outMessage
Map<String, Object> responseContext = CastUtils.cast((Map)out.getHeader(Client.RESPONSE_CONTEXT));
assertNotNull(responseContext);
assertEquals("Get the wrong wsdl opertion name", "{http://apache.org/hello_world_soap_http}greetMe",
responseContext.get("javax.xml.ws.wsdl.operation").toString());
77.22. 첨부 파일 지원 링크 복사링크가 클립보드에 복사되었습니다!
POJO 모드: Attachment 및 MTOM을 사용하는 SOAP가 모두 지원됩니다( MTOM 활성화를 위한 Payload Mode 예제 참조). 그러나 Attachment를 사용한 SOAP은 테스트되지 않습니다. 첨부 파일은 POJO로 마샬링 및 손상되지 않으므로 일반적으로 사용자는 첨부 파일을 직접 처리할 필요가 없습니다. 첨부 파일은 2.1 이후 Camel 메시지의 첨부 파일에 전파됩니다. 따라서 Camel Message API로 다시 연결할 수 있습니다.
DataHandler Message.getAttachment(String id)
.
페이로드 모드: MTOM은 2.1 이후 지원됩니다. 위에서 언급한 Camel Message API를 통해 첨부 파일을 검색할 수 있습니다. 이 모드에서는 SOAP 처리가 없기 때문에 Attachment를 사용한 SOAP가 지원되지 않습니다.
MTOM을 활성화하려면 CXF 엔드포인트 속성 "mtom_enabled"를 true 로 설정합니다. (나는 봄에만 할 수 있다고 생각합니다.)
<cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:${CXFTestSupport.port1}/CxfMtomRouterPayloadModeTest/jaxws-mtom/hello"
wsdlURL="mtom.wsdl"
serviceName="ns:HelloService"
endpointName="ns:HelloPort"
xmlns:ns="http://apache.org/camel/cxf/mtom_feature">
<cxf:properties>
<!-- enable mtom by setting this property to true -->
<entry key="mtom-enabled" value="true"/>
<!-- set the camel-cxf endpoint data fromat to PAYLOAD mode -->
<entry key="dataFormat" value="PAYLOAD"/>
</cxf:properties>
Payload 모드에서 CXF 엔드포인트에 보낼 첨부 파일로 Camel 메시지를 생성할 수 있습니다.
Exchange exchange = context.createProducerTemplate().send("direct:testEndpoint", new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.setPattern(ExchangePattern.InOut);
List<Source> elements = new ArrayList<Source>();
elements.add(new DOMSource(DOMUtils.readXml(new StringReader(MtomTestHelper.REQ_MESSAGE)).getDocumentElement()));
CxfPayload<SoapHeader> body = new CxfPayload<SoapHeader>(new ArrayList<SoapHeader>(),
elements, null);
exchange.getIn().setBody(body);
exchange.getIn().addAttachment(MtomTestHelper.REQ_PHOTO_CID,
new DataHandler(new ByteArrayDataSource(MtomTestHelper.REQ_PHOTO_DATA, "application/octet-stream")));
exchange.getIn().addAttachment(MtomTestHelper.REQ_IMAGE_CID,
new DataHandler(new ByteArrayDataSource(MtomTestHelper.requestJpeg, "image/jpeg")));
}
});
// process response
CxfPayload<SoapHeader> out = exchange.getOut().getBody(CxfPayload.class);
Assert.assertEquals(1, out.getBody().size());
Map<String, String> ns = new HashMap<String, String>();
ns.put("ns", MtomTestHelper.SERVICE_TYPES_NS);
ns.put("xop", MtomTestHelper.XOP_NS);
XPathUtils xu = new XPathUtils(ns);
Element oute = new XmlConverter().toDOMElement(out.getBody().get(0));
Element ele = (Element)xu.getValue("//ns:DetailResponse/ns:photo/xop:Include", oute,
XPathConstants.NODE);
String photoId = ele.getAttribute("href").substring(4); // skip "cid:"
ele = (Element)xu.getValue("//ns:DetailResponse/ns:image/xop:Include", oute,
XPathConstants.NODE);
String imageId = ele.getAttribute("href").substring(4); // skip "cid:"
DataHandler dr = exchange.getOut().getAttachment(photoId);
Assert.assertEquals("application/octet-stream", dr.getContentType());
MtomTestHelper.assertEquals(MtomTestHelper.RESP_PHOTO_DATA, IOUtils.readBytesFromStream(dr.getInputStream()));
dr = exchange.getOut().getAttachment(imageId);
Assert.assertEquals("image/jpeg", dr.getContentType());
BufferedImage image = ImageIO.read(dr.getInputStream());
Assert.assertEquals(560, image.getWidth());
Assert.assertEquals(300, image.getHeight());
Payload 모드에서 CXF 엔드포인트에서 받은 Camel 메시지를 사용할 수도 있습니다.
public static class MyProcessor implements Processor {
@SuppressWarnings("unchecked")
public void process(Exchange exchange) throws Exception {
CxfPayload<SoapHeader> in = exchange.getIn().getBody(CxfPayload.class);
// verify request
assertEquals(1, in.getBody().size());
Map<String, String> ns = new HashMap<String, String>();
ns.put("ns", MtomTestHelper.SERVICE_TYPES_NS);
ns.put("xop", MtomTestHelper.XOP_NS);
XPathUtils xu = new XPathUtils(ns);
Element body = new XmlConverter().toDOMElement(in.getBody().get(0));
Element ele = (Element)xu.getValue("//ns:Detail/ns:photo/xop:Include", body,
XPathConstants.NODE);
String photoId = ele.getAttribute("href").substring(4); // skip "cid:"
assertEquals(MtomTestHelper.REQ_PHOTO_CID, photoId);
ele = (Element)xu.getValue("//ns:Detail/ns:image/xop:Include", body,
XPathConstants.NODE);
String imageId = ele.getAttribute("href").substring(4); // skip "cid:"
assertEquals(MtomTestHelper.REQ_IMAGE_CID, imageId);
DataHandler dr = exchange.getIn().getAttachment(photoId);
assertEquals("application/octet-stream", dr.getContentType());
MtomTestHelper.assertEquals(MtomTestHelper.REQ_PHOTO_DATA, IOUtils.readBytesFromStream(dr.getInputStream()));
dr = exchange.getIn().getAttachment(imageId);
assertEquals("image/jpeg", dr.getContentType());
MtomTestHelper.assertEquals(MtomTestHelper.requestJpeg, IOUtils.readBytesFromStream(dr.getInputStream()));
// create response
List<Source> elements = new ArrayList<Source>();
elements.add(new DOMSource(DOMUtils.readXml(new StringReader(MtomTestHelper.RESP_MESSAGE)).getDocumentElement()));
CxfPayload<SoapHeader> sbody = new CxfPayload<SoapHeader>(new ArrayList<SoapHeader>(),
elements, null);
exchange.getOut().setBody(sbody);
exchange.getOut().addAttachment(MtomTestHelper.RESP_PHOTO_CID,
new DataHandler(new ByteArrayDataSource(MtomTestHelper.RESP_PHOTO_DATA, "application/octet-stream")));
exchange.getOut().addAttachment(MtomTestHelper.RESP_IMAGE_CID,
new DataHandler(new ByteArrayDataSource(MtomTestHelper.responseJpeg, "image/jpeg")));
}
}
메시지 모드: 첨부 파일은 메시지를 처리하지 않으므로 지원되지 않습니다.
CXF_MESSAGE 모드: MTOM이 지원되며 위에서 언급한 Camel Message API를 통해 첨부 파일을 검색할 수 있습니다. 멀티 파트 (즉, MTOM) 메시지를 수신할 때 기본 SOAPMessage to String 변환기가 본문에 대한 전체 멀티 파트 페이로드를 제공합니다. SOAP XML만 문자열이 필요한 경우 message.getSOAPPart() 를 사용하여 메시지 본문을 설정할 수 있으며 Camel 변환은 나머지 작업을 수행할 수 있습니다.
77.23. 스택 추적 정보를 전파하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
서버 측에서 Java 예외가 throw되면 예외에 대한 스택 추적이 오류 메시지로 마샬링되고 클라이언트에 반환되는 CXF 엔드포인트를 구성할 수 있습니다. 이 feaure를 활성화하려면 dataFormat 을 PAYLOAD 로 설정하고 cxfEndpoint 요소에서 faultStackTraceEnabled 속성을 true 로 설정합니다.
<cxf:cxfEndpoint id="router" address="http://localhost:9002/TestMessage"
wsdlURL="ship.wsdl"
endpointName="s:TestSoapEndpoint"
serviceName="s:TestService"
xmlns:s="http://test">
<cxf:properties>
<!-- enable sending the stack trace back to client; the default value is false-->
<entry key="faultStackTraceEnabled" value="true" /> <entry key="dataFormat" value="PAYLOAD" />
</cxf:properties>
</cxf:cxfEndpoint>
보안상의 이유로 스택 추적에는 원인이 되는 예외(즉, 스택 추적의 일부)가 포함되어 있지 않습니다. 스택 추적에 causing 예외를 포함하려면 cxfEndpoint 요소에서 exceptionMessage causesEnabled 속성을 true 로 설정합니다.
<cxf:cxfEndpoint id="router" address="http://localhost:9002/TestMessage"
wsdlURL="ship.wsdl"
endpointName="s:TestSoapEndpoint"
serviceName="s:TestService"
xmlns:s="http://test">
<cxf:properties>
<!-- enable to show the cause exception message and the default value is false -->
<entry key="exceptionMessageCauseEnabled" value="true" />
<!-- enable to send the stack trace back to client, the default value is false-->
<entry key="faultStackTraceEnabled" value="true" />
<entry key="dataFormat" value="PAYLOAD" />
</cxf:properties>
</cxf:cxfEndpoint>
테스트 및 진단 목적으로 exceptionMessage causesEnabled 플래그만 활성화해야 합니다. 서버가 예외의 원래 원인을 숨기고 사용자가 서버를 더 쉽게 검색할 수 있도록 하는 것이 일반적입니다.
77.24. PAYLOAD 모드에서 스트리밍 지원 링크 복사링크가 클립보드에 복사되었습니다!
2.8.2에서 camel-cxf 구성 요소는 PAYLOAD 모드를 사용할 때 수신 메시지의 스트리밍을 지원합니다. 이전에는 들어오는 메시지가 완전히 DOM 구문 분석되었습니다. 대규모 메시지의 경우 시간이 오래 걸리고 상당한 양의 메모리를 사용합니다. 2.8.2부터, 수신 메시지는 라우팅되는 동안 javax.xml.transform.Source로 남아 있을 수 있으며, 아무 것도 페이로드를 수정하지 않으면 대상 목적지로 직접 스트리밍할 수 있습니다. 일반적인 "간단 프록시" 사용 사례(예:("cxf:…").to("cxf:…")의 경우 성능이 크게 향상되고 메모리 요구 사항이 크게 저하될 수 있습니다.
그러나 스트리밍이 적절하지 않거나 바람직하지 않은 경우가 있습니다. 스트리밍 특성으로 인해 처리 체인에서 나중에 수신될 때까지 잘못된 수신 XML이 캡처되지 않을 수 있습니다. 또한 특정 동작에서는 메시지를 그대로(예: WS-Security 또는 메시지 추적 등과 같이)로 구문 분석해야 할 수 있습니다.이 경우 스트리밍의 장점이 제한됩니다. 이 시점에서 스트리밍을 제어하는 두 가지 방법이 있습니다.
- endpoint 속성: "allowStreaming=false"를 끝점 속성으로 추가하여 스트리밍을 해제할 수 있습니다.
- 구성 요소 속성: CxfComponent 개체에도 해당 구성 요소에서 생성된 엔드포인트의 기본값을 설정할 수 있는 allowStreaming 속성이 있습니다.
- 글로벌 시스템 속성: "org.apache.camel.component.cxf.streaming"의 시스템 속성을 "false"에 추가하여 끌 수 있습니다. 즉, 글로벌 기본값을 설정하지만 위의 엔드포인트 속성을 설정하면 해당 끝점에 대한 이 값이 재정의됩니다.
77.25. 일반 CXF Dispatch 모드 사용 링크 복사링크가 클립보드에 복사되었습니다!
2.8.0에서 camel-cxf 구성 요소는 임의의 구조의 메시지를 전송할 수 있는 일반 CXF 디스패치 모드 를 지원합니다(즉, 특정 XML 스키마에 바인딩되지 않음). 이 모드를 사용하려면 CXF 끝점의 wsdlURL 및 serviceClass 속성만 지정하면 됩니다.
<cxf:cxfEndpoint id="testEndpoint" address="http://localhost:9000/SoapContext/SoapAnyPort">
<cxf:properties>
<entry key="dataFormat" value="PAYLOAD"/>
</cxf:properties>
</cxf:cxfEndpoint>
기본 CXF 디스패치 클라이언트는 특정 SOAPAction 헤더를 전송하지 않습니다. 따라서 대상 서비스에 특정 SOAPAction 값이 필요한 경우 키 SOAPAction(대소문자를 구분하지 않음)을 사용하여 Camel 헤더에 제공됩니다.
77.1. {wildfly}의 CXF 소비자 링크 복사링크가 클립보드에 복사되었습니다!
{wildfly}에서 camel-cxf 소비자의 구성은 독립 실행형 Camel의 구성과 다릅니다. 생산자 끝점은 정상적으로 작동합니다.
{wildfly}에서 camel-cxf 소비자는 컨테이너에서 제공하는 기본 Undertow HTTP 서버를 활용합니다. 서버는 undertow 하위 시스템 구성 내에 정의됩니다. 다음은 standalone.xml의 기본 구성의 발췌 내용입니다.
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
<buffer-cache name="default" />
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" />
<https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true" />
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content" />
<filter-ref name="server-header" />
<filter-ref name="x-powered-by-header" />
<http-invoker security-realm="ApplicationRealm" />
</host>
</server>
</subsystem>
이 인스턴스에서 Undertow는 http 및 https socket-binding에서 지정된 인터페이스 / 포트에서 수신 대기하도록 구성됩니다. 기본적으로 이는 https의 경우 http 및 8443의 포트 8080입니다.
예를 들어 다른 호스트 또는 포트 조합을 사용하여 끝점 소비자를 구성하면 서버 로그 파일에 경고가 표시됩니다. 예를 들어 다음 호스트 및 포트 구성은 무시됩니다.
<cxf:rsServer id="cxfRsConsumer"
address="http://somehost:1234/path/to/resource"
serviceClass="org.example.ServiceClass" />
<cxf:cxfEndpoint id="cxfWsConsumer"
address="http://somehost:1234/path/to/resource"
serviceClass="org.example.ServiceClass" />
[org.wildfly.extension.camel] (pool-2-thread-1) Ignoring configured host: http://somehost:1234/path/to/resource
그러나 소비자는 여전히 기본 호스트 localhost:8080 또는 localhost:8443에서 사용할 수 있습니다.
camel-cxf 소비자를 사용하는 애플리케이션은 WAR로 패키징 해야 합니다. 이전 {wildfly-camel} 릴리스에서 JAR과 같은 다른 유형의 아카이브는 허용되지만 더 이상 지원되지 않습니다.
77.1.1. 대체 포트 구성 링크 복사링크가 클립보드에 복사되었습니다!
대체 포트를 수락하려면 {wildfly} 하위 시스템 구성을 통해 대체 포트를 구성해야 합니다. 이 내용은 서버 문서에 설명되어 있습니다.
77.1.2. SSL 구성 링크 복사링크가 클립보드에 복사되었습니다!
SSL을 구성하려면 {wildfly} SSL 구성 가이드를 참조하십시오.
77.1.3. Elytron를 사용하여 보안 구성 링크 복사링크가 클립보드에 복사되었습니다!
{Wildfly-camel}는 Elytron 보안 프레임워크를 사용하여 camel-cxf 소비자 엔드포인트의 보안을 지원합니다.
77.1.3.1. 보안 도메인 구성 링크 복사링크가 클립보드에 복사되었습니다!
Elytron를 사용하여 {wildfly-camel} 애플리케이션을 보호하려면 WAR 배포의 WEB-INF/jboss-web.xml 내에서 애플리케이션 보안 도메인을 참조해야 합니다.
<jboss-web>
<security-domain>my-application-security-domain</security-domain>
</jboss-web>
< security-domain > 구성은 Undertow 하위 시스템에서 정의한 < application-security-domain >의 이름을 참조합니다. 예를 들어, Undertow 하위 시스템 < application-security-domain >은 다음과 같이 {wildfly} 서버 standalone.xml 구성 파일 내에 구성됩니다.
<subsystem xmlns="urn:jboss:domain:undertow:6.0">
...
<application-security-domains>
<application-security-domain name="my-application-security-domain" http-authentication-factory="application-http-authentication"/>
</application-security-domains>
</subsystem>
& lt;http-authentication-factory > application-http-authentication 은 Elytron 하위 시스템에 정의되어 있습니다. application-http-authentication 은 기본적으로 standalone.xml 및 standalone-full.xml 서버 구성 파일에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.
<subsystem xmlns="urn:wildfly:elytron:1.2">
...
<http>
...
<http-authentication-factory name="application-http-authentication" http-server-mechanism-factory="global" security-domain="ApplicationDomain">
<mechanism-configuration>
<mechanism mechanism-name="BASIC">
<mechanism-realm realm-name="Application Realm" />
</mechanism>
<mechanism mechanism-name="FORM" />
</mechanism-configuration>
</http-authentication-factory>
<provider-http-server-mechanism-factory name="global" />
</http>
...
</subsystem>
application >는 -http-authentication 이라는 <http-authentication-factoryApplicationDomain 이라는 Elytron 보안 도메인에 대한 참조를 보유하고 있습니다.
Elytron 하위 시스템을 구성하는 방법에 대한 자세한 내용은 Elytron 설명서 를 참조하십시오.
77.1.3.2. 보안 제약 조건, 인증 방법 및 보안 역할 구성 링크 복사링크가 클립보드에 복사되었습니다!
camel-cxf 소비자 엔드 포인트에 대한 보안 제약 조건, 인증 방법 및 보안 역할은 WAR 배포 WEB-INF/web.xml 내에서 구성할 수 있습니다. 예를 들어 BASIC 인증을 구성하려면 다음을 수행합니다.
<web-app>
<security-constraint>
<web-resource-collection>
<web-resource-name>secure</web-resource-name>
<url-pattern>/webservices/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>my-role</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<description>The role that is required to log in to /webservices/*</description>
<role-name>my-role</role-name>
</security-role>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>my-realm</realm-name>
</login-config>
</web-app>
Servlet Specification에 의해 정의된 < url-pattern >은 웹 애플리케이션의 컨텍스트 경로를 기준으로 합니다. 애플리케이션이 my-app.war 로 패키징된 경우 {wildfly}는 컨텍스트 경로 /my-app 및 < url-patternpattern > /webservices/* 가 /my-app 와 관련된 경로에 적용됩니다.
예를 들어 http://my-server/my-app/webservices/my-endpoint 에 대한 요청은 /webservices/* 패턴과 일치하지만 http://my-server/webservices/my-endpoint 는 일치하지 않습니다.
이는 {wildfly-camel}을 사용하면 기본 경로가 호스트 웹 애플리케이션 컨텍스트 경로 외부에 있는 camel-cxf 엔드포인트 소비자를 생성할 수 있기 때문에 중요합니다. 예를 들어 my-app.war 내부에 http://my-server/webservices/my-endpoint 용 camel-cxf 소비자를 생성할 수 있습니다.
컨텍스트 외부 엔드포인트에 대한 보안 제약 조건을 정의하기 위해 {wildfly-camel}는 세 개의 슬래시 /// 를 사용하여 패턴을 접두사하는 사용자 지정 비 표준 <url- pattern> 규칙을 지원합니다. 예를 들어 my-app.war 내에서 http://my-server/webservices/my-endpoint 을 보호하려면 web.xml 에 다음 구성을 추가합니다.
<web-app>
<security-constraint>
<web-resource-collection>
<web-resource-name>secure</web-resource-name>
<url-pattern>///webservices/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>my-role</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<description>The role that is required to log in to /webservices/*</description>
<role-name>my-role</role-name>
</security-role>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>my-realm</realm-name>
</login-config>
</web-app>
78장. CXF-RS 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.0에서 사용 가능
cxfrs: 구성 요소는 CXF에서 호스팅되는 JAX-RS 1.1 및 2.0 서비스에 연결하기 위해 Apache CXF 와의 통합을 제공합니다.
CXF를 소비자로 사용할 때 CXF 빈 구성 요소 를 사용하면 메시지 페이로드를 RESTful 또는 SOAP 웹 서비스로 처리에서 수신하는 방법을 파악할 수 있습니다. 이는 웹 서비스를 이용하기 위해 많은 수의 교통 수단을 사용할 가능성이 있습니다. 빈 구성 요소의 구성은 더 간단하고 Camel 및 CXF를 사용하여 웹 서비스를 구현하는 가장 빠른 방법을 제공합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cxf</artifactId>
<version>x.x.x</version> <!-- use the same version as your Camel core version -->
</dependency>
78.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
cxfrs://address?options
여기서 address 는 CXF 끝점의 주소를 나타냅니다.
cxfrs:bean:rsEndpoint
여기서 rsEndpoint 는 CXFRS 클라이언트 또는 서버를 제공하는 Spring 빈의 이름을 나타냅니다.
위의 두 스타일 모두 다음과 같이 URI에 옵션을 추가할 수 있습니다.
cxfrs:bean:cxfEndpoint?resourceClasses=org.apache.camel.rs.Example
78.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
CXF-RS 구성 요소는 아래에 나열된 3 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| useGlobalSslContext 매개변수 (보안) | 글로벌 SSL 컨텍스트 매개 변수의 사용을 활성화합니다. | false | boolean |
| headerFilterStrategy (filter) | 사용자 지정 org.apache.camel.spi.HeaderFilterStrategy를 사용하여 Camel 메시지로 헤더를 필터링하려면 다음을 수행합니다. | HeaderFilterStrategy | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
CXF-RS 엔드포인트는 URI 구문을 사용하여 구성됩니다.
cxfrs:beanId:address
다음 경로 및 쿼리 매개변수를 사용합니다.
78.2.1. 경로 매개 변수(2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| beanId | 기존 구성된 CxfRsEndpoint를 조회하려면 다음을 수행합니다. 빈: 를 접두사로 사용해야 합니다. | 문자열 | |
| 주소 | 서비스는 공개 주소입니다. | 문자열 |
78.2.2. 쿼리 매개변수(29 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 기능 (일반) | 기능 목록을 CxfRs 끝점으로 설정합니다. | list | |
| loggingFeatureEnabled (common) | 이 옵션을 사용하면 인바운드 및 아웃바운드 REST 메시지를 로그에 쓰는 CXF Logging 기능을 사용할 수 있습니다. | false | boolean |
| loggingSizeLimit (common) | 로깅 기능을 활성화할 때 로거가 출력되는 총 바이트 크기를 제한하기 위해. | int | |
| modelRef (일반) | 이 옵션은 주석 없이 리소스 클래스에 유용한 모델 파일을 지정하는 데 사용됩니다. 이 옵션을 사용하면 문서 전용 엔드포인트를 에뮬레이션하기 위해 서비스 클래스를 생략할 수 있습니다. | 문자열 | |
| 공급자 (공용) | 사용자 지정 JAX-RS 공급자 목록을 CxfRs 끝점으로 설정합니다. 쉼표로 구분된 등록에서 조회할 공급자 목록을 사용하여 문자열을 지정할 수 있습니다. | 문자열 | |
| resourceClasses (공용) | REST 서비스로 내보낼 리소스 클래스입니다. 여러 클래스를 쉼표로 구분할 수 있습니다. | list | |
| schemaLocations (공용) | 들어오는 XML 또는 JAXB 기반 JSON의 유효성을 검사하는 데 사용할 수 있는 스키마의 위치를 설정합니다. | list | |
| skipFaultLogging (일반) | 이 옵션은 phaseInterceptorChain이 catch하는 Fault 로깅을 건너뛰는지 여부를 제어합니다. | false | boolean |
| 바인딩Style (consumer) | 요청 및 응답이 Camel에 매핑되는 방법을 설정합니다. 두 가지 값: SimpleConsumer: 이 바인딩 스타일은 요청 매개변수, 다중 파트 등을 처리하여 IN 헤더, IN 첨부 파일 및 메시지 본문에 매핑합니다. 이는 org.apache.cxf.message.MessageContentsList의 낮은 수준의 처리를 제거하는 것을 목표로 합니다. 또한 응답 매핑에 더 많은 유연성과 단순성을 추가합니다. 사용자만 사용할 수 있습니다. 기본값: 기본 스타일입니다. 소비자의 경우 이 경로가 MessageContentsList에서 전달되면 경로에서 하위 수준 처리가 필요합니다. 이는 CXF 스택에서 들어오는 org.apache.cxf.message.MessageContentsList를 IN 메시지 본문으로 덤프하는 기존의 바인딩 스타일입니다. 그런 다음 사용자는 JAX-RS 메서드 서명에 의해 정의된 계약에 따라 이를 처리합니다. custom: 바인딩 옵션을 통해 사용자 정의 바인딩을 지정할 수 있습니다. | 기본값 | BindingStyle |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| publishedEndpointUrl (consumer) | 이 옵션은 리소스 주소 URL과 _wadl을 사용하여 액세스할 수 있는 WADL에서 게시한 endpointUrl을 재정의할 수 있습니다. | 문자열 | |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| cookieHandler (producer) | HTTP 세션을 유지 관리하도록 쿠키 처리기 구성 | CookieHandler | |
| HostnameVerifier (producer) | 사용할 호스트 이름 확인기입니다. 레지스트리에서 HostnameVerifier를 참조하려면 표기법을 사용합니다. | HostnameVerifier | |
| sslContextParameters (producer) | Camel SSL 설정 참조. 표기법을 사용하여 SSL 컨텍스트를 참조합니다. | SSLContextParameters | |
| throwExceptionOnFailure (producer) | 이 옵션은 CxfRsProducer에 반환 코드를 검사하도록 지시하고 반환 코드가 207보다 크면 Exception을 생성합니다. | true | boolean |
| httpClientAPI (producer) | true인 경우 CxfRsProducer는 HttpClientAPI를 사용하여 서비스를 호출합니다. false인 경우 CxfRsProducer는 ProxyClientAPI를 사용하여 서비스를 호출할 것입니다. | true | boolean |
| ignoreDeleteMethodMessage Body (producer) | 이 옵션은 HTTP API를 사용할 때 CxfRsProducer에 DELETE 메서드의 메시지 본문을 무시하도록 하는 데 사용됩니다. | false | boolean |
| maxClientCacheSize (producer) | 이 옵션을 사용하면 캐시의 최대 크기를 구성할 수 있습니다. 구현은 CxfProvider 및 CxfRsProvider에서 CXF 클라이언트 또는 ClientFactoryBean을 캐시합니다. | 10 | int |
| 바인딩 (advanced) | 사용자 지정 CxfBinding을 사용하여 Camel Message와 CXF 메시지 간의 바인딩을 제어합니다. | CxfRsBinding | |
| 버스 (advanced) | 사용자 정의 구성된 CXF 버스를 사용합니다. | 버스 | |
| ContinuationTimeout (advanced) | 이 옵션은 CXF 서버가 Jetty 또는 Servlet 전송을 사용하는 경우 기본적으로 CxfConsumer에서 사용할 수 있는 CXF 연속 타임아웃을 설정하는 데 사용됩니다. | 30000 | long |
| cxfRsEndpointConfigurer (advanced) | 이 옵션은 프로그래밍 방식으로 CXF 엔드포인트를 구성하도록 지원하는 org.apache.camel.component.cxf.jaxfRsEndpointConfigurer의 구현을 적용할 수 있습니다. 사용자는 CxfEndpointConfigurer의 configureServer/Client 메서드를 구현하여 CXF 서버 및 클라이언트를 구성할 수 있습니다. | CxfRsEndpoint Configurer | |
| defaultBus (advanced) | CXF 엔드포인트가 자체적으로 버스를 생성할 때 기본 버스를 설정합니다. | false | boolean |
| headerFilterStrategy (advanced) | 사용자 지정 HeaderFilterStrategy를 사용하여 Camel 메시지와의 헤더를 필터링합니다. | HeaderFilterStrategy | |
| performInvocation (advanced) | 옵션이 true이면 Camel은 리소스 클래스 인스턴스를 호출하고 추가 처리를 위해 response 오브젝트를 교환에 넣습니다. | false | boolean |
| propagateContexts (advanced) | 옵션이 true인 경우, JAXRS UriInfo, HttpHeaders, Request 및 SecurityContext 컨텍스트를 입력한 Camel 교환 속성으로 사용자 지정 CXFRS 프로세서에서 사용할 수 있습니다. 이러한 컨텍스트는 JAX-RS API를 사용하여 현재 요청을 분석하는 데 사용할 수 있습니다. | false | boolean |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
또한 Spring 구성을 통해 CXF REST 엔드포인트를 구성할 수도 있습니다. CXF REST 클라이언트와 CXF REST 서버 간에는 많은 차이가 있으므로 서로 다른 구성을 제공합니다. 자세한 내용은 스키마 파일 및 CXF JAX-RS 설명서 를 확인하십시오.
78.3. Camel에서 REST 엔드포인트 구성 방법 링크 복사링크가 클립보드에 복사되었습니다!
camel-cxf 스키마 파일에 는 REST 엔드포인트 정의에 대한 두 가지 요소가 있습니다. REST 소비자용 CXF :rsServer, REST 프로듀서용 cxf:rsClient.
Camel REST 서비스 경로 구성 예는 여기에서 확인할 수 있습니다.
78.4. 메시지 헤더에서 CXF 생산자 주소를 재정의하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
camel-cxfrs 생산자는 메시지를 "CamelDestinationOverrideUrl"의 키로 설정하여 서비스 주소를 덮어쓰도록 지원합니다.
// set up the service address from the message header to override the setting of CXF endpoint
exchange.getIn().setHeader(Exchange.DESTINATION_OVERRIDE_URL, constant(getServiceAddress()));
78.5. REST 요청 사용 - 단순 바인딩 스타일 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.11에서 사용 가능
기본 바인딩 스타일은 다소 낮기 때문에 사용자가 수동으로 MessageContentsList 개체를 경로로 처리해야합니다. 따라서 경로 논리를 JAX-RS 작업의 메서드 서명 및 매개 변수 인덱스와 밀접하게 연결합니다. 어려웠고, 오류가 발생하기도 합니다.
반면 SimpleConsumer 바인딩 스타일은 Camel Message 내에서 요청 데이터에 보다 쉽게 액세스 할 수 있도록 다음 매핑을 수행합니다.
- JAX-RS 매개 변수(@HeaderParam, @QueryParam 등)가 IN 메시지 헤더로 삽입됩니다. 헤더 이름은 주석의 값과 일치합니다.
-
요청 엔티티(POJO 또는 기타 유형)는 IN 메시지 본문이 됩니다. JAX-RS 메서드 서명에서 단일 엔터티를 식별할 수 없는 경우 원래
MessageContentsList로 돌아갑니다. -
바이너리
@Multipart본문 부분은 IN 메시지 첨부 파일,DataHandler,InputStream,DataSource및 CXFAttachment클래스를 지원합니다. -
바이너리가 아닌
@Multipartbody 부분은 IN 메시지 헤더로 매핑됩니다. 헤더 이름은 본문 파트 이름과 일치합니다.
또한 다음 규칙이 Response 매핑에 적용됩니다.
-
메시지 본문 유형이
javax.ws.rs.core.Response(사용자 기반 응답)와 다른 경우 새응답을 생성하고 메시지 본문이 엔티티로 설정됩니다(즉 null이 아님). 응답 상태 코드는Exchange.HTTP_RESPONSE_CODE헤더에서 가져오거나, 없는 경우 기본값은 200 OK입니다. -
메시지 본문 유형이
javax.ws.rs.core.Response와 동일한 경우, 사용자가 사용자 지정 응답을 작성했으므로 존중되고 최종 응답이 됩니다. -
모든 경우에 사용자 정의 또는 기본
HeaderFilterStrategy에서 허용하는 Camel 헤더가 HTTP 응답에 추가됩니다.
78.5.1. 단순 바인딩 스타일 사용 링크 복사링크가 클립보드에 복사되었습니다!
이 바인딩 스타일은 소비자 끝점의 bindingStyle 매개 변수를 SimpleConsumer 값으로 설정하여 활성화할 수 있습니다.
from("cxfrs:bean:rsServer?bindingStyle=SimpleConsumer")
.to("log:TEST?showAll=true");
78.5.2. 다양한 메서드 서명을 사용한 요청 바인딩의 예 링크 복사링크가 클립보드에 복사되었습니다!
다음은 간단한 바인딩에서 예상되는 결과와 함께 메서드 서명 목록입니다.Below is a list of method signatures along with the expected result from the Simple binding.
공용 응답 doAction(BusinessObject 요청):
요청 페이로드는 IN 메시지 본문에 배치되어 원래 MessageContentsList를 대체합니다.
공용 응답 doAction(BusinessObject 요청, @HeaderParam("abcd") String abcd, @QueryParam("defg") String defg); 원본 MessageContentsList를 대체한 IN 메시지 본문에 배치된 요청 페이로드입니다. 두 요청 매개변수 모두 이름이 abcd 및 defg인 IN 메시지 헤더로 매핑됩니다.
공용 응답 doAction(@HeaderParam("abcd") String abcd, @QueryParam("defg") String defg); 두 요청 매개 변수는 모두 abcd 및 defg라는 이름으로 IN 메시지 헤더로 매핑됩니다. 원래의 MessageContentsList는 2 매개변수만 포함되어 있어도 보존됩니다.
Public Response doAction(@Multipart(value="body1") BusinessObject 요청2). 첫 번째 매개변수는 name body 1이 있는 헤더로 전송되고 두 번째 매개변수는 헤더 body2로 매핑됩니다. 원래 MessageContentsList는 IN 메시지 본문으로 보존됩니다.
공용 응답 doAction(InputStream abcd): InputStream은 MessageContentsList에서 래핑되지 않으며 IN 메시지 본문으로 보존됩니다.
공용 응답 doAction(DataHandler abcd): DataHandler는 MessageContentsList에서 래핑되지 않으며 IN 메시지 본문으로 보존됩니다.
78.5.3. 간단한 바인딩 스타일의 더 많은 예 링크 복사링크가 클립보드에 복사되었습니다!
이 메서드가 포함된 JAX-RS 리소스 클래스를 제공합니다.
@POST @Path("/customers/{type}")
public Response newCustomer(Customer customer, @PathParam("type") String type, @QueryParam("active") @DefaultValue("true") boolean active) {
return null;
}
다음 경로로 서비스를 제공합니다.
from("cxfrs:bean:rsServer?bindingStyle=SimpleConsumer")
.recipientList(simple("direct:${header.operationName}"));
from("direct:newCustomer")
.log("Request: type=${header.type}, active=${header.active}, customerData=${body}");
XML 페이로드를 사용하는 다음 HTTP 요청(고객 DTO는 JAXB-annotated임)
POST /customers/gold?active=true
Payload:
<Customer>
<fullName>Raul Kripalani</fullName>
<country>Spain</country>
<project>Apache Camel</project>
</Customer>
메시지를 출력합니다.
Request: type=gold, active=true, customerData=<Customer.toString() representation>
요청 및 쓰기 응답을 처리하는 방법에 대한 자세한 예제는 여기에서 확인할 수 있습니다.
78.6. REST 요청 사용 - 기본 바인딩 스타일 링크 복사링크가 클립보드에 복사되었습니다!
CXF JAXRS 프론트엔드 는 JAX-RS(JSR-311) API 를 구현하므로 리소스 클래스를 REST 서비스로 내보낼 수 있습니다. 또한 CXF invocationr API 를 활용하여 REST 요청을 일반 Java 객체 메서드 호출로 전환합니다.
Camel Restlet 구성 요소와 달리, 끝점 내에서 URI 템플릿을 지정할 필요가 없으며 CXF는 JSR-311 사양에 따라 REST 요청 URI를 리소스 클래스 메서드 매핑에 처리합니다. Camel에서 수행하는 데 필요한 것은 이 방법 요청을 적절한 프로세서 또는 엔드포인트에 위임하는 것입니다.
CXFRS 경로의 예는 다음과 같습니다.
private static final String CXF_RS_ENDPOINT_URI =
"cxfrs://http://localhost:" + CXT + "/rest?resourceClasses=org.apache.camel.component.cxf.jaxrs.testbean.CustomerServiceResource";
private static final String CXF_RS_ENDPOINT_URI2 =
"cxfrs://http://localhost:" + CXT + "/rest2?resourceClasses=org.apache.camel.component.cxf.jaxrs.testbean.CustomerService";
private static final String CXF_RS_ENDPOINT_URI3 =
"cxfrs://http://localhost:" + CXT + "/rest3?"
+ "resourceClasses=org.apache.camel.component.cxf.jaxrs.testbean.CustomerServiceNoAnnotations&"
+ "modelRef=classpath:/org/apache/camel/component/cxf/jaxrs/CustomerServiceModel.xml";
private static final String CXF_RS_ENDPOINT_URI4 =
"cxfrs://http://localhost:" + CXT + "/rest4?"
+ "modelRef=classpath:/org/apache/camel/component/cxf/jaxrs/CustomerServiceDefaultHandlerModel.xml";
private static final String CXF_RS_ENDPOINT_URI5 =
"cxfrs://http://localhost:" + CXT + "/rest5?"
+ "propagateContexts=true&"
+ "modelRef=classpath:/org/apache/camel/component/cxf/jaxrs/CustomerServiceDefaultHandlerModel.xml";
protected RouteBuilder createRouteBuilder() throws Exception {
final Processor testProcessor = new TestProcessor();
final Processor testProcessor2 = new TestProcessor2();
final Processor testProcessor3 = new TestProcessor3();
return new RouteBuilder() {
public void configure() {
errorHandler(new NoErrorHandlerBuilder());
from(CXF_RS_ENDPOINT_URI).process(testProcessor);
from(CXF_RS_ENDPOINT_URI2).process(testProcessor);
from(CXF_RS_ENDPOINT_URI3).process(testProcessor);
from(CXF_RS_ENDPOINT_URI4).process(testProcessor2);
from(CXF_RS_ENDPOINT_URI5).process(testProcessor3);
}
};
}
또한 endpoint…을 구성하는 데 사용되는 해당 리소스 클래스입니다.
INFO:* 리소스 클래스에 대한 참고*
기본적으로 JAX-RS 리소스 클래스는 JAX-RS 속성을 구성하는 데 사용되는 only*used입니다. 메서드는 끝점으로 메시지를 라우팅하는 동안 *not 가 실행됩니다. 대신, 모든 처리를 수행하는 경로의 책임이 있습니다.
Camel 2.15부터 기본 모드에 대한 no-op 서비스 구현 클래스와 달리 인터페이스를 제공하는 것도 충분합니다.
Camel 2.15부터 performInvocation 옵션이 활성화되면 서비스 구현이 먼저 호출되고 Camel 교환에 응답이 설정되고 경로 실행이 평소와 같이 계속됩니다. 이는 기존 JAX-RS 구현을 Camel 경로에 통합하고 사용자 지정 프로세서에서 JAX-RS 응답을 후처리하는 데 유용할 수 있습니다.
78.7. camel-cxfrs 생산자를 통해 REST 서비스를 호출하는 방법 링크 복사링크가 클립보드에 복사되었습니다!
CXF JAXRS 프런트 엔드 는 프록시 기반 클라이언트 API 를 구현합니다. 이 API는 프록시를 통해 원격 REST 서비스를 호출할 수 있습니다. camel-cxfrs 생산자는 이 프록시 API 를 기반으로 합니다.
메시지 헤더에 작업 이름을 지정하고 메시지 본문에 매개 변수를 준비하면 camel-cxfrs 생산자가 올바른 REST 요청을 생성합니다.
예를 들면 다음과 같습니다.
Exchange exchange = template.send("direct://proxy", new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.setPattern(ExchangePattern.InOut);
Message inMessage = exchange.getIn();
// set the operation name
inMessage.setHeader(CxfConstants.OPERATION_NAME, "getCustomer");
// using the proxy client API
inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, Boolean.FALSE);
// set a customer header
inMessage.setHeader("key", "value");
// setup the accept content type
inMessage.setHeader(Exchange.ACCEPT_CONTENT_TYPE, "application/json");
// set the parameters , if you just have one parameter
// camel will put this object into an Object[] itself
inMessage.setBody("123");
}
});
// get the response message
Customer response = (Customer) exchange.getOut().getBody();
assertNotNull("The response should not be null ", response);
assertEquals("Get a wrong customer id ", 123, response.getId());
assertEquals("Get a wrong customer name", "John", response.getName());
assertEquals("Get a wrong response code", 200, exchange.getOut().getHeader(Exchange.HTTP_RESPONSE_CODE));
assertEquals("Get a wrong header value", "value", exchange.getOut().getHeader("key"));
CXF JAXRS 프런트 엔드 도 http 중심 클라이언트 API를 제공합니다. 또한 camel-cxfrs 생산자에서 이 API를 호출할 수도 있습니다. HTTP_PATH 및 HTTP_METHOD 를 지정하고 생산자가 URI 옵션 httpClientAPI 를 사용하거나 메시지 헤더 CxfConstants.CAMEL_CXF_RS_USING_HTTP_API 를 설정하여 http 중심 클라이언트 API를 사용하도록 해야 합니다. 응답 개체를 메시지 헤더 CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS 로 지정된 유형 클래스에 전환할 수 있습니다.
Camel 2.1에서 CXFRS http 중심 클라이언트의 cxfrs URI에서 쿼리 매개변수를 지정할 수도 있습니다.
오류 형식 매크로: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20
동적 라우팅을 지원하기 위해 CxfConstants.CAMXF_RS_QUERY_MAP 헤더를 사용하여 URI의 쿼리 매개 변수를 재정의하여 해당 URI에 대한 매개변수 맵을 설정할 수 있습니다.
78.8. CXF용 Camel Transport이란 무엇입니까? 링크 복사링크가 클립보드에 복사되었습니다!
CXF에서는 주소를 정의하여 웹 서비스를 제공하거나 사용합니다. 주소의 첫 번째 부분은 사용할 프로토콜을 지정합니다. 예를 들어, 끝점 설정의 address="http://localhost:9000"는 localhost의 포트 9000에서 http 프로토콜을 사용하여 서비스가 제공됨을 의미합니다. Camel Tranport를 CXF에 통합할 때 새로운 전송 "camel"을 받습니다. 따라서 CXF 서비스 주소를 camel 직접 엔드포인트에 바인딩하기 위해 address="camel://direct:MyEndpointName"을 지정할 수 있습니다.
기술적으로 CXF용 Camel 전송은 Camel 코어 라이브러리를 사용하여 CXF 전송 API 를 구현하는 구성 요소입니다. 이를 통해 CXF 서비스와 함께 Camel의 라우팅 엔진 및 통합 패턴을 쉽게 사용할 수 있습니다.
78.9. CXF 전송 계층에 Camel 통합 링크 복사링크가 클립보드에 복사되었습니다!
Camel Tranport를 CXF 버스에 포함하려면 CamelTransportFactory를 사용합니다. Java와 Spring에서도 이 작업을 수행할 수 있습니다.
78.9.1. Spring의 Camel 전송 설정 링크 복사링크가 클립보드에 복사되었습니다!
특별한 항목을 구성하려면 applicationcontext에서 다음 코드 조각을 사용할 수 있습니다. camel 전송을 활성화하기만 하면 애플리케이션 컨텍스트에서 아무 것도 할 필요가 없습니다. 앱에 camel-cxf-transport jar(또는 camel-cxf.jar가 2.7.x 미만일 경우)를 포함하면 cxf는 jar을 스캔하고 CamelTransportFactory를 로드합니다.
<!-- you don't need to specify the CamelTransportFactory configuration as it is auto load by CXF bus -->
<bean class="org.apache.camel.component.cxf.transport.CamelTransportFactory">
<property name="bus" ref="cxf" />
<property name="camelContext" ref="camelContext" />
<!-- checkException new added in Camel 2.1 and Camel 1.6.2 -->
<!-- If checkException is true , CamelDestination will check the outMessage's
exception and set it into camel exchange. You can also override this value
in CamelDestination's configuration. The default value is false.
This option should be set true when you want to leverage the camel's error
handler to deal with fault message -->
<property name="checkException" value="true" />
<property name="transportIds">
<list>
<value>http://cxf.apache.org/transports/camel</value>
</list>
</property>
</bean>
78.9.2. 프로그래밍 방식으로 Camel 전송 통합 링크 복사링크가 클립보드에 복사되었습니다!
Camel 전송에서는 Camel 컨텍스트를 전송 팩토리로 설정하는 데 사용할 수 있는 setContext 메서드를 제공합니다. 이 팩토리를 적용하려면, 당신은 CXF 버스에 공장을 등록해야합니다. 여기 당신을 위한 완전한 예가 있습니다.
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.transport.ConduitInitiatorManager;
import org.apache.cxf.transport.DestinationFactoryManager;
...
BusFactory bf = BusFactory.newInstance();
Bus bus = bf.createBus();
CamelTransportFactory camelTransportFactory = new CamelTransportFactory();
// set up the CamelContext which will be use by the CamelTransportFactory
camelTransportFactory.setCamelContext(context)
// if you are using CXF higher then 2.4.x the
camelTransportFactory.setBus(bus);
// if you are lower CXF, you need to register the ConduitInitiatorManager and DestinationFactoryManager like below
// register the conduit initiator
ConduitInitiatorManager cim = bus.getExtension(ConduitInitiatorManager.class);
cim.registerConduitInitiator(CamelTransportFactory.TRANSPORT_ID, camelTransportFactory);
// register the destination factory
DestinationFactoryManager dfm = bus.getExtension(DestinationFactoryManager.class);
dfm.registerDestinationFactory(CamelTransportFactory.TRANSPORT_ID, camelTransportFactory);
// set or bus as the default bus for cxf
BusFactory.setDefaultBus(bus);
78.10. 대상 구성 및 Spring 링크 복사링크가 클립보드에 복사되었습니다!
78.10.1. 네임스페이스 링크 복사링크가 클립보드에 복사되었습니다!
Camel 전송 끝점을 구성하는 데 사용되는 요소는 네임스페이스 http://cxf.apache.org/transports/camel 에 정의되어 있습니다. 일반적으로 접두사 camel 을 사용하는 것이 일반적입니다. Camel 전송 구성 요소를 사용하려면 아래에 표시된 행을 엔드포인트 구성 파일의 빈 요소에 추가해야 합니다. 또한 구성 요소의 네임스페이스를 xsi:schemaLocation 속성에 추가해야 합니다.
구성 네임스페이스 추가
<beans ...
xmlns:camel="http://cxf.apache.org/transports/camel
...
xsi:schemaLocation="...
http://cxf.apache.org/transports/camel
http://cxf.apache.org/transports/camel.xsd
...>
78.10.2. 대상 요소 링크 복사링크가 클립보드에 복사되었습니다!
camel:destination 요소와 그 하위 항목을 사용하여 Camel 전송 서버 끝점을 구성합니다. camel:destination 요소는 끝점에 해당하는 WSDL 포트 요소를 지정하는 단일 속성, name 을 사용합니다. name 속성의 값은 portQName'.camel-destination' 형식을 사용합니다. 아래 예제는 endpoint 조각 < port binding="widgetSOAPBinding" name="widgetSOAPPort" >에서 지정한 엔드포인트에 대한 구성을 추가하는 데 사용되는 camel:destination 요소를 보여줍니다.http://widgets.widgetvendor.net
Camel:destination Element
...
<camel:destination name="{http://widgets/widgetvendor.net}widgetSOAPPort.http-destination>
<camelContext id="context" xmlns="http://activemq.apache.org/camel/schema/spring">
<route>
<from uri="direct:EndpointC" />
<to uri="direct:EndpointD" />
</route>
</camelContext>
</camel:destination>
<!-- new added feature since Camel 2.11.x
<camel:destination name="{http://widgets/widgetvendor.net}widgetSOAPPort.camel-destination" camelContextId="context" />
...
Spring의 camel:destination 요소에는 구성 정보를 지정하는 여러 자식 요소가 있습니다. 아래에 설명되어 있습니다.
요소
설명
camel-spring:camelContext
camel 대상에 camel 컨텍스트를 지정할 수 있습니다.
camel:camelContextRef
camel 대상에 삽입할 camel context id
78.10.3. 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
camel:conduit 요소와 하위 항목을 사용하여 Camel 전송 클라이언트를 구성합니다. camel:conduit 요소는 끝점에 해당하는 WSDL 포트 요소를 지정하는 단일 특성인 name 을 사용합니다. name 속성의 값은 portQName'.camel-conduit' 형식을 사용합니다. 예를 들어 아래 코드는 endpoint의 대상 네임스페이스가 http://widgets.widgetvendor.net 인 경우 WSDL 조각 < port binding="widgetSOAPBinding" name="widgetSOAPPort" >에 의해 지정된 엔드포인트에 대한 구성을 추가하는 데 사용되는 camel:conduit 요소를 보여줍니다.
http-conf:conduit Element
...
<camelContext id="conduit_context" xmlns="http://activemq.apache.org/camel/schema/spring">
<route>
<from uri="direct:EndpointA" />
<to uri="direct:EndpointB" />
</route>
</camelContext>
<camel:conduit name="{http://widgets/widgetvendor.net}widgetSOAPPort.camel-conduit">
<camel:camelContextRef>conduit_context</camel:camelContextRef>
</camel:conduit>
<!-- new added feature since Camel 2.11.x
<camel:conduit name="{http://widgets/widgetvendor.net}widgetSOAPPort.camel-conduit" camelContextId="conduit_context" />
<camel:conduit name="*.camel-conduit">
<!-- you can also using the wild card to specify the camel-conduit that you want to configure -->
...
</camel:conduit>
...
camel:conduit 요소에는 구성 정보를 지정하는 여러 자식 요소가 있습니다. 아래에 설명되어 있습니다.
요소
설명
camel-spring:camelContext
camel conduit에서 camel context를 지정할 수 있습니다.
camel:camelContextRef
<The camel context id that you want inject into the camel conduit>
78.11. 대상 구성 및 Blueprint를 사용하여 구성 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.11.x 로부터 Camel Transport는 Blueprint를 사용하여 구성할 수 있도록 지원합니다.
청사진을 사용하는 경우 네임스페이스 http://cxf.apache.org/transports/camel/blueprint 를 사용하고 블로깅과 같은 스키마를 가져와야 합니다.
청사진의 구성 네임스페이스 추가
<beans ...
xmlns:camel="http://cxf.apache.org/transports/camel/blueprint"
...
xsi:schemaLocation="...
http://cxf.apache.org/transports/camel/blueprint
http://cxf.apache.org/schmemas/blueprint/camel.xsd
...>
camel:conduit camel:destination 에는 하나의 camelContextId 속성만 있으며 camel 대상에서 camel 컨텍스트를 지정하는 것은 지원되지 않습니다.
<camel:conduit id="*.camel-conduit" camelContextId="camel1" />
<camel:destination id="*.camel-destination" camelContextId="camel1" />
78.12. CXF의 로드 밸런서로 Camel 사용 예 링크 복사링크가 클립보드에 복사되었습니다!
이 예에서는 CXF에서 camel 부하 분산 기능을 사용하는 방법을 보여줍니다. CXF에서 구성 파일을 로드하고 "camel://direct:EndpointA" 및 "camel://direct:EndpointB" 주소에 끝점을 게시해야 합니다.
78.13. CXF에 Camel을 연결하는 방법 및 예제 완료 링크 복사링크가 클립보드에 복사되었습니다!
79장. 데이터 형식 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.12로 사용 가능
dataformat: 구성 요소를 사용하면 데이터 형식을 Camel 구성 요소로 사용할 수 있습니다.
79.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
dataformat:name:(marshal|unmarshal)[?options]
위치 이름은 데이터 형식의 이름입니다. 그리고 마샬링 또는 unmarshal으로 마샬링 해야 하는 작업이 뒤에 옵니다. 옵션은 사용 중인 데이터 형식 을 구성하는 데 사용됩니다. 지원하는 옵션에 대한 데이터 형식 설명서를 참조하십시오.
79.2. DataFormat 옵션 링크 복사링크가 클립보드에 복사되었습니다!
데이터 형식 구성 요소에는 옵션이 없습니다.
데이터 형식 엔드포인트는 URI 구문을 사용하여 구성됩니다.
dataformat:name:operation
다음 경로 및 쿼리 매개변수를 사용합니다.
79.2.1. 경로 매개 변수(2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| name | 필수 데이터 형식 이름 | 문자열 | |
| 작업 | 마샬링 또는 unmarshal 중 하나를 사용하는 데 필요한 작업 | 문자열 |
79.2.2. 쿼리 매개변수(1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
79.3. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
예를 들어 JAXB 데이터 형식을 사용하려면 다음과 같이 수행할 수 있습니다.
from("activemq:My.Queue").
to("dataformat:jaxb:unmarshal?contextPath=com.acme.model").
to("mqseries:Another.Queue");
XML DSL에서는 다음을 수행합니다.
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="activemq:My.Queue"/>
<to uri="dataformat:jaxb:unmarshal?contextPath=com.acme.model"/>
<to uri="mqseries:Another.Queue"/>
</route>
</camelContext>
80장. 데이터 세트 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 1.3에서 사용 가능
분산 및 비동기 처리 테스트가 매우 어렵습니다. Mock,Test 및 DataSet 엔드포인트는 Camel 테스트 프레임워크와 함께 강력한 Bean 통합 통합과 함께 엔터프라이즈 통합 패턴 및 Camel의 다양한 구성 요소를 사용하여 단위 및 통합 테스트를 단순화합니다.
DataSet 구성 요소는 시스템의 로드 및 soak 테스트를 쉽게 수행할 수 있는 메커니즘을 제공합니다. DataSet 인스턴스를 메시지의 소스로 만들고 데이터 집합이 수신되도록 어설션하는 방식으로 작동합니다.It works by allowing you to create DataSet instances both as a source of messages and as a way to assert that the data set is received.
Camel은 데이터 세트 전송 시 처리량 로거 를 사용합니다.
80.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
dataset:name[?options]
레지스트리의 DataSet 인스턴스를 찾는 데 name 이 사용됩니다.where name is used to find the DataSet instance in the Registry.
Camel은 자체 DataSet을 구현하기 위한 기반으로 사용할 수 있는 구현과 함께 제공됩니다. 또한 Camel에는 org. apache.camel.component.datamel.component.dataset.DataSet 클래스의 지원org.apache.camel.component.dataset.SimpleDataSet, org.apache.camel.component.ListDataSet.component.apache.camel.component.dataset.FileDataSet .dataset.FileDataSet 모두 를 확장하는 데 사용할 수 있는 일부 구현이 함께 제공됩니다.
DataSet Support
80.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Dataset 구성 요소에는 옵션이 없습니다.
데이터 세트 끝점은 URI 구문을 사용하여 구성됩니다.
dataset:name
다음 경로 및 쿼리 매개변수를 사용합니다.
80.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| name | 레지스트리에서 조회하는 DataSet의 필수 이름 | DataSet |
80.2.2. 쿼리 매개변수(19 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| dataSetIndex (common) | CamelDataSetIndex 헤더의 동작을 제어합니다. For Consumers: - off = 헤더가 설정되지 않음 - strict/lenient = 헤더가 For Producers로 설정됩니다. - off = 헤더 값이 확인되지 않고 헤더 값이 존재하지 않는 경우 설정되지 않으며 헤더 값이 있는지 여부를 설정하지 않습니다. | lenient | 문자열 |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN/ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| initialDelay (consumer) | 메시지 전송을 시작하기 전에 대기하는 시간(밀리코어)입니다. | 1000 | long |
| minRate (consumer) | DataSet이 적어도 이 메시지 수를 포함할 때까지 기다립니다. | 0 | int |
| preloadSize (consumer) | 경로 초기화를 완료하기 전에 사전 로드(sent)해야 하는 메시지 수를 설정합니다. | 0 | long |
| produceDelay (consumer) | 소비자가 메시지를 보낼 때 지연을 유발하는 지연을 지정할 수 있습니다(속도 처리를 시뮬레이션하기 위해) | 3 | long |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN/ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | Exchange를 만들 때 기본 교환 패턴을 설정합니다. | ExchangePattern | |
| assertPeriod (producer) | 예비 어설션이 여전히 유효한지 확인하기 위해 모의 엔드포인트가 재assert할 유예 기간을 설정합니다. 예를 들어 이 방법은 정확히 많은 메시지가 수신되었음을 어설션하는 데 사용됩니다. 예를 들어 예상되는MessageCount(int) 링크가 5로 설정된 경우 5개 이상의 메시지가 도착하면 어설션이 충족됩니다. 정확히 5 개의 메시지가 수신되도록하려면 더 이상 메시지가 도착하지 않도록하려면 약간의 시간을 기다려야합니다. 이는 에 대해 이 링크 setAssertPeriod(long) 방법을 사용할 수 있습니다. 기본적으로 이 기간은 비활성화되어 있습니다. | 0 | long |
| consumeDelay (producer) | 생산자가 메시지를 사용할 때 지연되는 지연을 지정할 수 있습니다(속도 처리를 시뮬레이션하기 위해) | 0 | long |
| expectedCount (producer) | 이 끝점에서 수신해야 하는 예상 메시지 교환 수를 지정합니다. 참고: 0개의 메시지를 예상하려면 테스트가 시작될 때 0이 일치하므로 메시지가 아직 도착하지 않도록 하기 위해 어설션 기간을 설정해야 합니다. 링크 setAssertPeriod(long)를 사용합니다. 대안은 NotifyBuilder를 사용하는 것이며, 부사기를 사용하여 Camel이 일부 메시지를 라우팅할 때 이를 알 수 있습니다. 이를 통해 테스트 시간을 단축하기 위해 고정된 어설션 기간을 사용할 수 없습니다. n번째 메시지가 이 모크 엔드포인트에 도달했음을 확인하려는 경우 자세한 내용은 링크 setAssertPeriod(long) 방법도 참조하십시오. | -1 | int |
| reportGroup (producer) | 크기 그룹에 따라 처리량 로깅을 설정하는 데 사용되는 숫자입니다. | int | |
| resultMinimumWaitTime (producer) | assertIsSatisfied() 링크가 충족될 때까지 래치에서 대기할 최소 예상 시간(밀리코어)을 설정합니다. | 0 | long |
| resultWaitTime (producer) | assertIsSatisfied() 링크가 충족될 때까지 래치에서 대기할 최대 시간(밀리코어)을 설정합니다. | 0 | long |
| 유지First (producer) | 첫 번째 n번째 Exchange 수만 유지하도록 지정합니다. 이는 큰 데이터로 테스트를 할 때 사용되며, Exchange this mock 엔드포인트가 수신하는 모든 복사본을 저장하지 않고 메모리 사용량을 줄일 수 있습니다. 중요: 이 제한을 사용하는 경우 getReceivedCounter() 링크는 실제 받은 Exchange 수를 반환합니다. 예를 들어, 5000 Exchange를 수신하고 처음 10개의 교환 만 보관하도록 구성한 경우 getReceivedCounter() 링크는 여전히 5000을 반환하지만 getExchanges() 링크의 처음 10개 교환 및 링크 getReceivedExchanges() 메서드입니다. 이 방법을 사용할 때 다른 기대 방법 중 일부는 지원되지 않습니다(예: 예상되는 링크 expectedBodiesReceived(Object…))는 수신된 본문의 첫 번째 수에 대한 기대치를 설정합니다. 첫 번째 및 마지막 수신을 제한하도록 링크 setRetainFirst(int) 및 link setRetainLast(int) 메서드를 모두 구성할 수 있습니다. | -1 | int |
| retainLast (producer) | 마지막으로 받은 Exchange 수만 유지하도록 지정합니다. 이는 큰 데이터로 테스트를 할 때 사용되며, Exchange this mock 엔드포인트가 수신하는 모든 복사본을 저장하지 않고 메모리 사용량을 줄일 수 있습니다. 중요: 이 제한을 사용하는 경우 getReceivedCounter() 링크는 실제 받은 Exchange 수를 반환합니다. 예를 들어, 5000 Exchange를 수신하고 마지막 20개의 교환 만 보관하도록 구성한 경우 getReceivedCounter() 링크는 여전히 5000을 반환하지만 getExchanges() 링크에 마지막 20개의 교환 만 있으며, 링크 getReceivedExchanges() 방법. 이 방법을 사용할 때 다른 기대 방법 중 일부는 지원되지 않습니다(예: 예상되는 링크 expectedBodiesReceived(Object…))는 수신된 본문의 첫 번째 수에 대한 기대치를 설정합니다. 첫 번째 및 마지막 수신을 제한하도록 링크 setRetainFirst(int) 및 link setRetainLast(int) 메서드를 모두 구성할 수 있습니다. | -1 | int |
| sleepForEmptyTest (producer) | 예상된MessageCount(int) 링크가 0으로 호출될 때 이 끝점이 실제로 비어 있는지 확인할 수 있도록 대기 시간을 지정할 수 있습니다. | 0 | long |
| copyOnExchange (producer) | 이 모크 끝점에서 수신될 때 들어오는 Exchange의 깊은 복사본을 만들지 여부를 설정합니다.Sets whether to make a deep copy of the incoming Exchange when received at this mock endpoint. 는 기본적으로 true입니다. | true | boolean |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
다음 형식 ?option=value&option=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
80.3. DataSet 구성 링크 복사링크가 클립보드에 복사되었습니다!
Camel은 DataSet 인터페이스를 구현하는 빈에서 레지스트리를 조회합니다. 사용자 고유의 DataSet을 다음과 같이 등록할 수 있습니다.You can register your own DataSet as:
<bean id="myDataSet" class="com.mycompany.MyDataSet">
<property name="size" value="100"/>
</bean>
80.4. 예제 링크 복사링크가 클립보드에 복사되었습니다!
예를 들어 메시지 집합이 큐로 전송되고 메시지가 손실되지 않고 대기열에서 사용되도록 테스트하려면 다음을 수행합니다.
// send the dataset to a queue
from("dataset:foo").to("activemq:SomeQueue");
// now lets test that the messages are consumed correctly
from("activemq:SomeQueue").to("dataset:foo");
위의 내용은 레지스트리에서 메시지를 만드는 데 사용되는 foo DataSet 인스턴스를 찾습니다.
그런 다음 아래에 설명된 SimpleDataSet 사용 등 DataSet 구현을 만들고 데이터 집합이 얼마나 큰지, 메시지 크기 등을 구성합니다.Then you create a DataSet implementation, such as described below, configuring things like how big the data set is and what the messages look like etc.
80.5. DataSetSupport(라이테 클래스) 링크 복사링크가 클립보드에 복사되었습니다!
DataSetSupport 추상 클래스는 새로운 DataSet의 시작 지점이며 파생 클래스에 유용한 몇 가지 기능을 제공합니다.
80.5.1. DataSetSupport의 속성 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 | 유형 | 기본값 | 설명 |
|---|---|---|---|
|
|
|
|
기본 메시지 본문을 지정합니다. SimpleDataSet의 경우 일정한 페이로드입니다. 메시지별로 사용자 지정 페이로드를 만들려면 |
|
|
| null | |
|
|
|
| 보낼 메시지 수를 지정합니다.Specifies how many messages to send/consume. |
|
|
|
|
진행률을 보고하기 전에 받을 메시지 수를 지정합니다. 대규모 로드 테스트 진행 상황을 표시하는 데 유용합니다. If < 0, |
80.6. SimpleDataSet 링크 복사링크가 클립보드에 복사되었습니다!
SimpleDataSet 은 DataSetSupport 를 확장하고 기본 본문을 추가합니다.
80.6.1. SimpleDataSet의 추가 속성 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 | 유형 | 기본값 | 설명 |
|---|---|---|---|
|
|
|
|
기본 메시지 본문을 지정합니다. 기본적으로 |
80.7. ListDataSet 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.17 이후 사용 가능
List'DataSet'은 DataSetSupport 를 확장하고 기본 본문 목록을 추가합니다.
80.7.1. ListDataSet의 추가 속성 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 | 유형 | 기본값 | 설명 |
|---|---|---|---|
|
|
|
|
기본 메시지 본문을 지정합니다. 기본적으로 |
|
|
| defaultBodies 목록의 크기 |
보낼 메시지 수를 지정합니다.Specifies how many messages to send/consume. 이 값은 |
80.8. FileDataSet 링크 복사링크가 클립보드에 복사되었습니다!
Camel 2.17 이후 사용 가능
FileDataSet 은 ListDataSet 을 확장 하 고 파일에서 본문을 로드 하는 지원을 추가 합니다.The FileDataSet extends ListDataSet , and adds support for loading the body from a file.
80.8.1. FileDataSet의 추가 속성 링크 복사링크가 클립보드에 복사되었습니다!
| 속성 | 유형 | 기본값 | 설명 |
|---|---|---|---|
|
|
| null | 페이로드의 소스 파일을 지정합니다. |
|
|
| \z |
|
81장. DigitalOcean 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.19에서 사용 가능
DigitalOcean 구성 요소를 사용하면 캡슐화 [digitalocean-api-java]를 캡슐화하여 DigitalOcean Cloud 내에서 Droplets 및 리소스를 관리할 수 있습니다. https://www.digitalocean.com/community/projects/api-client-in-java DigitalOcean 컨트롤 패널에 익숙한 모든 기능은 이 Camel 구성 요소를 통해 사용할 수 있습니다.
81.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
유효한 DigitalOcean 계정과 유효한 OAuth 토큰이 있어야 합니다. 계정에 대한 DigitalOcean 컨트롤 패널의 [Apps & API](https://cloud.digitalocean.com/settings/applications) 섹션을 방문하여 OAuth 토큰을 생성할 수 있습니다.
81.2. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
DigitalOcean Component 는 다음 URI 형식을 사용합니다.
digitalocean://endpoint?[options]
여기서 endpoint 는 DigitalOcean 리소스 유형입니다.
예: 드롭릿 목록을 표시하려면 다음을 수행하십시오.
digitalocean://droplets?operation=list&oAuthToken=XXXXXX&page=1&perPage=10
DigitalOcean 구성 요소는 생산자 엔드포인트만 지원하므로 경로 시작 시 채널의 메시지를 수신 대기할 때 이 구성 요소를 사용할 수 없습니다.
81.3. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
DigitalOcean 구성 요소에는 옵션이 없습니다.
DigitalOcean 엔드포인트는 URI 구문을 사용하여 구성됩니다.
digitalocean:operation
다음 경로 및 쿼리 매개변수를 사용합니다.
81.3.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 작업 | 지정된 리소스에 수행할 작업입니다. | DigitalOceanOperations |
81.3.2. 쿼리 매개 변수(10 매개변수: 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 페이지 (producer) | 페이지 매김에 사용합니다. 페이지 번호를 강제 적용합니다. | 1 | 정수 |
| perPage (producer) | 페이지 매김에 사용합니다. 요청당 항목 수를 설정합니다. 페이지당 최대 결과 수는 200입니다. | 25 | 정수 |
| 리소스 (producer) | 작업을 수행하는 DigitalOcean 리소스 유형입니다. | DigitalOceanResources | |
| DigitalOceanClient (advanced) | 기존 구성된 DigitalOceanClient를 클라이언트로 사용하려면 | DigitalOceanClient | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| httpProxyHost (proxy) | 필요한 경우 프록시 호스트 설정 | 문자열 | |
| httpProxyPassword (proxy) | 필요한 경우 프록시 암호 설정 | 문자열 | |
| httpProxyPort (proxy) | 필요한 경우 프록시 포트 설정 | 정수 | |
| httpProxyUser (proxy) | 필요한 경우 프록시 호스트 설정 | 문자열 | |
| oAuthToken (security) | DigitalOcean OAuth 토큰 | 문자열 |
작업 URI 옵션 또는 CamelDigitalOceanOperation 메시지 헤더를 사용하여 각 엔드포인트에 대한 작업 값을 제공해야 합니다.
모든 작업 값은 DigitalOceanOperations 열거형에 정의됩니다.
구성 요소에서 사용하는 모든 헤더 이름은 DigitalOceanHeaders 열거형에 정의되어 있습니다.
81.4. 메시지 본문 결과 링크 복사링크가 클립보드에 복사되었습니다!
반환된 모든 메시지 본문은 digitalocean-api-java 라이브러리에서 제공하는 오브젝트를 사용합니다.
81.5. API Rate Limits 링크 복사링크가 클립보드에 복사되었습니다!
camel-digitalocean 구성 요소에 의해 캡슐화된 DigitalOcean REST API에는 API Rate Limiting이 적용됩니다. [API Rate Limits documentation](https://developers.digitalocean.com/documentation/v2/#rate-limit참조하십시오.
81.6. 계정 끝점 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | 기술 | | ------ | ---- | ---- | ----- | ------ | ------ | get | account info | | com.myjeeva.digitalean.pojo.Account |
81.7. BlockStorages 끝점 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | 기술 | | ------ | ---- | ------ | ------ | ------ | list | list | List<com.myjeeva.digitalean.pojo.Volume > | | 블록 스토리지 볼륨| String <br>'CamelDigitalOceanRegion' String| CamelDigitalOceanId Integer| com.myjeeva.digitalocean.pojo.Volume | | name| get Camel 로 블록 스토리지 볼륨에 대한 정보를 표시합니다. DigitalOceanNamecom.myjeeva.digitalocean.pojo.Volume | listSnapshots | 볼륨에서 생성된 스냅샷을 검색합니다. CamelDigitalOceanId Integer| List<com.myjeeva.digitalocean.pojo.Snapshot | | create | create | Create a new volume | CamelDigitalOceanVolumeSizeGigabytes Integer<br>' CamelDigitalOceanName' String<br>'CamelDigitalOceanDescription'* String<br>'CamelDigitalOigitalRegion'* String| com.myjeeva.digitalocean.pojo .volume | | 삭제 | 블록 스토리지 볼륨 삭제 모든 데이터를 제거하고 계정| CamelDigitalOceanId Integer| com.myjeeva.digitalocean.pojo.Delete| | delete | delete | Delete | DeleteDigitalOceanName 문자열<br>'CamelDigitalOceanRegion' String| com.myjeeva.digitalocean.pojo.Delete | attach | Block Storage 볼륨을 Droplet| CamelDigitalOceanId에 연결 정수 <br>'CamelDigitalOceanDropletId' Integer<br>'CamelDigitalOceanDropletRegion' String| com.myjeeva.pojo.Action | attach | 이름이| CamelDigitalOceanName 문자열<br>'CamelDigitalOceanDropletId의 Integer<br>'CamelDigitalOceanDropletRegion' String으로 블록 스토리지 볼륨을 연결합니다. | com.myjeeva.digitalocean.pojo.Action | detach | detach a Block Storage volume from a Droplet| CamelDigitalOceanId Integer <br>'''' 정수<br>'CamelDigitalOce anDropletRegion' String| String<br>'CamelDigitalOceanDropletId' Integer<br>'CamelDigitalOceanDropletRegion' String| com.myjeeva.digitalocean.pojo. OceanNamecom.myjeeva.pojo.Action | 크기 조정 | Block Storage 볼륨 크기 조정 | CamelDigitalOceanVolumeSizeGigabytes <br>'CamelDigitalOceitalOceanRegion' String| com.myjeeva.pojo.Action | | listActions | CamelDigitalOceanId Integer | List<com.myjeeva.digitalocean.pojo.Action> | CamelDigitalOceanId Integer| List<com.myjeeva.digitalocean.pojo.Action > | |
81.8. droplets 끝점 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | 기술 | | ------ | ---- | ------ | ------ | ------- | list | list | List<com.myjeeva.digitalocean.Droplet> | | 개별 드롭릿 | CamelDigitalOceanId Integer| com.myjeeva.digitalocean.pojo.Droplet | | create | create | Create | new Droplet | CamelDigitalO String <br>'CamelDigitalOceanDeletImage' String <br>'CamelDigitalOceelDigitalOceanRegion' String <br>'CamelDigitalOceanDropletSize' String <br> 'CamelDigitalOceitalOceanDropletSSHKeys'* List\<String\ > <br>'CamelDigitalOceanDropletEnableBackups'* 부울 <br>''CamelDigitalOceanDropletEnableI6'* List\<String\> <br> Boolean <br>'CamelDigitalOceitalOceanTabletEnablePrivateNetworking'* Boolean <br>''CamelDigitalOceletUserData'* String <br>'CamelDigitalOceanDropletVolume s'* List\<String\ > <br>'CamelDigitalOceanDroplets' List\<String\> | ceanNamecom.myjeeva.digitalocean.pojo.Droplet | | create | create | CamelDigitalOceanNames List\<String\ > <br>'CamelDigitalOceletImage' String <br>'CamelDigitalOceanRegion' String <br>'CamelDigitital OceanDropletSize' String <br>'CamelDigitalOceanDropletTs'* List\<String\ > <br>'CamelDigitalOceanDropletEnableBackups'* 부울 <br>'CamelD igitalOceanDropletEnableIpv6'* 부울 <br>'CamelDigitalOceanDropletPrivateNetworking'* Boolean <br>'CamelDigitalOceanDropletUserData'* String <br> 'CamelDigitalOceitalOceitalOceanDropletVolumes'* List\<String\ > <br>'CamelDigitalOceanDropletTags' List\<String\> | | com.myjeeva.digitalocean. polet} | 삭제 | 삭제 | CamelDigitalOceanId Integer| com.myjeeva.digitalocean.pojo.Delete | | enableBackups | existing Droplet | CamelDigitalOceanId Integer| | | com.myjeeva.digitalocean.pojo.Action disableBackups | existing Droplet | CamelDigitalOceanId Integer| com.myjeeva.pojo.Action | | enableIpv6 | 기존 Droplet | CamelDigitalOceanId Integer| com.myjeeva.digitalocean. poction | enable private networking on an existing Drop 해결 방법 | CamelDigitalOceanId Integer| com.myjeeva.digitalocean.pojo.Action | reboot | reboot a Droplet | CamelDigitalOceanId Integer| com .myjeeva.digitalocean.pojo.Action | | powerCycle | power cycle a Droplet | CamelDigitalOceanId Integer| com.myjeeva.pojo.pojo.Action | | 종료 | 종료 | CamelDigitalOceanId Integer| com.myjeeva.digitalocean.pojo.Action | powerOff | powerOff | CamelDigitalO ceanId Integer| com.myjeeva.digitalocean.pojo.Action | | powerOn | power on a Droplet | CamelDigitalOceanId Integer| com.myjeeva.digitalean. POJO.Action | | 복원 | 복구 | CamelDigitalOceanId Integer <br>'CamelDigitalOceitalOceanImageId' Integer| com.myjeeva.pojo.A CTION | | Integer <br>'CamelDigitalOceanDropletSize' String| passwordReset | CamelDigitalOceanId Integer| com.myjeeva.digitalocean.pojo.Action | | 크기 조정 | Cam elDigitalOceanIdcom.myjeeva.digitalocean.pojo. Integer <br>'CamelDigitalOceanImageId' Integer| igitalOceanId Integer <br>'CamelDigitalOce com.myjeeva.digitalocean.pojo. OceanIdanName' String| Integer <br>'CamelDigitalOce com.myjeeva.digitalocean.pojo. ceanIdanKernelId' Integer| <br>'CamelDigitalOceanName'* String| com.myjeeva.digitalocean.pojo. 정수com.myjeeva.digitalocean.pojo.Action | | tag | tag a Droplet | CamelDigitalOceanId Integer <br>'CamelDigitalOceanName' String |com .myjeeva.digitalocean.pojo.Response | | untag | Camel DigitalOceanId Integer <br>'CamelDigitalOceanName' String| com.myjeeva.digitalocean.pojo.Response | | listKernels | listKernels | CamelDigitalOce에서 사용할 수 있는 모든 커널 목록을 검색합니다. anId Integer | List<com.myjeeva.digitalocean.pojo.Kernel > | | listSnapshots | listSnapshots | droplet | CamelDigitalOceanId Integer | List<com. myjeeva.digitalocean.pojo.Snapshot > | | listBackups | | list DigitalOceanId Integer | List<com.myjeeva.pojo.Backup > | | listActions | CamelDigitalOceanId Integer | List<com.myjeeva.digitalocean.pojo.Action > | | listNeighbors | retrieve 동일한 물리적 서버에서 실행 중인 드롭다운 목록 | CamelDigitalOceanId Integer | List<com.myjeeva.digitalocean.pojo.Droplet > | | listAllNeighbors | 모든 drop 목록을 검색합니다. 동일한 물리적 하드웨어에서 실행되도록 합니다 | | List<com.myjeeva.digitalocean.pojo.Droplet > |
81.9. 이미지 끝점 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | 기술 | | ------ | ---- | ----- | ----- | ----- | ------ | list | list | List images available on your account | CamelDigitalOceanType* DigitalOceanType s | List<com.myjeeva.digitalocean.pojo.Image | | ownList | | ownList | | List<com.myjeeva.digitalocean.pojo.Image > | | listActions | 모든 작업 검색 이미지 | CamelDigitalOceanId Integer | List<com.myjeeva.digitalocean.pojo.Action > | | id| CamelDig에 의한 이미지(public or private)에 대한 정보 검색 Integer| italOceanIdcom.myjeeva.digitalocean.pojo.Image | slug| CamelDigitalOceanDropletImage String| com.myjeeva | | .DigitalOcean.pojo.Imageupdate | update an image| CamelDigitalOceanId Integer <br>'CamelDigitalOceanName' String| com.myjeeva.digitalocean.pojo .image | | | 삭제 | 이미지CamelDigitalOceanId Integer | com.myjeeva.digitalocean.pojo.Delete | | transfer | another region| CamelDigitalO ceanId Integer <br>'CamelDigitalOceanRegion' String| com.myjeeva.digitalocean.pojo. 예를 들어 스냅샷에 대한 백업| CamelDigitalOceanId Integer | com.myjeeva.digitalocean.pojo.Action |
81.10. 스냅샷 끝점 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | 기술 | | ------ | ---- | ------ | ------ | ------ | list | list | CamelDigitalOceanType* DigitalOce anSnapshotTypes | List<com.myjeeva.digitalocean.pojo.Snapshot > | | | | get | snapshot| CamelDigitalOceanId Integer| com.myjeeva.digitalean.pojo. 스냅샷 | | 삭제 | 스냅샷 삭제 | CamelDigitalOceanId Integer | com.myjeeva.digitalocean.pojo.Delete |
81.11. 키 끝점 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | 기술 | | ------ | ---- | ------ | ------ | ------ | | list | list | List<com.myjeeva.digitalocean.pojo.Key > | get | id| CamelDigitalOceanId Integer| com.myjeeva.digitalocean.pojo.Key | get | fingerprint| CamelDigitalO로 키에 대한 정보 검색 ceanKeyFingerprint String| com.myjeeva.digitalocean.pojo.Key | | update | update | id| CamelDigitalOceanId Integer <br>'CamelDigitalOceanName ' string| com.myjeeva.digitalocean.pojo.Key | | update | fingerprint| CamelDigitalOceanKeyFingerprint String <br>''CamelDigitalOceanName' 문자열| com.myjeeva.digitalocean.pojo.Key | | | delete | id| CamelDigitalOceanId Integer | com.myjeeva.digitalocean.pojo.Delete | | Delete | fingerprint| .
CamelDigitalOceanKeyFingerprint String | com.myjeeva.digitalocean.pojo.Delete 로 키를 삭제합니다
81.12. 리전 끝점 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | 기술 | | ------ | ---- | ------ | ------ | ------- | list | list | List<com.myjeeva.digitalocean.poge.Region > |
81.13. 크기 끝점 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | 기술 | | ------ | ----- | ------- | ------ | | list | list | List<com.myjeeva.digitalocean.pojo.Size >
81.14. 부동 IP 끝점 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | 기술 | | ------ | ---- | ------ | ------ | ------ | list | list | List<com.myjeeva.digitalocean.pojo.Flo atingIP > | | create | create | CamelDigitalOceanId Integer | List<com.myjeeva.digitalocean.pojo.FloatingIP > | create | create | create | create 지역에 할당된 유동 IP | CamelDigitalOceanRegion String | List<com.myjeeva.digitalocean.pojo.FloatingIP > | | | Get | Floating IP| CamelDigitalO에 대한 정보 검색 ceanFloatingIPAddress String| com.myjeeva.digitalocean.pojo.Key | | 삭제 | 유동 IP를 삭제하고 계정| CamelDigitalOceanFloatingIPAddress String| com. myjeeva.digitalocean.pojo.Delete | 할당 | 할당 | 할당 | 지정 | CamelDigitalOceanFloatingIPAddress String <br>'CamelDigitalOceitalOceanDropletId' Integer| | | com.myjeeva.digitalocean.pojo.Action unassign | Floating IP | CamelDigitalOceanFloatingIPAddress String | com.myjeeva.pojo.Action | | listActions | CamelDigitalOceanFloatingIPAddress String | List<com.myjeeva. digitalocean.pojo.Action> | > | |
CamelDigitalOceanFloatingIPAddress String | List<com.myjeeva.pojo.Action
81.15. tags 끝점 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | 기술 | | ------ | ---- | ----- | ----- | ------ | list | list all tags | | List<com.myjeeva.digitalocean.pojo.Tag > | | Create | Create a Tag | CamelDigitalOceanName String | com.myjeeva.digitalocean.pojo.Tag | | get | 개별 태그 | CamelDigitalOceanName 문자열 | com.myjeeva.digitalocean.pojo.Tag | | | 삭제 | CamelDigitalOceanName String | com.myjeeva.digitalocean.pojo.Delete | | update | update | | CamelDigitalOceanName String <br>'CamelDigitalOceanNewName' String| com.myjeeva.digitalocean.pojo.Tag |
81.16. 예제 링크 복사링크가 클립보드에 복사되었습니다!
계정 정보 가져오기
from("direct:getAccountInfo")
.setHeader(DigitalOceanConstants.OPERATION, constant(DigitalOceanOperations.get))
.to("digitalocean:account?oAuthToken=XXXXXX")
드롭릿 생성
from("direct:createDroplet")
.setHeader(DigitalOceanConstants.OPERATION, constant("create"))
.setHeader(DigitalOceanHeaders.NAME, constant("myDroplet"))
.setHeader(DigitalOceanHeaders.REGION, constant("fra1"))
.setHeader(DigitalOceanHeaders.DROPLET_IMAGE, constant("ubuntu-14-04-x64"))
.setHeader(DigitalOceanHeaders.DROPLET_SIZE, constant("512mb"))
.to("digitalocean:droplet?oAuthToken=XXXXXX")
모든 드롭릿 나열
from("direct:getDroplets")
.setHeader(DigitalOceanConstants.OPERATION, constant("list"))
.to("digitalocean:droplets?oAuthToken=XXXXXX")
Droplet에 대한 정보 검색 (dropletId = 34772987)
from("direct:getDroplet")
.setHeader(DigitalOceanConstants.OPERATION, constant("get"))
.setHeader(DigitalOceanConstants.ID, 34772987)
.to("digitalocean:droplet?oAuthToken=XXXXXX")
드롭릿의 종료 정보 (dropletId = 34772987)
from("direct:shutdown")
.setHeader(DigitalOceanConstants.ID, 34772987)
.to("digitalocean:droplet?operation=shutdown&oAuthToken=XXXXXX")
82장. 직접 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 1.0에서 사용 가능
직접: 구성 요소는 생산자가 메시지 교환을 보낼 때 모든 소비자의 직접 동기 호출을 제공합니다.
이 엔드포인트는 동일한 camel 컨텍스트의 기존 경로를 연결하는 데 사용할 수 있습니다.
비동기 : SEDA 구성 요소는 생산자가 메시지 교환을 전송할 때 모든 소비자의 비동기 호출을 제공합니다.
다른 camel 컨텍스트와의 연결 The VM 구성 요소는 동일한 JVM 에서 실행되는 기간 동안 Camel 컨텍스트 간의 연결을 제공합니다.
82.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
direct:someName[?options]
여기서 someName 은 끝점을 고유하게 식별하기 위한 문자열일 수 있습니다.
82.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Direct 구성 요소는 아래에 나열된 3 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 블록 (producer) | 활성 소비자가 없는 직접 엔드포인트에 메시지를 전송하는 경우 생산자에게 차단하고 소비자가 활성화될 때까지 기다릴 수 있습니다. | true | boolean |
| 시간 초과 (producer) | 블록이 활성화된 경우 사용할 제한 시간 값입니다. | 30000 | long |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
직접 엔드포인트는 URI 구문을 사용하여 구성됩니다.
direct:name
다음 경로 및 쿼리 매개변수를 사용합니다.
82.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| name | 직접 엔드 포인트의 필수 이름 | 문자열 |
82.2.2. 쿼리 매개변수(7 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN/ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN/ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | Exchange를 만들 때 기본 교환 패턴을 설정합니다. | ExchangePattern | |
| 블록 (producer) | 활성 소비자가 없는 직접 엔드포인트에 메시지를 전송하는 경우 생산자에게 차단하고 소비자가 활성화될 때까지 기다릴 수 있습니다. | true | boolean |
| failIfNoConsumers (producer) | 활성 소비자가 없는 DIRECT 끝점으로 보낼 때 예외를 throw하여 생산자가 실패해야 하는지 여부입니다. | false | boolean |
| 시간 초과 (producer) | 블록이 활성화된 경우 사용할 제한 시간 값입니다. | 30000 | long |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
82.3. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
아래 경로에서 직접 구성 요소를 사용하여 두 경로를 함께 연결합니다.
from("activemq:queue:order.in")
.to("bean:orderServer?method=validate")
.to("direct:processOrder");
from("direct:processOrder")
.to("bean:orderService?method=process")
.to("activemq:queue:order.out");
그리고 봄 DSL을 사용하는 샘플:
<route>
<from uri="activemq:queue:order.in"/>
<to uri="bean:orderService?method=validate"/>
<to uri="direct:processOrder"/>
</route>
<route>
<from uri="direct:processOrder"/>
<to uri="bean:orderService?method=process"/>
<to uri="activemq:queue:order.out"/>
</route>
SEDA 구성 요소 샘플을 함께 사용하는 방법도 참조하십시오.
82.4. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
83장. 직접 VM 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.10에서 사용 가능
direct-vm: 구성 요소는 생산자가 메시지 교환을 전송할 때 JVM에서 모든 소비자에 대한 직접 동기 호출을 제공합니다.
이 엔드포인트는 동일한 camel 컨텍스트에서 기존 경로를 연결하는 데 사용할 수 있으며 동일한 JVM의 다른 camel 컨텍스트에서 연결할 수 있습니다.
이 구성 요소는 Direct -VM 이 CamelContext 인스턴스 간 통신을 지원하므로 이 메커니즘을 사용하여 웹 애플리케이션 간에 통신할 수 있습니다( camel-core.jar가 system/boot classpath에 있음)
런타임 시 기존 소비자를 중지하고 새 소비자를 시작하여 새 소비자를 스왑할 수 있습니다.
그러나 특정 시점에는 지정된 끝점에 대해 하나의 활성 소비자만 있을 수 있습니다.
이 구성 요소를 사용하면 여기에서 볼 수 있듯이 다른 OSGI 번들에 배포된 경로를 연결할 수도 있습니다. 다른 번들에서 실행 중인 경우에도 camel 경로는
동일한 스레드를 사용합니다. 트랜잭션 사용 - Tx를 사용하여 애플리케이션을 개발하는 기능을 자동으로 수행합니다.
83.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
direct-vm:someName
여기서 someName 은 끝점을 고유하게 식별하기 위한 문자열일 수 있습니다.
83.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Direct VM 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 블록 (producer) | 활성 소비자가 없는 직접 엔드포인트에 메시지를 전송하는 경우 생산자에게 차단하고 소비자가 활성화될 때까지 기다릴 수 있습니다. | true | boolean |
| 시간 초과 (producer) | 블록이 활성화된 경우 사용할 제한 시간 값입니다. | 30000 | long |
| headerFilterStrategy (advanced) | Producer 엔드포인트에서만 적용할 HeaderFilterStrategy를 설정합니다(요청 및 응답 모두). 기본값: 없음. | HeaderFilterStrategy | |
| propagateProperties (advanced) | 생산자 측에서 소비자 측으로 속성을 전파할지 여부에 관계없이, 그 반대의 경우도 마찬가지입니다. 기본값: true. | true | boolean |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Direct VM 끝점은 URI 구문을 사용하여 구성됩니다.
direct-vm:name
다음 경로 및 쿼리 매개변수를 사용합니다.
83.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| name | direct-vm 끝점의 필수 이름 | 문자열 |
83.2.2. 쿼리 매개변수(9 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN/ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN/ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | Exchange를 만들 때 기본 교환 패턴을 설정합니다. | ExchangePattern | |
| 블록 (producer) | 활성 소비자가 없는 직접 엔드포인트에 메시지를 전송하는 경우 생산자에게 차단하고 소비자가 활성화될 때까지 기다릴 수 있습니다. | true | boolean |
| failIfNoConsumers (producer) | 활성 소비자가 없는 Direct-VM 끝점으로 보낼 때 예외를 throw하여 생산자가 실패해야 하는지 여부입니다. | false | boolean |
| 시간 초과 (producer) | 블록이 활성화된 경우 사용할 제한 시간 값입니다. | 30000 | long |
| headerFilterStrategy (producer) | Producer 엔드포인트에서만 적용할 HeaderFilterStrategy를 설정합니다(요청 및 응답 모두). 기본값: 없음. | HeaderFilterStrategy | |
| propagateProperties (advanced) | 생산자 측에서 소비자 측으로 속성을 전파할지 여부에 관계없이, 그 반대의 경우도 마찬가지입니다. 기본값: true. | true | boolean |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
83.3. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
아래 경로에서 직접 구성 요소를 사용하여 두 경로를 함께 연결합니다.
from("activemq:queue:order.in")
.to("bean:orderServer?method=validate")
.to("direct-vm:processOrder");
그리고 또 다른 CamelContext로, 이제 다른 OSGi 번들과 같은 다른 CamelContext에서
from("direct-vm:processOrder")
.to("bean:orderService?method=process")
.to("activemq:queue:order.out");
그리고 봄 DSL을 사용하는 샘플:
<route>
<from uri="activemq:queue:order.in"/>
<to uri="bean:orderService?method=validate"/>
<to uri="direct-vm:processOrder"/>
</route>
<route>
<from uri="direct-vm:processOrder"/>
<to uri="bean:orderService?method=process"/>
<to uri="activemq:queue:order.out"/>
</route>
83.4. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
84장. Disruptor Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.12로 사용 가능
중단자: 구성 요소는 표준 SEDA 구성 요소만큼 비동기 SEDA 동작을 제공하지만 표준 SEDA에서 사용하는 BlockingQueue 대신 Disruptor 를 활용합니다. 또는, A
Disruptor-vm: 이 구성 요소에서 엔드포인트를 지원하여 표준 VM 에 대한 대안을 제공합니다. SEDA 구성 요소와 마찬가지로 중단자의 버퍼: 엔드 포인트가 단일 CamelContext 내에서만 볼 수 있으며 지속성 또는 복구에 대한 지원은 제공되지 않습니다. disruptor-vm: 엔드포인트는 CamelContexts 인스턴스 간 통신을 지원하므로 이 메커니즘을 사용하여 웹 애플리케이션 간에 통신할 수 있습니다( camel-disruptor.jar 가 system/boot classpath에 있음)
SEDA 또는 VM Component에서 Disruptor Component를 사용하도록 선택하는 주요 이점은 생산자 및/또는 멀티 캐스트 또는 동시 소비자 간에 경합이 높은 사용 사례에서 성능에 해당합니다. 이러한 경우 처리량이 크게 증가하고 대기 시간 감소가 관찰되었습니다. 경합이 없는 시나리오의 성능은 SEDA 및 VM 구성 요소와 유사합니다.
Disruptor는 SEDA 및 VM 구성 요소의 동작 및 옵션을 모방하려는 의도로 구현됩니다. 이 둘의 주요 차이점은 다음과 같습니다.
- 사용된 버퍼는 항상 크기가 바인딩됩니다(기본값 1024 교환).
- 버퍼가 항상 표시되므로 Disruptor의 기본 동작은 예외를 throw하는 대신 버퍼가 가득 차는 동안 차단되는 것입니다. 이 기본 동작은 구성 요소에서 구성할 수 있습니다(옵션 참조).
- Disruptor enpoints는 BrowsableEndpoint 인터페이스를 구현하지 않습니다. 따라서 현재 Disruptor의 교환은 거래량 만 검색할 수 없습니다.
- Disruptor는 소비자(multicasted 또는 그 외에는)를 정적으로 구성해야 합니다. 즉시 소비자를 추가하거나 제거하려면 Disruptor에서 보류 중인 모든 Exchange를 완전히 플러시해야 합니다.
- 재구성의 결과로: Disruptor를 통해 전송된 데이터는 적어도 한 명의 소비자가 있는 경우 직접 처리되고 'gone'은 가입한 이후에만 새로운 교환이 발행됩니다.
- pollTimeout 옵션은 Disruptor Component에서 지원하지 않습니다.
- 전체 Disruptor에서 생산자가 차단되면 스레드 인터럽트에 응답하지 않습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-disruptor</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
84.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
disruptor:someName[?options]
또는
disruptor-vm:someName[?options]
여기서 someName 은 현재 CamelContext 내에서 끝점을 고유하게 식별하는 문자열(또는
disruptor-vm:의 경우)일 수 있습니다.
다음 형식으로 URI에 쿼리 옵션을 추가할 수 있습니다.
?option=value&option=value&…
84.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
다음 옵션은 모두 disruptor: 및 disruptor-vm: 구성 요소에 모두 유효합니다.
Disruptor 구성 요소는 아래에 나열된 8 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| defaultConcurrent Consumers (consumer) | 기본 동시 소비자 수를 구성하려면To configure the default number of concurrent consumers | 1 | int |
| 기본Multiple Consumers (consumer) | 여러 소비자에 대한 기본값을 구성하려면To configure the default value for multiple consumers | false | boolean |
| defaultProducerType (producer) | DisruptorProducerType의 기본값을 구성하려면 기본값은 Multi입니다. | multi | DisruptorProducerType |
| defaultWaitStrategy (consumer) | DisruptorWaitStrategy의 기본값을 구성하려면 기본값은 Blocking입니다. | 차단 | DisruptorWaitStrategy |
| defaultBlockWhenFull (producer) | 전체 값이 true인 경우 block의 기본값을 구성하려면 다음을 수행합니다. | true | boolean |
| queueSize (일반) | 링 버퍼 크기를 구성하려면 더 이상 사용되지 않음 | int | |
| bufferSize (일반) | 링 버퍼 크기를 구성하려면 다음을 수행합니다. | 1024 | int |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Disruptor 엔드포인트는 URI 구문을 사용하여 구성됩니다.
disruptor:name
다음 경로 및 쿼리 매개변수를 사용합니다.
84.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| name | 필요한 큐 이름 | 문자열 |
84.2.2. 쿼리 매개변수(12 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 크기 (공용) | 장애 복구기의 최대 용량은 두 개의 가장 가까운 전력으로 효과적으로 증가할 것입니다. 참고: 이 옵션을 사용하는 경우 크기를 결정하는 큐 이름으로 생성되는 첫 번째 끝점을 지정합니다. 모든 엔드포인트가 동일한 크기를 사용하도록 하려면 모두 size 옵션 또는 생성되는 첫 번째 끝점을 구성합니다. | 1024 | int |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| concurrentConsumers (consumer) | 동시 스레드 처리 교환 수입니다. | 1 | int |
| multipleConsumers (Consumer) | 여러 사용자가 허용되는지 여부를 지정합니다. 활성화된 경우 게시-서브스크립션 메시징에 Disruptor를 사용할 수 있습니다. 즉, 메시지를 큐에 전송하고 각 소비자가 메시지 사본을 수신하도록 할 수 있습니다. 이 옵션을 활성화하면 모든 소비자 끝점에 이 옵션을 지정해야 합니다. | false | boolean |
| waitStrategy (consumer) | 소비자 스레드에서 새 Exchange 게시를 기다리는 데 사용하는 전략을 정의합니다.Defines the strategy used by consumer threads to wait on new exchange to be published. 허용되는 옵션은Blocking, Sleeping, BusySpin 및 Yielding입니다. | 차단 | DisruptorWaitStrategy |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| BlockWhenFull (producer) | 전체 Disruptor로 메시지를 보내는 스레드가 링버퍼의 용량이 더 이상 소진되지 않을 때까지 차단됩니다. 기본적으로 호출 스레드는 메시지를 허용할 수 있을 때까지 차단 및 대기합니다.By default, the calling thread will block and wait until the message can be accepted. 이 옵션을 비활성화하면 대기열이 가득 차 있음을 알리는 예외가 발생합니다. | false | boolean |
| producerType (producer) | Disruptor에서 허용되는 생산자를 정의합니다. 허용되는 옵션은 다중 생산자와 Single를 허용하여 하나의 동시 생산자가 활성화되어 있을 때만 특정 최적화를 활성화할 수 있습니다. | multi | DisruptorProducerType |
| 시간 초과 (producer) | 생산자가 비동기 작업이 완료될 때까지 대기를 중지할 때까지의 시간 초과(밀리초)입니다. 0 또는 음수 값을 사용하여 시간 제한을 비활성화할 수 있습니다. | 30000 | long |
| waitForTaskToComplete (producer) | 호출자가 async 작업이 완료되기 전에 대기해야 하는지 여부를 지정하는 옵션입니다. 다음 세 가지 옵션이 지원됩니다: Always, Never 또는 IfReplyExpected. 처음 두 값은 자체 설명입니다. 마지막 값 IfReplyExpected는 메시지가 Request Reply 기반인 경우에만 기다립니다. | IfReplyExpected | WaitForTaskToComplete |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
84.3. 대기 전략 링크 복사링크가 클립보드에 복사되었습니다!
대기 전략은 현재 다음 교환이 게시되기를 기다리는 소비자 스레드가 대기 중인 대기 유형입니다. 다음 전략을 선택할 수 있습니다.
| 이름 | 설명 | 조언 |
|---|---|---|
| 차단 | 장벽을 기다리는 소비자에 대해 잠금 및 조건 변수를 사용하는 차단 전략 | 이 전략은 CPU 리소스만큼 처리량과 대기 시간이 중요하지 않은 경우 사용할 수 있습니다. |
| sleep | 처음에 회전하는 유휴 전략은 Thread.yield()를 사용하고 결국 OS와 JVM의 최소 나노 수에 대해 소비자가 장벽을 기다리는 동안 사용할 수 있습니다. | 이 전략은 성능과 CPU 리소스를 손상시킬 수 있습니다. 대기 시간 스파이크는 조용한 기간 후에 발생할 수 있습니다. |
| BusySpin | 장벽을 기다리는 소비자에 대해 바쁜 스핀 루프를 사용하는 busy Spin 전략. | 이 전략에서는 CPU 리소스를 사용하여 latency jitter를 도입할 수 있는 syscall을 방지합니다. 스레드를 특정 CPU 코어에 바인딩할 수 있는 경우 가장 적합합니다.It is best used when threads can be bound to specific CPU cores. |
| yielding | 처음에 회전한 후 장벽을 기다리는 소비자에 Thread.yield()를 사용하는 생성 전략. | 이 전략은 상당한 대기 시간 급증이 발생하지 않고 성능과 CPU 리소스를 손상시킬 수 있습니다. |
84.4. 요청 응답 사용 링크 복사링크가 클립보드에 복사되었습니다!
Disruptor 구성 요소는 호출자가 Async 경로가 완료될 때까지 대기할 요청 Reply 의 사용을 지원합니다. 예를 들면 다음과 같습니다.
from("mina:tcp://0.0.0.0:9876?textline=true&sync=true").to("disruptor:input");
from("disruptor:input").to("bean:processInput").to("bean:createResponse");
위의 경로에서 들어오는 요청을 수락하는 포트 9876에 TCP 리스너가 있습니다. 요청은 disruptor:input 버퍼로 라우팅됩니다. Request Reply(응답 요청) 메시지이므로 응답을 기다립니다. 사용자가 disruptor:input 버퍼의 소비자가 완료되면 원래 메시지 응답에 응답을 복사합니다.
84.5. 동시 소비자 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Disruptor 엔드포인트는 단일 소비자 스레드를 사용하지만 동시 소비자 스레드를 사용하도록 구성할 수 있습니다. 스레드 풀 대신 사용할 수 있습니다.Instead of thread pools you can use:
from("disruptor:stageName?concurrentConsumers=5").process(...)
둘 사이의 차이로 인해 로드에 따라 런타임 시 스레드 풀이 동적으로 증가/축소할 수 있지만 동시 소비자 수는 항상 고정되고 내부적으로 지원되므로 성능이 더 높아질 수 있습니다.
84.6. 스레드 풀 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같은 작업을 수행하여 Disruptor 엔드포인트에 스레드 풀을 추가합니다.
from("disruptor:stageName").thread(5).process(...)
Disruptor와 함께 사용할 일반 BlockingQueue 를 추가하여 중단을 일으킬 수 있으며, Disruptor를 사용하여 얻은 성능상의 일부를 효과적으로 부정할 수 있습니다. 대신 concurrentConsumers 옵션을 사용하여 Disruptor 끝점에서 메시지를 처리하는 스레드 수를 직접 구성하는 것이 좋습니다.
84.7. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
아래 경로에서 Disruptor를 사용하여 다른 스레드에서 추가 처리를 위해 fire-and-forget 메시지를 보낼 수 있도록 이 비동기 대기열에 요청을 보내고 이 스레드의 지속적인 응답을 원래 호출자에게 반환합니다.
public void configure() throws Exception {
from("direct:start")
// send it to the disruptor that is async
.to("disruptor:next")
// return a constant response
.transform(constant("OK"));
from("disruptor:next").to("mock:result");
}
여기에서 Hello World 메시지를 보내고 응답이 OK일 것으로 예상합니다.
Object out = template.requestBody("direct:start", "Hello World");
assertEquals("OK", out);
추가 처리를 위해 다른 스레드의 Disruptor에서 "Hello World" 메시지가 사용됩니다. 이는 단위 테스트에서이므로 단위 테스트에서 어설션을 수행할 수 있는 mock 엔드포인트로 전송됩니다.
84.8. 여러Consumers 사용 링크 복사링크가 클립보드에 복사되었습니다!
이 예제에서는 두 개의 소비자를 정의하고 스프링 빈으로 등록합니다.
<!-- define the consumers as spring beans -->
<bean id="consumer1" class="org.apache.camel.spring.example.FooEventConsumer"/>
<bean id="consumer2" class="org.apache.camel.spring.example.AnotherFooEventConsumer"/>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<!-- define a shared endpoint which the consumers can refer to instead of using url -->
<endpoint id="foo" uri="disruptor:foo?multipleConsumers=true"/>
</camelContext>
Disruptor foo endpoint에 여러Consumers=true를 지정했기 때문에 두 개 이상의 소비자가 메시지 사본을 pub-sub 스타일 메시지 유형으로 수신할 수 있습니다. 빈이 단위 테스트의 일부이므로 mock 엔드포인트에 메시지를 보낼 수 있지만, @Consume를 사용하여 Disruptor에서 사용할 수 있는 방법을 확인할 수 있습니다.
public class FooEventConsumer {
@EndpointInject(uri = "mock:result")
private ProducerTemplate destination;
@Consume(ref = "foo")
public void doSomething(String body) {
destination.sendBody("foo" + body);
}
}
84.9. 중단 정보 추출 링크 복사링크가 클립보드에 복사되었습니다!
필요한 경우 이러한 방식으로 JMX를 사용하지 않고도 버퍼 크기 등과 같은 정보를 얻을 수 있습니다.
DisruptorEndpoint disruptor = context.getEndpoint("disruptor:xxxx");
int size = disruptor.getBufferSize();
85장. DNS 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.7에서 사용 가능
DNS Java를 사용하여 DNS 쿼리를 실행하는 Camel에 대한 추가 구성 요소입니다. 구성 요소는 DNS Java 의 상단에 있는 씬 계층입니다.
구성 요소는 다음 작업을 제공합니다.
- ip로 도메인을 확인하려면 IP
- 조회: 도메인에 대한 정보를 조회합니다.
- dig: DNS 쿼리를 실행하려면
INFO:* Require SUN JVM* DNS Java 라이브러리가 SUN JVM에서 실행해야 합니다.
Apache ServiceMix 또는 Apache Karaf를 사용하는 경우 etc/jre.properties 파일을 조정하여 내보낸 Java 플랫폼 패키지 목록에 Su n.net.spi.nameservice 를 추가해야 합니다. 이 변경 사항을 적용하려면 서버를 다시 시작해야 합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-dns</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
85.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
DNS 구성 요소의 URI 스키마는 다음과 같습니다.
dns://operation[?options]
이 구성 요소는 생산자만 지원합니다.
85.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
DNS 구성 요소에는 옵션이 없습니다.
DNS 끝점은 URI 구문을 사용하여 구성됩니다.
dns:dnsType
다음 경로 및 쿼리 매개변수를 사용합니다.
85.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| dnsType | 필수 조회 유형입니다. | DnsType |
85.2.2. 쿼리 매개변수(1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
85.3. headers 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 작업 | 설명 |
|---|---|---|---|
| dns.domain | 문자열 | ip | 도메인 이름입니다. 필수 항목입니다. |
| dns.name | 문자열 | lookup | 조회할 이름입니다. 필수 항목입니다. |
| dns.type | lookup, dig |
조회 유형입니다. | |
| dns.class | lookup, dig |
조회의 DNS 클래스입니다. | |
| dns.query | 문자열 | dig | 쿼리 자체입니다. 필수 항목입니다. |
| dns.server | 문자열 | dig | 특히 쿼리에 대한 서버입니다. If none is given, the default one specified by the OS will be used. 선택 사항: |
85.4. 예제 링크 복사링크가 클립보드에 복사되었습니다!
85.4.1. IP lookup 링크 복사링크가 클립보드에 복사되었습니다!
<route id="IPCheck">
<from uri="direct:start"/>
<to uri="dns:ip"/>
</route>
도메인의 IP가 조회됩니다. 예를 들어 www.example.com은 192.0.32.10으로 확인됩니다.
조회할 IP 주소는 헤더에 "dns.domain" 키가 있어야 합니다.
85.4.2. DNS 조회 링크 복사링크가 클립보드에 복사되었습니다!
<route id="IPCheck">
<from uri="direct:start"/>
<to uri="dns:lookup"/>
</route>
이렇게 하면 도메인과 관련된 DNS 레코드 집합이 반환됩니다.
조회 이름을 헤더에 "dns.name" 키가 있어야 합니다.
85.4.3. DNS Dig 링크 복사링크가 클립보드에 복사되었습니다!
dig는 DNS 쿼리를 실행하는 Unix 명령줄 유틸리티입니다.
<route id="IPCheck">
<from uri="direct:start"/>
<to uri="dns:dig"/>
</route>
"dns.query" 키가 있는 헤더에 쿼리를 제공해야 합니다.
85.5. DNS 활성화 정책 링크 복사링크가 클립보드에 복사되었습니다!
DnsActivationPolicy는 dns 상태에 따라 경로를 동적으로 시작하고 중지하는 데 사용할 수 있습니다.
다른 리전에서 실행되는 동일한 구성 요소의 인스턴스가 있는 경우 dns가 해당 지역을 가리키는 경우에만 활성화하도록 각 리전에서 경로를 구성할 수 있습니다.
예를 들어 NYC에 인스턴스가 있고 SFO의 인스턴스가 있을 수 있습니다. NYC 인스턴스를 up 및 SFO 인스턴스를 종료하도록 nyc-service.example.com을 가리키도록 CNAME service.example.com 서비스를 구성합니다. sfo-service.example.com을 가리키도록 CNAME service.example.com을 변경하면 해당 경로가 중지되고 sfo가 경로를 표시합니다. 이를 통해 실제 구성 요소를 다시 시작하지 않고 지역을 전환할 수 있습니다.
<bean id="dnsActivationPolicy" class="org.apache.camel.component.dns.policy.DnsActivationPolicy">
<property name="hostname" value="service.example.com" />
<property name="resolvesTo" value="nyc-service.example.com" />
<property name="ttl" value="60000" />
</bean>
<route id="routeId" autoStartup="false" routePolicyRef="dnsActivationPolicy">
</route>
86장. Docker 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.15에서 사용 가능
Docker와 통신을 위한 Camel 구성 요소.
Docker Camel 구성 요소는 Docker Remote API 를 통해 docker-java 를 활용합니다.
86.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
docker://[operation]?[options]
여기서 작업 은 Docker에서 수행할 특정 작업입니다.
86.2. 일반 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Docker 구성 요소는 아래 나열된 두 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | 공유 Docker 구성 사용 | DockerConfiguration | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Docker 엔드포인트는 URI 구문을 사용하여 구성됩니다.
docker:operation
다음 경로 및 쿼리 매개변수를 사용합니다.
86.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 작업 | 사용할 수 있는 Which 작업 필요 | DockerOperation |
86.2.2. 쿼리 매개변수 (20 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 이메일 (일반) | 사용자와 연결된 이메일 주소 | 문자열 | |
| 호스트 (일반) | 필수 Docker 호스트 | localhost | 문자열 |
| 포트 (공용) | 필수 Docker 포트 | 2375 | 정수 |
| requestTimeout (일반) | 응답의 요청 시간 초과(초) | 정수 | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| cmdExecFactory (advanced) | 사용할 DockerCmdExecFactory 구현의 정규화된 클래스 이름입니다. | com.github.dockerjava.netty.NettyDockerCmdExecFactory | 문자열 |
| followRedirectFilter (advanced) | 리디렉션 필터를 실행할지 여부 | false | boolean |
| loggingFilter (advanced) | 로깅 필터 사용 여부 | false | boolean |
| maxPerRouteConnections (고급) | 최대 경로 연결 | 100 | 정수 |
| maxTotalConnections (advanced) | 최대 총 연결 수 | 100 | 정수 |
| serverAddress (advanced) | Docker 레지스트리의 서버 주소입니다. | 문자열 | |
| 소켓 (advanced) | 소켓 연결 모드 | true | boolean |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| certpath ( security) | SSL 인증서 체인을 포함하는 위치 | 문자열 | |
| 암호 (보안) | 인증하기 위한 암호 | 문자열 | |
| 보안 (보안) | HTTPS 통신 사용 | false | boolean |
| tlsVerify (보안) | TLS 확인 | false | boolean |
| 사용자 이름 (보안) | 인증할 사용자 이름 | 문자열 |
86.3. 헤더 전략 링크 복사링크가 클립보드에 복사되었습니다!
모든 URI 옵션을 Header 속성으로 전달할 수 있습니다. 메시지 헤더에 있는 값이 URI 매개변수보다 우선합니다. header 속성은 다음과 같이 CamelDocker 접두사가 있는 URI 옵션 형식을 사용합니다.
| URI 옵션 | 헤더 속성 |
|---|---|
| containerId | CamelDockerContainerId |
86.4. 예제 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 Docker의 이벤트를 사용합니다.
from("docker://events?host=192.168.59.103&port=2375").to("log:event");
다음 예제에서는 Docker에서 시스템 전체 정보를 쿼리합니다.
from("docker://info?host=192.168.59.103&port=2375").to("log:info");
86.5. 종속 항목 링크 복사링크가 클립보드에 복사되었습니다!
Camel 경로에서 Docker를 사용하려면 구성 요소를 구현하는 camel-docker 에 종속성을 추가해야 합니다.
Maven을 사용하는 경우 pom.xml에 다음을 추가하여 최신 버전과 가장 큰 릴리스의 버전 번호를 대체합니다(최신 버전의 다운로드 페이지 참조).
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-docker</artifactId>
<version>x.x.x</version>
</dependency>
87장. Dozer 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.15에서 사용 가능
dozer: 구성 요소는 Camel 2.15.0 이후 Dozer 매핑 프레임워크를 사용하여 Java 빈 간에 매핑할 수 있는 기능을 제공합니다. Camel은 Dozer 매핑을 유형 변환기로 트리거하는 기능도 지원합니다. Dozer 끝점과 Dozer 변환기를 사용하는 경우의 주요 차이점은 다음과 같습니다.
- 변환기 레지스트리를 통해 엔드 포인트 기반 vs. 글로벌 구성에서 Dozer 매핑 구성을 관리하는 기능입니다.
- Dozer 끝점은 모든 변환 끝점을 지원하기 위해 Camel 데이터 형식을 사용하여 데이터를 마샬링/마달링하도록 구성할 수 있습니다.
- Dozer 구성 요소를 사용하면 Dozer의 세분화된 통합 및 확장을 통해 추가 기능(예: 매핑에 표현식을 사용하여 리터럴 값 매핑 등)을 지원할 수 있습니다.
Dozer 구성 요소를 사용하려면 Maven 사용자가 pom.xml 에 다음 종속성을 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-dozer</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
87.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
Dozer 구성 요소는 생산자 끝점만 지원합니다.
dozer:endpointId[?options]
여기서 endpointId 는 Dozer 엔드포인트 구성을 고유하게 식별하는 데 사용되는 이름입니다.
Dozer 엔드포인트 URI의 예:
from("direct:orderInput").
to("dozer:transformOrder?mappingFile=orderMapping.xml&targetModel=example.XYZOrder").
to("direct:orderOutput");
87.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Dozer 구성 요소에는 옵션이 없습니다.
Dozer 엔드포인트는 URI 구문을 사용하여 구성됩니다.
dozer:name
다음 경로 및 쿼리 매개변수를 사용합니다.
87.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| name | 사람이 읽을 수 있는 매핑 이름이 필요합니다. | 문자열 |
87.2.2. 쿼리 매개변수(7 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| mappingConfiguration (producer) | Dozer 매핑 구성에 사용해야 하는 Camel 레지스트리의 DozerBeanMapperConfiguration 빈의 이름입니다. 이는 Dozer의 구성 방법을 세밀하게 제어하는 데 사용할 수 있는 mappingFile 옵션의 대안입니다. 빈이 Camel 레지스트리(예: myDozerConfig)에 있음을 나타내기 위해 값에 접두사를 사용해야 합니다. | DozerBeanMapper 구성 | |
| mappingFile (producer) | Dozer 구성 파일의 위치입니다. 파일은 기본적으로 classpath에서 로드되지만 file:, classpath: 또는 http:를 사용하여 특정 위치에서 구성을 로드할 수 있습니다. | dozerBeanMapping.xml | 문자열 |
| marshalId (producer) | 매핑 출력을 Java가 아닌 유형으로 마샬링하는 데 사용할 Camel Context 내에 정의된 dataFormat의 id입니다. | 문자열 | |
| sourceModel (producer) | 매핑에 사용되는 소스 유형의 정규화된 클래스 이름입니다. 지정된 경우 Dozer로 매핑하기 전에 매핑에 대한 입력이 지정된 유형으로 변환됩니다. | 문자열 | |
| targetModel (producer) | 매핑에 사용된 대상 유형에 대한 정규화된 클래스 이름이 필요합니다. | 문자열 | |
| unmarshalId (producer) | Java가 아닌 유형의 매핑 입력을 해제하는 데 사용할 Camel Context에 정의된 dataFormat의 id입니다. | 문자열 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
87.3. Dozer에서 데이터 형식 사용 링크 복사링크가 클립보드에 복사되었습니다!
Dozer는 매핑을 위해 Java 이외의 소스와 대상을 지원하지 않으므로 XML 문서를 자체적으로 Java 오브젝트에 매핑할 수 없습니다. 다행히도 Camel은 데이터 형식을 사용하여 Java와 다양한 형식 간의 마샬링을 광범위하게 지원합니다. Dozer 구성 요소는 Dozer를 통해 처리하기 전에 입력 및 출력 데이터를 데이터 형식으로 전달할 수 있도록 하여 이 지원을 활용합니다. Dozer 구성 요소 외부에서 직접 이 작업을 수행할 수는 있지만 Dozer 구성 요소에서 직접 지원하면 단일 끝점을 사용하여 Camel 내 모든 변환을 구성할 수 있습니다.
예를 들어 Dozer 구성 요소를 사용하여 XML 데이터 구조와 JSON 데이터 구조 간에 매핑하려고 한다고 가정해 보겠습니다. Camel Context에 다음과 같은 데이터 형식이 정의된 경우:
<dataFormats>
<json library="Jackson" id="myjson"/>
<jaxb contextPath="org.example" id="myjaxb"/>
</dataFormats>
그런 다음, Dozer 끝점을 구성하여 JAXB 데이터 형식을 사용하여 입력 XML을 분리 해제하고 Jackson을 사용하여 매핑 출력을 마샬링할 수 있습니다.
<endpoint uri="dozer:xml2json?marshalId=myjson&unmarshalId=myjaxb&targetModel=org.example.Order"/>
87.4. Dozer 구성 링크 복사링크가 클립보드에 복사되었습니다!
모든 Dozer 엔드포인트에는 소스와 대상 오브젝트 간 매핑을 정의하는 Dozer 매핑 구성 파일이 필요합니다. mappingFile 또는 mappingConfiguration 옵션이 엔드포인트에 지정되지 않은 경우 구성 요소는 META-INF/dozerBeanMapping.xml의 위치를 기본값으로 합니다. 단일 엔드포인트에 대해 여러 매핑 구성 파일을 제공하거나 추가 구성 옵션(예: 이벤트 리스너, 사용자 지정 변환기 등)을 지정해야 하는 경우 org.apache.camel.dozer.dozer.dozer.dozerMapperConfiguration 의 인스턴스를 사용할 수 있습니다.
<bean id="mapper" class="org.apache.camel.converter.dozer.DozerBeanMapperConfiguration">
<property name="mappingFiles">
<list>
<value>mapping1.xml</value>
<value>mapping2.xml</value>
</list>
</property>
</bean>
87.5. 매핑 확장 링크 복사링크가 클립보드에 복사되었습니다!
Dozer 구성 요소는 Dozer 매핑 프레임워크에 대한 여러 확장을 사용자 지정 변환기로 구현합니다. 이러한 변환기는 Dozer 자체에서 직접 지원하지 않는 매핑 함수를 구현합니다.
87.5.1. 변수 매핑 링크 복사링크가 클립보드에 복사되었습니다!
변수 매핑을 사용하면 소스 필드의 값을 사용하는 대신 Dozer 구성 내의 변수 정의 값을 target 필드에 매핑할 수 있습니다. 이는 다른 매핑 프레임워크의 연속 매핑과 같습니다. 여기서 대상 필드에 리터럴 값을 할당할 수 있습니다. 변수 매핑을 사용하려면 매핑 구성 내에서 변수를 정의한 다음 VariableMapper 클래스에서 선택한 대상 필드에 매핑하면 됩니다.
<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
<configuration>
<variables>
<variable name="CUST_ID">ACME-SALES</variable>
</variables>
</configuration>
<mapping>
<class-a>org.apache.camel.component.dozer.VariableMapper</class-a>
<class-b>org.example.Order</class-b>
<field custom-converter-id="_variableMapping" custom-converter-param="${CUST_ID}">
<a>literal</a>
<b>custId</b>
</field>
</mapping>
</mappings>
87.5.2. 사용자 정의 매핑 링크 복사링크가 클립보드에 복사되었습니다!
사용자 지정 매핑을 사용하면 소스 필드가 대상 필드에 매핑되는 방법에 대한 자체 논리를 정의할 수 있습니다. 이는 Dozer 고객 컨버터와 기능 면에서 두 가지 주목할만한 차이점이 있습니다.
- 사용자 지정 매핑이 있는 단일 클래스에 여러 개의 변환기 메서드를 포함할 수 있습니다.
- 사용자 지정 매핑을 사용하여 Dozer 특정 인터페이스를 구현할 필요가 없습니다.
매핑 구성에서 기본 제공 '_customMapping' 변환기를 사용하여 사용자 정의 매핑을 선언합니다. 이 변환기의 매개 변수에는 다음과 같은 구문이 있습니다.
[class-name][,method-name]
메서드 이름은 선택 사항입니다. Dozer 구성 요소에서 매핑에 필요한 입력 및 출력 유형과 일치하는 메서드를 검색합니다. 사용자 정의 매핑 및 구성의 예는 아래에 제공됩니다.
public class CustomMapper {
// All customer ids must be wrapped in "[ ]"
public Object mapCustomer(String customerId) {
return "[" + customerId + "]";
}
}
<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
<mapping>
<class-a>org.example.A</class-a>
<class-b>org.example.B</class-b>
<field custom-converter-id="_customMapping"
custom-converter-param="org.example.CustomMapper,mapCustomer">
<a>header.customerNum</a>
<b>custId</b>
</field>
</mapping>
</mappings>
87.5.3. 표현식 매핑 링크 복사링크가 클립보드에 복사되었습니다!
표현식 매핑을 사용하면 Camel의 강력한 언어 기능을 사용하여 표현식을 평가하고 매핑의 대상 필드에 결과를 할당할 수 있습니다. Camel이 지원하는 모든 언어는 표현식 매핑에 사용할 수 있습니다. 표현식의 기본 예에는 Camel 메시지 헤더 또는 교환 속성을 대상 필드에 매핑하거나 여러 소스 필드를 대상 필드에 연결하는 기능이 포함됩니다. 매핑 식의 구문은 다음과 같습니다.
[language]:[expression]
메시지 헤더를 대상 필드에 매핑하는 예:
<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">
<mapping>
<class-a>org.apache.camel.component.dozer.ExpressionMapper</class-a>
<class-b>org.example.B</class-b>
<field custom-converter-id="_expressionMapping" custom-converter-param="simple:\${header.customerNumber}">
<a>expression</a>
<b>custId</b>
</field>
</mapping>
</mappings>
Dozer가 EL을 사용하여 정의된 변수 값을 해결하려고 할 때 오류가 발생하지 않도록 표현식 내 모든 속성을 "\"로 이스케이프해야 합니다.
88장. 드릴 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.19에서 사용 가능
드릴: 구성 요소는 Apache DrillCluster 로 쿼리할 수 있는 기능을 제공합니다.
드릴은 빅 데이터 탐색을 위한 Apache 오픈 소스 SQL 쿼리 엔진입니다. 드릴은 처음부터 최신 빅 데이터 애플리케이션에서 오는 반-구조화된 빠른 진화의 데이터를 기반으로 한 고성능 분석을 지원하는 동시에 업계 표준 쿼리 언어인 ANSI SQL의 친숙하고 에코시스템을 제공합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-drill</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
88.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
drill://host[?options]
다음 형식 ?option=value&option=value&…로 URI에 쿼리 옵션을 추가할 수 있습니다.
88.2. Drill Producer 링크 복사링크가 클립보드에 복사되었습니다!
생산자는 CamelDrillQuery 헤더를 사용하여 쿼리를 실행하고 결과를 본문에 넣습니다.
88.3. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Drill 구성 요소에는 옵션이 없습니다.
Drill 엔드포인트는 URI 구문을 사용하여 구성됩니다.
drill:host
다음 경로 및 쿼리 매개변수를 사용합니다.
88.3.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| host | 필수 ZooKeeper 호스트 이름 또는 IP 주소. 호스트 이름 또는 IP 주소 대신 로컬로 사용하여 로컬 드릴비트에 연결합니다. | 문자열 |
88.3.2. 쿼리 매개변수 (5 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| clusterId (producer) | 클러스터 ID https://drill.apache.org/docs/using-the-jdbc-driver/determining-the-cluster-id | 문자열 | |
| 디렉토리 (producer) | ZooKeeper의 드릴 디렉터리 | 문자열 | |
| 모드 (producer) | 연결 모드: zk: Zookeeper 드릴bit: Drillbit 직접 연결 https://drill.apache.org/docs/using-the-jdbc-driver/ | ZK | DrillConnectionMode |
| 포트 (producer) | zookeeper 포트 번호 | 정수 | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
88.4. 예를 들면 다음과 같습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- Camel 구성
- 구성 요소
- 끝점
- 시작하기
89장. Dropbox Component 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.14로 사용 가능
dropbox: 구성 요소를 사용하면 Dropbox 원격 폴더를 메시지의 생산자 또는 소비자로 처리할 수 있습니다. Dropbox Java Core API (이 구성 요소의 참조 버전은 1.7.x임)를 사용 하면 다음과 같은 기능이 있습니다.
- 소비자로서 파일을 다운로드하고 쿼리를 통해 파일을 검색합니다.
- 생산자로 파일을 다운로드하고, 원격 디렉터리 간에 파일을 이동하고, 파일/dir을 삭제하고, 파일을 업로드하고, 쿼리로 파일을 검색합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-dropbox</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
89.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
dropbox://[operation]?[options]
여기서 작업 은 Dropbox 원격 폴더에서 수행할 특정 동작(일반적으로 CRUD 작업입니다)입니다.
89.2. 작업 링크 복사링크가 클립보드에 복사되었습니다!
| 작업 | 설명 |
|---|---|
|
| Dropbox에서 파일 또는 디렉토리 삭제 |
|
| Dropbox에서 파일 다운로드 |
|
| Dropbox의 폴더에서 파일 이동 |
|
| Dropbox에 파일 업로드 |
|
| 문자열 쿼리를 기반으로 Dropbox에서 파일 검색 |
작업을 수행하려면 추가 옵션이 필요하며 일부는 특정 작업에 필요합니다.
89.3. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Dropbox API를 사용하려면 accessToken 및 clientIdentifier 를 받아야 합니다.
이미지를 가져오는 방법을 설명 하는 Dropbox 문서 를 참조할 수 있습니다.
Dropbox 구성 요소에는 옵션이 없습니다.
Dropbox 엔드포인트는 URI 구문을 사용하여 구성됩니다.
dropbox:operation
다음 경로 및 쿼리 매개변수를 사용합니다.
89.3.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 작업 | 필요한 특정 작업(일반적으로 Dropbox 원격 폴더에서 수행할 CRUD 작업임). | DropboxOperation |
89.3.2. 쿼리 매개변수(12 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| Access Token (common) | required: 특정 Dropbox 사용자에게 API 요청을 하는 데 필요한 액세스 토큰 | 문자열 | |
| 클라이언트 (일반) | 기존 DbxClient 인스턴스를 DropBox 클라이언트로 사용합니다. | DbxClientV2 | |
| clientIdentifier (일반) | API 요청을 하기 위해 등록된 앱의 이름 | 문자열 | |
| localPath (common) | 로컬 파일 시스템에서 Dropbox에 업로드할 선택적 폴더 또는 파일입니다. 이 옵션이 구성되지 않은 경우 메시지 본문이 업로드할 콘텐츠로 사용됩니다. | 문자열 | |
| newRemotePath (common) | 대상 파일 또는 폴더 | 문자열 | |
| 쿼리 (일반) | 검색할 하위 문자열 목록입니다. 파일은 모든 하위 문자열이 포함된 경우에만 일치합니다. 이 옵션을 설정하지 않으면 모든 파일이 일치합니다. | 문자열 | |
| remotePath (common) | 이동할 파일 또는 폴더 | 문자열 | |
| uploadMode (common) | 업로드할 모드. 동일한 이름을 가진 파일이 이미 dropbox에 있는 경우 새 파일 이름이 이름이 변경된 경우. dropbox에 동일한 이름의 파일이 이미 존재하는 경우 이를 덮어씁니다. | DropboxUploadMode | |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
89.4. del 작업 링크 복사링크가 클립보드에 복사되었습니다!
Dropbox에서 파일을 삭제합니다.
Camel 생산자로만 작동합니다.
다음은 이 작업에 대한 옵션 목록입니다.
| 속성 | 필수 | 설명 |
|---|---|---|
|
|
| Dropbox에서 삭제할 폴더 또는 파일 |
89.4.1. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
from("direct:start")
.to("dropbox://del?accessToken=XXX&clientIdentifier=XXX&remotePath=/root/folder1")
.to("mock:result");
from("direct:start")
.to("dropbox://del?accessToken=XXX&clientIdentifier=XXX&remotePath=/root/folder1/file1.tar.gz")
.to("mock:result");
89.4.2. 결과 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
다음 헤더는 메시지 결과에 설정됩니다.
| 속성 | 값 |
|---|---|
|
| dropbox에서 삭제된 경로의 이름 |
89.4.3. 결과 메시지 본문 링크 복사링크가 클립보드에 복사되었습니다!
다음 오브젝트는 메시지 본문 결과에 설정됩니다.
| 오브젝트 유형 | 설명 |
|---|---|
|
| dropbox에서 삭제된 경로의 이름 |
89.5. Get (download) 작업 링크 복사링크가 클립보드에 복사되었습니다!
Dropbox에서 파일을 다운로드합니다.
Camel 생산자 또는 Camel 소비자로 작동합니다.
다음은 이 작업에 대한 옵션 목록입니다.
| 속성 | 필수 | 설명 |
|---|---|---|
|
|
| Dropbox에서 다운로드할 폴더 또는 파일 |
89.5.1. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
from("direct:start")
.to("dropbox://get?accessToken=XXX&clientIdentifier=XXX&remotePath=/root/folder1/file1.tar.gz")
.to("file:///home/kermit/?fileName=file1.tar.gz");
from("direct:start")
.to("dropbox://get?accessToken=XXX&clientIdentifier=XXX&remotePath=/root/folder1")
.to("mock:result");
from("dropbox://get?accessToken=XXX&clientIdentifier=XXX&remotePath=/root/folder1")
.to("file:///home/kermit/");
89.5.2. 결과 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
다음 헤더는 메시지 결과에 설정됩니다.
| 속성 | 값 |
|---|---|
|
| 단일 파일 다운로드의 경우, 다운로드한 원격 파일의 경로 |
|
| 여러 파일을 다운로드하는 경우, 다운로드한 원격 파일의 경로 |
89.5.3. 결과 메시지 본문 링크 복사링크가 클립보드에 복사되었습니다!
다음 오브젝트는 메시지 본문 결과에 설정됩니다.
| 오브젝트 유형 | 설명 |
|---|---|
|
| 단일 파일 다운로드의 경우, 다운로드한 파일을 나타내는 스트림 |
|
| 여러 파일을 다운로드하는 경우 다운로드한 원격 파일의 경로와 함께 다운로드한 파일을 나타내는 스트림의 키인 맵이 있습니다. |
89.6. 이동 작업 링크 복사링크가 클립보드에 복사되었습니다!
한 폴더의 Dropbox 파일을 다른 폴더로 이동합니다.
Camel 생산자로만 작동합니다.
다음은 이 작업에 대한 옵션 목록입니다.
| 속성 | 필수 | 설명 |
|---|---|---|
|
|
| 이동할 파일 또는 폴더 |
|
|
| 대상 파일 또는 폴더 |
89.6.1. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
from("direct:start")
.to("dropbox://move?accessToken=XXX&clientIdentifier=XXX&remotePath=/root/folder1&newRemotePath=/root/folder2")
.to("mock:result");
89.6.2. 결과 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
다음 헤더는 메시지 결과에 설정됩니다.
| 속성 | 값 |
|---|---|
|
| dropbox에서 이동된 경로의 이름 |
89.6.3. 결과 메시지 본문 링크 복사링크가 클립보드에 복사되었습니다!
다음 오브젝트는 메시지 본문 결과에 설정됩니다.
| 오브젝트 유형 | 설명 |
|---|---|
|
| dropbox에서 이동된 경로의 이름 |
89.7. 삽입(upload) 작업 링크 복사링크가 클립보드에 복사되었습니다!
Dropbox에 파일을 업로드합니다.
Camel 생산자로 작동합니다.
다음은 이 작업에 대한 옵션 목록입니다.
| 속성 | 필수 | 설명 |
|---|---|---|
|
|
| add or force this option specifies how a file should be saved on dropbox: in case of "add" the new file will be renamed if a file with the same name already exists on dropbox. 같은 이름의 파일이 dropbox에 이미 존재하는 경우 이 파일을 덮어씁니다. |
|
|
| 로컬 파일 시스템에서 Dropbox에 업로드할 폴더 또는 파일입니다. 이 옵션을 구성한 경우 Camel 메시지 본문의 콘텐츠가 포함된 단일 파일로 업로드하는 것보다 우선합니다(메시지 본문이 바이트 배열로 변환됨). |
|
|
| Dropbox의 폴더 대상. 속성이 설정되지 않은 경우 구성 요소는 로컬 경로와 동일한 원격 경로에 파일을 업로드합니다. Windows 또는 절대 localPath가 없는 경우 다음과 같은 예외로 실행할 수 있습니다.
java.lang.IllegalArgumentException: 'path': bad path: "/": "C:/My/File" |
89.7.1. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
from("direct:start").to("dropbox://put?accessToken=XXX&clientIdentifier=XXX&uploadMode=add&localPath=/root/folder1")
.to("mock:result");
from("direct:start").to("dropbox://put?accessToken=XXX&clientIdentifier=XXX&uploadMode=add&localPath=/root/folder1&remotePath=/root/folder2")
.to("mock:result");
및 메시지 본문의 콘텐츠가 포함된 단일 파일을 업로드
from("direct:start")
.setHeader(DropboxConstants.HEADER_PUT_FILE_NAME, constant("myfile.txt"))
.to("dropbox://put?accessToken=XXX&clientIdentifier=XXX&uploadMode=add&remotePath=/root/folder2")
.to("mock:result");
파일 이름은 우선 순위에 따라 DropboxConstants.HEADER_PUT_PUT_FILE_NAME 또는 Exchange.FILE_NAME 헤더에 제공될 수 있습니다. 헤더가 제공되지 않으면 메시지 id(uuid)가 파일 이름으로 사용됩니다.
89.7.2. 결과 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
다음 헤더는 메시지 결과에 설정됩니다.
| 속성 | 값 |
|---|---|
|
| 단일 파일 업로드의 경우 원격 경로의 경로가 업로드됩니다. |
|
| 여러 파일을 업로드하는 경우 원격 경로가 업로드된 문자열 |
89.7.3. 결과 메시지 본문 링크 복사링크가 클립보드에 복사되었습니다!
다음 오브젝트는 메시지 본문 결과에 설정됩니다.
| 오브젝트 유형 | 설명 |
|---|---|
|
| 단일 파일 업로드의 경우 업로드 작업, OK 또는 KO의 결과 |
|
| 여러 파일 업로드의 경우 업로드 작업, OK 또는 KO의 결과로 원격 파일의 경로를 키로 사용하는 맵이 있습니다. |
89.8. 검색 작업 링크 복사링크가 클립보드에 복사되었습니다!
하위 디렉토리를 포함하여 원격 Dropbox 폴더 내에서 검색합니다.
Camel 생산자 및 Camel 소비자로 작동합니다.
다음은 이 작업에 대한 옵션 목록입니다.
| 속성 | 필수 | 설명 |
|---|---|---|
|
|
| Dropbox의 폴더는 검색할 위치입니다. |
|
|
|
검색할 하위 문자열 목록입니다. 파일은 모든 하위 문자열이 포함된 경우에만 일치합니다. 이 옵션을 설정하지 않으면 모든 파일이 일치합니다. 쿼리는 엔드포인트 구성 또는 Camel 메시지에서 |
89.8.1. 샘플 링크 복사링크가 클립보드에 복사되었습니다!
from("dropbox://search?accessToken=XXX&clientIdentifier=XXX&remotePath=/XXX&query=XXX")
.to("mock:result");
from("direct:start")
.setHeader("CamelDropboxQuery", constant("XXX"))
.to("dropbox://search?accessToken=XXX&clientIdentifier=XXX&remotePath=/XXX")
.to("mock:result");
89.8.2. 결과 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
다음 헤더는 메시지 결과에 설정됩니다.
| 속성 | 값 |
|---|---|
|
| 발견된 파일 경로 목록 |
89.8.3. 결과 메시지 본문 링크 복사링크가 클립보드에 복사되었습니다!
다음 오브젝트는 메시지 본문 결과에 설정됩니다.
| 오브젝트 유형 | 설명 |
|---|---|
|
| 발견된 파일 경로 목록입니다. 이 오브젝트에 대한 자세한 내용은 Dropbox 문서를 참조하십시오. |
90장. Ehcache 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.18로 사용 가능
ehcache 구성 요소를 사용하면 Ehcache 3을 캐시 구현으로 사용하여 캐싱 작업을 수행할 수 있습니다.
이 구성 요소는 생산자 및 이벤트 기반 소비자 엔드 포인트를 지원합니다.
캐시 소비자는 이벤트 기반 소비자이며 특정 캐시 활동을 수신하고 응답하는 데 사용할 수 있습니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-ehcache</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
90.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
ehcache://cacheName[?options]
?option=value&option=#beanRef&… 형식으로 URI에 쿼리 옵션을 추가할 수 있습니다.
90.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
Ehcache 구성 요소는 아래 나열된 7 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 구성 (고급) | 글로벌 구성 요소 구성 설정 | EhcacheConfiguration | |
| CacheManager (common) | 캐시 관리자 | CacheManager | |
| CacheManager Configuration (common) | 캐시 관리자 구성 | 설정 | |
| cacheConfiguration (일반) | 캐시를 생성하는 데 사용할 기본 캐시 구성입니다. | CacheConfiguration<?,?> | |
| cacheConfigurations (공용) | 캐시를 생성하는 데 사용할 캐시 구성 맵입니다. | map | |
| cacheConfigurationUri (일반) | Ehcache XML 구성 파일의 위치를 가리키는 URI | 문자열 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Ehcache 끝점은 URI 구문을 사용하여 구성됩니다.
ehcache:cacheName
다음 경로 및 쿼리 매개변수를 사용합니다.
90.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| cacheName | 필요한 캐시 이름 | 문자열 |
90.2.2. 쿼리 매개변수(17 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| CacheManager (common) | 캐시 관리자 | CacheManager | |
| cacheManagerConfiguration (common) | 캐시 관리자 구성 | 설정 | |
| configurationUri (common) | Ehcache XML 구성 파일의 위치를 가리키는 URI | 문자열 | |
| createCacheIfNotExist (common) | 캐시가 존재하는 경우 또는 사전 구성할 수 없는 경우 캐시를 생성해야 하는 경우 를 구성합니다. | true | boolean |
| bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
| EventFiring (consumer) | 전달 모드(동기적, 비동기) 설정 | 비동기 | EventFiring |
| EventOrdering (consumer) | 전달 모드(주문, 순서가 지정되지 않음)를 설정합니다. | ORDERED | EventOrdering |
| eventTypes (consumer) | 수신할 이벤트 유형을 설정합니다. | REMOVE,EXPIRED,REMOVED,CREATED,UPDATED | Set |
| 예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
| exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
| 작업 (producer) | 기본 캐시 작업을 구성하려면 다음을 수행합니다. 작업이 메시지 헤더에 설정된 경우 헤더의 작업이 우선합니다. | 문자열 | |
| 키 (producer) | 기본 action 키를 구성하려면 다음을 수행합니다. 메시지가 메시지 헤더에 설정된 경우 헤더의 키가 우선합니다. | 개체 | |
| 구성 (고급) | 캐시를 생성하는 데 사용할 기본 캐시 구성입니다. | CacheConfiguration<?,?> | |
| 구성 (advanced) | 캐시를 생성하는 데 사용할 캐시 구성 맵입니다. | map | |
| keytype (advanced) | 캐시 키 유형, 기본 java.lang.Object | java.lang.Object | 문자열 |
| synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
| ValueType (advanced) | 캐시 값 유형, 기본 java.lang.Object | java.lang.Object | 문자열 |
90.2.3. Message Headers Camel 링크 복사링크가 클립보드에 복사되었습니다!
| header | 유형 | 설명 |
|---|---|---|
| CamelEhcacheAction |
| 캐시에서 수행할 수 있는 옵션은 다음과 같습니다. * CLEAR * PUT * PUT_ALL * PUT_IF_ABSENT * GET * GET_ALL * REMOVE * REMOVE_ALL * REPLACE |
| CamelEhcacheActionHasResult | 부울 | 동작 결과가 있는 경우 true로 설정합니다. |
| CamelEhcacheActionSucceeded |
| actionucceded인 경우 true로 설정합니다. |
| CamelEhcacheKey | 개체 | 작업에 사용되는 캐시 키 |
| CamelEhcacheKeys | set<Object> | 사용되는 키 목록입니다. * PUT_ALL * GET_ALL * REMOVE_ALL |
| CamelEhcacheValue | 개체 | 캐시 또는 작업 결과를 저장할 값입니다. |
| CamelEhcacheOldValue | 개체 | PUT_IF_ABSENT 또는 REPLACE와 같은 작업 비교에 사용되는 작업의 키와 연결된 이전 값 |
| CamelEhcacheEventType | EventType | 수신된 이벤트 유형입니다. |
90.3. Ehcache 기반 멱등 리포지토리 예: 링크 복사링크가 클립보드에 복사되었습니다!
CacheManager manager = CacheManagerBuilder.newCacheManager(new XmlConfiguration("ehcache.xml"));
EhcacheIdempotentRepository repo = new EhcacheIdempotentRepository(manager, "idempotent-cache");
from("direct:in")
.idempotentConsumer(header("messageId"), idempotentRepo)
.to("mock:out");
90.4. Ehcache 기반 집계 저장소 예: 링크 복사링크가 클립보드에 복사되었습니다!
public class EhcacheAggregationRepositoryRoutesTest extends CamelTestSupport {
private static final String ENDPOINT_MOCK = "mock:result";
private static final String ENDPOINT_DIRECT = "direct:one";
private static final int[] VALUES = generateRandomArrayOfInt(10, 0, 30);
private static final int SUM = IntStream.of(VALUES).reduce(0, (a, b) -> a + b);
private static final String CORRELATOR = "CORRELATOR";
@EndpointInject(uri = ENDPOINT_MOCK)
private MockEndpoint mock;
@Produce(uri = ENDPOINT_DIRECT)
private ProducerTemplate producer;
@Test
public void checkAggregationFromOneRoute() throws Exception {
mock.expectedMessageCount(VALUES.length);
mock.expectedBodiesReceived(SUM);
IntStream.of(VALUES).forEach(
i -> producer.sendBodyAndHeader(i, CORRELATOR, CORRELATOR)
);
mock.assertIsSatisfied();
}
private Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
if (oldExchange == null) {
return newExchange;
} else {
Integer n = newExchange.getIn().getBody(Integer.class);
Integer o = oldExchange.getIn().getBody(Integer.class);
Integer v = (o == null ? 0 : o) + (n == null ? 0 : n);
oldExchange.getIn().setBody(v, Integer.class);
return oldExchange;
}
}
@Override
protected RoutesBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from(ENDPOINT_DIRECT)
.routeId("AggregatingRouteOne")
.aggregate(header(CORRELATOR))
.aggregationRepository(createAggregateRepository())
.aggregationStrategy(EhcacheAggregationRepositoryRoutesTest.this::aggregate)
.completionSize(VALUES.length)
.to("log:org.apache.camel.component.ehcache.processor.aggregate.level=INFO&showAll=true&mulltiline=true")
.to(ENDPOINT_MOCK);
}
};
}
protected EhcacheAggregationRepository createAggregateRepository() throws Exception {
CacheManager cacheManager = CacheManagerBuilder.newCacheManager(new XmlConfiguration("ehcache.xml"));
cacheManager.init();
EhcacheAggregationRepository repository = new EhcacheAggregationRepository();
repository.setCacheManager(cacheManager);
repository.setCacheName("aggregate");
return repository;
}
}
91장. EJB 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
Camel 버전 2.4로 사용 가능
ejb: 구성 요소는 Camel 메시지 교환에 EJB를 바인딩합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml 에 추가해야 합니다.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-ejb</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
91.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
ejb:ejbName[?options]
여기서 ejbName 은 Application Server JNDI Registry에서 EJB를 조회하는 데 사용되는 문자열일 수 있습니다.
91.2. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
EJB 구성 요소는 아래에 나열된 3 가지 옵션을 지원합니다.
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| 컨텍스트 (producer) | EJB를 조회하는 데 사용할 컨텍스트 | context | |
| 속성 (producer) | 컨텍스트가 구성되지 않은 경우 javax.naming.Context 생성을 위한 속성입니다. | 속성 | |
| resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
EJB 엔드포인트는 URI 구문을 사용하여 구성됩니다.
ejb:beanName
다음 경로 및 쿼리 매개변수를 사용합니다.
91.2.1. 경로 매개 변수 (1 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
| 이름 | 설명 | 기본값 | 유형 |
|---|---|---|---|
| beanName |
|