Fuse 7 Applications를 Red Hat build of Apache Camel for Quarkus로 마이그레이션
Fuse 7 Applications를 Red Hat build of Apache Camel for Quarkus로 마이그레이션
초록
머리말 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat build of Apache Camel 설명서
오류를 보고하거나 문서를 개선하기 위해 Red Hat Jira 계정에 로그인하여 문제를 제출하십시오. Red Hat Jira 계정이 없는 경우 계정을 생성하라는 메시지가 표시됩니다.
프로세스
- 티켓을 생성하려면다음 링크를 클릭하십시오.
- 요약에 문제에 대한 간략한 설명을 입력합니다.
- 설명에서 문제 또는 개선 사항에 대한 자세한 설명을 제공합니다. 문서에서 문제가 발생한 위치에 URL을 포함합니다.
- Submit 을 클릭하고 문제를 적절한 문서 팀으로 라우팅합니다.
1장. Fuse 7 애플리케이션을 Red Hat build of Apache Camel for Quarkus로 마이그레이션하는 개요 링크 복사링크가 클립보드에 복사되었습니다!
1.1. Fuse, Red Hat build of Apache Camel for Quarkus 및 Camel on EAP 링크 복사링크가 클립보드에 복사되었습니다!
1.1.1. Fuse 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Fuse는 Apache Camel 및 Apache Karaf와 같은 오픈 소스 커뮤니티를 기반으로 하는 민첩한 통합 솔루션입니다. Red Hat Fuse는 온프레미스 클라우드 통합을 빠르게 수행할 수 있는 경량의 유연한 통합 플랫폼입니다.
세 가지 다른 런타임을 사용하여 Red Hat Fuse를 실행할 수 있습니다.
- OSGi 애플리케이션을 지원하는 Karaf
- Spring Boot
- JBoss EAP(Enterprise Application Platform)
1.1.2. Red Hat build of Apache Camel for Quarkus 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat build of Apache Camel for Quarkus는 Apache Camel의 통합 기능과 광범위한 구성 요소 라이브러리를 Quarkus 런타임에 제공합니다. Red Hat build of Camel Quarkus는 여러 Camel 구성 요소에 대한 Quarkus 확장을 제공합니다.
Camel Quarkus는 Camel 3에서 얻은 많은 성능 개선을 활용하여 메모리 공간을 낮추고 반영에 대한 의존도를 줄이고 시작 시간을 단축시킵니다.
Red Hat build of Apache Camel for Quarkus 애플리케이션에서는 Java DSL을 사용하여 Camel 경로를 정의하므로 Fuse 애플리케이션에서 사용하는 Camel 경로를 CEQ로 마이그레이션할 수 있습니다.
1.1.3. Camel on EAP 링크 복사링크가 클립보드에 복사되었습니다!
OSGI 종속성 관리 개념을 따르는 Karaf와 JEE 사양을 따르는 EAP는 컨테이너화된 애플리케이션의 채택의 영향을 받는 애플리케이션 서버입니다.
컨테이너는 애플리케이션 패키징을 위한 주요 방법으로 등장했습니다. 결과적으로 배포, 확장, 클러스터링 및 로드 밸런싱을 포함하는 애플리케이션 관리 책임은 Kubernetes를 사용하여 애플리케이션 서버에서 컨테이너 오케스트레이션으로 전환되었습니다.
Red Hat Openshift에서 EAP가 계속 지원되지만 Camel 3은 더 이상 EAP 서버에서 지원되지 않습니다. 따라서 EAP 서버에서 Fuse 7 애플리케이션을 실행하는 경우, 애플리케이션을 Red Hat Build of Apache Camel for Spring Boot로 마이그레이션하거나 Red Hat build of Apache Camel for Quarkus로 마이그레이션하고 마이그레이션 프로세스의 이점을 활용하여 애플리케이션의 매노리스에서 마이크로 서비스 아키텍처로 마이그레이션해야 합니다.
Openshift를 사용하지 않는 경우 Spring Boot 및 Quarkus용 애플리케이션을 배포할 때 RHEL 가상 머신은 유효한 접근 방식을 유지하고 Quarkus도 네이티브 컴파일 기능의 이점을 누릴 수 있습니다. 이러한 플랫폼에서 마이크로서비스 아키텍처 관리를 지원하기 위해 툴링을 평가하는 것이 중요합니다.
Red Hat은 미들웨어 컬렉션에 Red Hat Ansible을 사용하여 Ansible을 통해 이 기능을 제공합니다.
1.2. 표준 마이그레이션 경로 링크 복사링크가 클립보드에 복사되었습니다!
1.2.1. XML 경로 링크 복사링크가 클립보드에 복사되었습니다!
Spring XML 또는 블루프린트 XML로 작성된 Fuse 애플리케이션은 XML 기반 플레이버로 마이그레이션되어야 하며 마이그레이션 단계의 차이 없이 Spring Boot 또는 Quarkus 런타임을 대상으로 지정할 수 있습니다.
1.2.2. Java 경로 링크 복사링크가 클립보드에 복사되었습니다!
Java DSL로 작성된 Fuse 애플리케이션은 Java 기반 플레이버로 마이그레이션되어야 하며 마이그레이션 단계 없이 Spring Boot 또는 Quarkus 런타임을 대상으로 지정할 수 있습니다.
1.3. 아키텍처 변경 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift는 Fabric8을 Fuse 6 사용자의 런타임 플랫폼으로 교체했으며 Fuse 애플리케이션 마이그레이션에 권장되는 대상입니다.
애플리케이션을 마이그레이션할 때 다음과 같은 아키텍처 변경 사항을 고려해야 합니다.
- Fuse 6 애플리케이션이 Fabric8 서비스 검색에 의존하는 경우 OpenShift에서 Camel 3을 실행할 때 Kubernetes Service Discovery를 사용해야 합니다.
- Fuse 6 애플리케이션이 OSGi 번들 구성을 사용하는 경우 OpenShift에서 Camel 3을 실행할 때 Kubernetes ConfigMaps 및 Secrets를 사용해야 합니다.
- 애플리케이션에서 파일 기반 경로 정의를 사용하는 경우 OpenShift에서 Camel 3을 실행할 때 AWS S3 기술을 사용하는 것이 좋습니다.
- 애플리케이션에서 표준 파일 시스템을 사용하는 경우 결과 Spring Boot 또는 Quarkus 애플리케이션을 Openshift 플랫폼이 아닌 표준 RHEL 가상 머신에 배포해야 합니다.
- SSL 요구 사항을 처리하는 Openshift 라우터에 인바운드 HTTPS 연결 위임.
- Service Mesh 에 Hystrix 기능 위임 .
1.4. javax 에서 jakarta 패키지 네임스페이스로 변경 링크 복사링크가 클립보드에 복사되었습니다!
모든 EE API에 사용되는 패키지가 jakarta로 변경되었기 때문에 Java EE Foundation과 자카르타 EE 구축으로 이동합니다.
문서의 코드 조각이 jakarta.* 네임스페이스를 사용하도록 업데이트되었지만 물론 자체 애플리케이션을 관리하고 검토해야 합니다.
이 변경 사항은 Java SE의 일부인 javax 패키지에는 영향을 미치지 않습니다.
애플리케이션을 EE 10으로 마이그레이션하는 경우 다음을 수행해야 합니다.
-
import 문 또는 기타 소스 코드에서
javax패키지에서 EE API 클래스를 사용하는 모든 소스 코드를jakarta로 업데이트합니다. -
EE 지정 시스템 속성 또는 이름이
javax로 시작하는 기타 구성 속성을jakarta로 시작하여 변경합니다. -
META-INF/services/jakarta.[rest_of_name]이름 형식을 사용하여 구현 EE 인터페이스를 사용하는 애플리케이션에서 구현 클래스를 식별하거나java.util.ServiceLoader메커니즘으로 부트 스트랩된 추상 클래스를 식별합니다.
1.4.1. 마이그레이션 툴 링크 복사링크가 클립보드에 복사되었습니다!
- 소스 코드 마이그레이션: Red Hat Migration Toolkit for Auto-Migration of an Application to the Jakarta EE 10 Namespace 사용 방법
- 바이트 코드 변환: 소스 코드 마이그레이션이 옵션이 아닌 경우 오픈 소스 Eclipse Transformer
추가 리소스
- 배경: 자카르타 EE 권한에 대한 Java trademarks 업데이트
- Red Hat 고객 포털: Red Hat JBoss EAP Application Migration from Jakarta EE 8 to EE 10
- Jakarta EE: Javax에서 자카르타 네임스페이스 에코시스템 진행
2장. Camel 경로를 Fuse 7에서 Camel로 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
Java DSL, XML IO DSL 또는 YAML을 사용하여 Red Hat build of Apache Camel for Quarkus 애플리케이션에서 Camel 경로를 정의할 수 있습니다.
2.1. Java DSL 경로 마이그레이션 예 링크 복사링크가 클립보드에 복사되었습니다!
Java DSL 경로 정의를 Fuse 애플리케이션에서 CEQ로 마이그레이션하려면 기존 경로 정의를 Red Hat build of Apache Camel for Quarkus 애플리케이션에 직접 복사하고 필요한 종속성을 Quarkus pom.xml 파일의 Red Hat 빌드에 추가할 수 있습니다.
이 예제에서는 CEQ 애플리케이션의 Routes.java 파일에 Java DSL 경로를 복사하여 Fuse 7 애플리케이션에서 새 CEQ 애플리케이션으로 컨텐츠 기반 경로 정의를 마이그레이션합니다.
프로세스
code.quarkus.redhat.com웹 사이트를 사용하여 다음 예제에 필요한 확장을 선택합니다.- Camel-quarkus-file
- Camel-quarkus-xpath
이전 단계에서 생성된 프로젝트 파일을 추출한 디렉터리로 이동합니다.
cd <directory_name>
$ cd <directory_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
src/main/java/org/acme/subfolder에Routes.java라는 파일을 생성합니다. 다음 예와 유사하게 Fuse 애플리케이션의 경로 정의를
Routes.java에 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow CEQ 애플리케이션을 컴파일합니다.
mvn clean compile quarkus:dev
mvn clean compile quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow
이 명령은 프로젝트를 컴파일하고, 애플리케이션을 시작하고, Quarkus 툴을 통해 작업 공간의 변경 사항을 조사할 수 있습니다. 프로젝트의 모든 수정 사항은 실행 중인 애플리케이션에 자동으로 적용됩니다.
2.2. XML DSL 경로 마이그레이션 블루프린트 링크 복사링크가 클립보드에 복사되었습니다!
블루프린트 XML 경로 정의를 Fuse 애플리케이션에서 CEQ로 마이그레이션하려면 camel-quarkus-xml-io-dsl 확장을 사용하여 Fuse 애플리케이션 경로 정의를 CEQ 애플리케이션에 직접 복사합니다. 그런 다음 필요한 종속 항목을 CEQ pom.xml 파일에 추가하고 application.properties 파일에서 CEQ 구성을 업데이트해야 합니다.
CEQ는 Camel 3을 지원하지만 Fuse 7은 Camel 2를 지원합니다.
Red Hat Fuse 7 애플리케이션을 CEQ로 마이그레이션할 때 Camel 업그레이드에 대한 자세한 내용은 Apache Camel 마이그레이션 을 참조하십시오.
Camel Quarkus에서 빈을 사용하는 방법에 대한 자세한 내용은 Red Hat build of Apache Camel for Quarkus 가이드의 CDI 및 Camel Cryostat 구성 요소 섹션을 참조하십시오.
2.2.1. XML-IO-DSL 제한 사항 링크 복사링크가 클립보드에 복사되었습니다!
camel-quarkus-xml-io-dsl 확장을 사용하여 블루프린트 XML 경로 정의를 CEQ로 마이그레이션할 수 있습니다.
camel-quarkus-xml-io-dsl 확장은 다음 < camelContext > 하위 요소만 지원합니다.
- routeTemplates
- templatedRoutes
- rests
- routes
- routeConfigurations
블루프린트 XML은 camel-quarkus-xml-io-dsl 확장에서 지원하지 않는 다른 Quarkus 정의를 지원하므로 블루프린트 XML 경로 정의에 포함된 다른 Cryostat 정의를 다시 작성해야 할 수 있습니다.
각 요소( XML IO DSL)를 별도의 파일에 정의해야 합니다. 예를 들어 블루프린트 XML 경로 정의의 단순화된 예는 다음과 같습니다.
다음 파일에 정의된 XML IO DSL을 사용하여 이 블루프린트 XML 경로 정의를 CEQ로 마이그레이션할 수 있습니다.
src/main/resources/routes/camel-rests.xml
src/main/resources/routes/camel-routes.xml
<routes xmlns="http://camel.apache.org/schema/spring">
<route>
<from ..../>
</route>
</routes>
<routes xmlns="http://camel.apache.org/schema/spring">
<route>
<from ..../>
</route>
</routes>
Java DSL을 사용하여 < restConfiguration>과 같이 지원되지 않는 다른 요소를 정의해야 합니다. 예를 들어 다음과 같이 camel-rests.xml 파일에 정의된 경로 빌더를 사용합니다.
src/main/resources/routes/camel-rests.xml
2.2.2. 블루프린트 XML DSL 경로 마이그레이션 예 링크 복사링크가 클립보드에 복사되었습니다!
XML IO DSL 확장 사용에 대한 자세한 내용은 Red Hat build of Apache Camel for Quarkus Extensions에서 XML IO DSL 문서를 참조하십시오.
이 예에서는 블루프린트 XML 경로 정의를 CEQ 애플리케이션의 camel-routes.xml 파일에 복사하여 Fuse 애플리케이션에서 새 CEQ 애플리케이션으로 컨텐츠 기반 경로 정의를 마이그레이션하고 있습니다.
프로세스
code.quarkus.redhat.com웹 사이트를 사용하여 이 예제에 대해 다음 확장을 선택합니다.- camel-quarkus-xml-io-dsl
- Camel-quarkus-file
- Camel-quarkus-xpath
- 애플리케이션 생성 을 선택하여 선택 사항을 확인하고 생성된 프로젝트가 포함된 아카이브의 다운로드 링크와 오버레이 화면을 표시합니다.
- ZIP 다운로드를 선택하여 생성된 프로젝트 파일이 포함된 아카이브를 머신에 저장합니다.
- 아카이브 내용을 추출합니다.
이전 단계에서 생성된 프로젝트 파일을 추출한 디렉터리로 이동합니다.
cd <directory_name>
$ cd <directory_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
src/main/resources/routes/디렉터리에camel-routes.xml이라는 파일을 만듭니다. 다음
블루프린트-example.xml예제의 <route> 요소 및 하위 요소를camel-routes.xml파일로 복사합니다.blueprint-example.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow camel-routes.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow application.properties수정# Camel # camel.context.name = camel-quarkus-xml-io-dsl-example camel.main.routes-include-pattern = file:src/main/resources/routes/camel-routes.xml
# Camel # camel.context.name = camel-quarkus-xml-io-dsl-example camel.main.routes-include-pattern = file:src/main/resources/routes/camel-routes.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow CEQ 애플리케이션을 컴파일합니다.
mvn clean compile quarkus:dev
mvn clean compile quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이 명령은 프로젝트를 컴파일하고, 애플리케이션을 시작하고, Quarkus 툴을 통해 작업 공간의 변경 사항을 조사할 수 있습니다. 프로젝트의 모든 수정 사항은 실행 중인 애플리케이션에 자동으로 적용됩니다.