Fuse 7 Applications를 Red Hat build of Apache Camel for Quarkus로 마이그레이션


Red Hat build of Apache Camel 4.10

Fuse 7 Applications를 Red Hat build of Apache Camel for Quarkus로 마이그레이션

초록

Fuse 7 애플리케이션을 Red Hat build of Apache Camel for Quarkus로 마이그레이션하면 Red Hat Fuse 7에서 Red Hat build of Apache Camel for Quarkus로의 마이그레이션에 대한 정보를 제공합니다.

머리말

Red Hat build of Apache Camel 설명서

오류를 보고하거나 문서를 개선하기 위해 Red Hat Jira 계정에 로그인하여 문제를 제출하십시오. Red Hat Jira 계정이 없는 경우 계정을 생성하라는 메시지가 표시됩니다.

프로세스

  1. 티켓을 생성하려면다음 링크를 클릭하십시오.
  2. 요약에 문제에 대한 간략한 설명을 입력합니다.
  3. 설명에서 문제 또는 개선 사항에 대한 자세한 설명을 제공합니다. 문서에서 문제가 발생한 위치에 URL을 포함합니다.
  4. Submit 을 클릭하고 문제를 적절한 문서 팀으로 라우팅합니다.

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. 마이그레이션 툴

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 애플리케이션으로 컨텐츠 기반 경로 정의를 마이그레이션합니다.

프로세스

  1. code.quarkus.redhat.com 웹 사이트를 사용하여 다음 예제에 필요한 확장을 선택합니다.

    • Camel-quarkus-file
    • Camel-quarkus-xpath
  2. 이전 단계에서 생성된 프로젝트 파일을 추출한 디렉터리로 이동합니다.

    $ cd <directory_name>
    Copy to Clipboard Toggle word wrap
  3. src/main/java/org/acme/ subfolder에 Routes.java 라는 파일을 생성합니다.
  4. 다음 예와 유사하게 Fuse 애플리케이션의 경로 정의를 Routes.java 에 추가합니다.

    package org.acme;
    
    import org.apache.camel.builder.RouteBuilder;
    
    public class Routes extends RouteBuilder {
    	// Add your Java DSL route definition here
        public void configure() {
    	    from("file:work/cbr/input")
                .log("Receiving order ${file:name}")
                .choice()
                    .when().xpath("//order/customer/country[text() = 'UK']")
                        .log("Sending order ${file:name} to the UK")
                        .to("file:work/cbr/output/uk")
                    .when().xpath("//order/customer/country[text() = 'US']")
                        .log("Sending order ${file:name} to the US")
                        .to("file:work/cbr/output/uk")
                    .otherwise()
                        .log("Sending order ${file:name} to another country")
                        .to("file:work/cbr/output/others");
        }
    
    }
    Copy to Clipboard Toggle word wrap
  5. CEQ 애플리케이션을 컴파일합니다.

    mvn clean compile quarkus:dev
    Copy to Clipboard Toggle word wrap
참고

이 명령은 프로젝트를 컴파일하고, 애플리케이션을 시작하고, 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 경로 정의의 단순화된 예는 다음과 같습니다.

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
    <camelContext xmlns="http://camel.apache.org/schema/blueprint">
        <restConfiguration contextPath="/camel" />
        <rest path="/books">
            <get uri="/">
                <to ..../>
            </get>
        </rest>
        <route>
            <from ..../>
        </route>
    </camelContext>
</blueprint>
Copy to Clipboard Toggle word wrap

다음 파일에 정의된 XML IO DSL을 사용하여 이 블루프린트 XML 경로 정의를 CEQ로 마이그레이션할 수 있습니다.

src/main/resources/routes/camel-rests.xml

<rests xmlns="http://camel.apache.org/schema/spring">
    <rest path="/books">
    <get path="/">
        <to ..../>
    </get>
    </rest>
</rests>
Copy to Clipboard Toggle word wrap

src/main/resources/routes/camel-routes.xml

<routes xmlns="http://camel.apache.org/schema/spring">
    <route>
        <from ..../>
    </route>
</routes>
Copy to Clipboard Toggle word wrap

Java DSL을 사용하여 < restConfiguration>과 같이 지원되지 않는 다른 요소를 정의해야 합니다. 예를 들어 다음과 같이 camel-rests.xml 파일에 정의된 경로 빌더를 사용합니다.

src/main/resources/routes/camel-rests.xml

import org.apache.camel.builder.RouteBuilder;
public class Routes extends RouteBuilder {
    public void configure() {
       restConfiguration()
            .contextPath("/camel");
    }
}
Copy to Clipboard Toggle word wrap

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 애플리케이션으로 컨텐츠 기반 경로 정의를 마이그레이션하고 있습니다.

프로세스

  1. code.quarkus.redhat.com 웹 사이트를 사용하여 이 예제에 대해 다음 확장을 선택합니다.

    • camel-quarkus-xml-io-dsl
    • Camel-quarkus-file
    • Camel-quarkus-xpath
  2. 애플리케이션 생성 을 선택하여 선택 사항을 확인하고 생성된 프로젝트가 포함된 아카이브의 다운로드 링크와 오버레이 화면을 표시합니다.
  3. ZIP 다운로드를 선택하여 생성된 프로젝트 파일이 포함된 아카이브를 머신에 저장합니다.
  4. 아카이브 내용을 추출합니다.
  5. 이전 단계에서 생성된 프로젝트 파일을 추출한 디렉터리로 이동합니다.

    $ cd <directory_name>
    Copy to Clipboard Toggle word wrap
  6. src/main/resources/routes/ 디렉터리에 camel-routes.xml 이라는 파일을 만듭니다.
  7. 다음 블루프린트-example.xml 예제의 < route > 요소 및 하위 요소를 camel-routes.xml 파일로 복사합니다.

    blueprint-example.xml

    <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
        <camelContext id="cbr-example-context" xmlns="http://camel.apache.org/schema/blueprint">
            <route id="cbr-route">
                <from id="_from1" uri="file:work/cbr/input"/>
                <log id="_log1" message="Receiving order ${file:name}"/>
                <choice id="_choice1">
                    <when id="_when1">
                        <xpath id="_xpath1">/order/customer/country = 'UK'</xpath>
                        <log id="_log2" message="Sending order ${file:name} to the UK"/>
                        <to id="_to1" uri="file:work/cbr/output/uk"/>
                    </when>
                    <when id="_when2">
                        <xpath id="_xpath2">/order/customer/country = 'US'</xpath>
                        <log id="_log3" message="Sending order ${file:name} to the US"/>
                        <to id="_to2" uri="file:work/cbr/output/us"/>
                    </when>
                    <otherwise id="_otherwise1">
                        <log id="_log4" message="Sending order ${file:name} to another country"/>
                        <to id="_to3" uri="file:work/cbr/output/others"/>
                    </otherwise>
                </choice>
                <log id="_log5" message="Done processing ${file:name}"/>
            </route>
        </camelContext>
    </blueprint>
    Copy to Clipboard Toggle word wrap

    camel-routes.xml

    <route id="cbr-route">
        <from id="_from1" uri="file:work/cbr/input"/>
        <log id="_log1" message="Receiving order ${file:name}"/>
        <choice id="_choice1">
            <when id="_when1">
                <xpath id="_xpath1">/order/customer/country = 'UK'</xpath>
                <log id="_log2" message="Sending order ${file:name} to the UK"/>
                <to id="_to1" uri="file:work/cbr/output/uk"/>
            </when>
            <when id="_when2">
                <xpath id="_xpath2">/order/customer/country = 'US'</xpath>
                <log id="_log3" message="Sending order ${file:name} to the US"/>
                <to id="_to2" uri="file:work/cbr/output/us"/>
            </when>
            <otherwise id="_otherwise1">
                <log id="_log4" message="Sending order ${file:name} to another country"/>
                <to id="_to3" uri="file:work/cbr/output/others"/>
            </otherwise>
        </choice>
        <log id="_log5" message="Done processing ${file:name}"/>
    </route>
    Copy to Clipboard Toggle word wrap

  8. 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
    Copy to Clipboard Toggle word wrap
  9. CEQ 애플리케이션을 컴파일합니다.

    mvn clean compile quarkus:dev
    Copy to Clipboard Toggle word wrap
    참고

    이 명령은 프로젝트를 컴파일하고, 애플리케이션을 시작하고, Quarkus 툴을 통해 작업 공간의 변경 사항을 조사할 수 있습니다. 프로젝트의 모든 수정 사항은 실행 중인 애플리케이션에 자동으로 적용됩니다.

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동