다음을 통해 공유


Spring Cloud Azure 4.0 마이그레이션 가이드

이 가이드는 레거시 Azure Spring 라이브러리에서 Spring Cloud Azure 4.0으로 마이그레이션하는 데 도움이 됩니다.

소개

그룹 ID 및 아티팩트 ID가 com.azure.spring:spring-cloud-azure-* 라이브러리와 패턴 , com.azure.spring:azure-spring-boot-*또는 com.azure.spring:azure-spring-cloud-* 라이브러리를 com.azure.spring:azure-spring-integration-* 패턴을 따르는 라이브러리를 호출합니다.

이 가이드에서는 최신 라이브러리와 레거시 라이브러리 간의 유사한 구성에 대해 나란히 비교하는 데 중점을 줍니다.

com.azure.spring:azure-spring-boot-*, com.azure.spring:azure-spring-cloud-* 또는 com.azure.spring:azure-spring-integration-* 패키지에 대해 잘 알고 있다고 가정합니다.

Spring Cloud Azure 4.0 라이브러리를 접하는 경우 이 가이드가 아닌 Spring Cloud Azure 개발자 가이드 참조하세요.

마이그레이션 혜택

새 버전 또는 라이브러리를 채택할지 여부를 고려할 때 묻는 자연스러운 질문은 그 이점입니다. Azure가 완성되고 더 다양한 개발자 그룹에 의해 수용됨에 따라 Microsoft는 개발자 생산성을 가장 잘 지원하고 Spring Cloud Azure 라이브러리의 격차를 이해하기 위한 패턴과 사례를 학습하는 데 중점을 두어 왔습니다.

Spring Cloud Azure 라이브러리 전반에 걸쳐 일관된 피드백이 표현된 몇 가지 영역이 있었습니다. 가장 중요한 것은 다른 Azure 서비스에 대한 라이브러리가 전체 구성 집합을 사용하도록 설정하지 않았다는 것입니다. 또한 프로젝트 명명, 아티팩트 ID, 버전 및 구성의 불일치로 인해 학습 곡선이 가파르게 증가했습니다.

Spring Cloud Azure 라이브러리에서 개발 환경을 개선하기 위해 Spring Cloud Azure 라이브러리가 Spring 에코시스템과 관련하여 자연스럽고 공생적인 느낌을 갖도록 하기 위한 일련의 디자인 지침이 도입되었습니다. 자세한 내용은 디자인 문서 참조하세요.

Spring Cloud Azure 4.0은 다양한 Spring 프로젝트(예: Spring Boot, Spring Integration, Spring Cloud Stream 등)와 통합되는 라이브러리 간에 공유 환경을 제공합니다. 공유 환경에는 다음이 포함됩니다.

  • 모든 Spring Cloud Azure 4.0 라이브러리를 포함하는 통합 BOM입니다.
  • 아티팩트에서 일관된 명명 규칙입니다.
  • 자격 증명, 프록시, 다시 시도, 클라우드 환경 및 전송 계층 설정을 구성하는 통합된 방법입니다.
  • Azure 서비스 또는 Azure 서비스 SDK에서 지원하는 모든 인증 방법을 지원합니다.

개요

이 마이그레이션 가이드는 다음 섹션으로 구성됩니다.

  • Spring Cloud Azure 4.0의 이름 변경 내용
  • 아티팩트 변경 내용: 이름 바꾸기/추가/삭제됨
  • 종속성 변경
  • 인증 변경 내용
  • 구성 속성
  • API 호환성이 손상되는 변경
  • 라이브러리 변경 내용

이름 변경 내용

모든 Spring Cloud Azure 라이브러리를 호출하는 일관되거나 공식적인 이름은 없었습니다. 그들 중 일부는 Azure Spring Boot 불렀고 그들 중 일부는 Spring on Azure. 4.0부터 프로젝트 이름 Spring Cloud Azure 사용하여 모든 Azure Spring 라이브러리를 나타내기 시작했습니다.

BOM

우리는 라이브러리에 대한 두 개의 BOM, azure-spring-boot-bomazure-spring-cloud-dependencies배송하는 데 사용했지만, 이 두 BOM을 4.0 이후 하나의 BOM으로 결합하여 spring-cloud-azure-dependencies. 종속성 관리를 활용하려면 프로젝트의 dependencyManagement 섹션에 항목을 추가합니다.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-dependencies</artifactId>
      <version>5.21.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

메모

Spring Boot 2.x를 사용하는 경우 spring-cloud-azure-dependencies 버전을 4.19.0설정해야 합니다. 이 BOM에 사용되는 버전에 대한 자세한 내용은 사용해야 하는 Spring Cloud Azure 버전을 참조하세요.

아티팩트 변경 내용: 이름 바꾸기/추가/삭제됨

그룹 ID는 최신 및 레거시 Spring Cloud Azure 라이브러리와 동일합니다. 그들은 모두 com.azure.spring. 최신 Spring Cloud Azure 라이브러리의 아티팩트 ID가 변경되었습니다. Spring Boot, Spring Integration 또는 Spring Cloud Stream에 속하는 Spring 프로젝트에 따라 아티팩트 ID 패턴은 spring-cloud-azure-starter-[service], spring-integration-azure-[service]또는 spring-cloud-azure-stream-binder-[service]수 있습니다. 각각에 대한 레거시 시작에는 패턴 azure-spring-*따르는 아티팩트 ID가 있습니다. 이를 통해 최신 스타터 또는 레거시 스타터를 사용하는지 여부를 한눈에 이해할 수 있는 빠르고 접근성 있는 수단을 제공합니다.

Spring Cloud Azure 4.0을 개발하는 과정에서 일부 아티팩트 이름을 변경하여 새 명명 규칙을 따르도록 하고, 기능을 보다 적절한 아티팩트로 삽입할 수 있도록 일부 아티팩트를 삭제하고, 일부 시나리오를 보다 효율적으로 처리하기 위해 몇 가지 새 아티팩트를 추가했습니다.

다음 표에서는 레거시 아티팩트 ID와 최신 아티팩트 ID 간의 매핑을 보여 줍니다.

레거시 아티팩트 ID 최신 아티팩트 ID 묘사
azure-spring-boot-starter spring-cloud-azure-starter 이 아티팩트는 모든 기능을 새 spring-cloud-azure-starter 아티팩트로 병합하여 삭제되었습니다.
azure-spring-boot-starter-active-directory spring-cloud-azure-starter-active-directory 아티팩트 이름을 변경했습니다.
azure-spring-boot-starter-active-directory-b2c spring-cloud-azure-starter-active-directory-b2c 아티팩트 이름을 변경했습니다.
azure-spring-boot-starter-cosmos spring-cloud-azure-starter-data-cosmos Spring Data Azure Cosmos DB를 사용하여 나타내는 data추가하도록 아티팩트 이름을 변경했습니다.
azure-spring-boot-starter-keyvault-certificates 해당 없음 이 릴리스에는 포함되지 않지만 이후 버전에서 지원됩니다.
azure-spring-boot-starter-keyvault-secrets spring-cloud-azure-starter-keyvault-secrets 아티팩트 이름을 변경했습니다.
azure-spring-boot-starter-servicebus-jms spring-cloud-azure-starter-servicebus-jms 아티팩트 이름을 변경했습니다.
azure-spring-boot-starter-storage spring-cloud-azure-starter-storage-blob
spring-cloud-azure-starter-storage-file-share
레거시 아티팩트에는 스토리지 Blob 및 파일 공유의 기능이 모두 포함되어 있으며, 4.0, spring-cloud-azure-starter-storage-blob 및 spring-cloud-azure-starter-storage-file-share의 두 개의 개별 아티팩트로 접합되었습니다.
azure-spring-boot 해당 없음 이 아티팩트는 모든 기능을 새 spring-cloud-azure-autoconfigure 아티팩트로 병합하여 삭제되었습니다.
azure-spring-cloud-autoconfigure 해당 없음 이 아티팩트는 모든 기능을 새 spring-cloud-azure-autoconfigure 아티팩트로 병합하여 삭제되었습니다.
azure-spring-cloud-context 해당 없음 이 아티팩트는 모든 기능이 새 spring-cloud-azure-autoconfigure 병합되고 아티팩트가 spring-cloud-azure-resourcemanager 삭제되었습니다.
azure-spring-cloud-messaging spring-messaging-azure 메시징 수신기 주석이 삭제되었습니다.
azure-spring-cloud-starter-cache 해당 없음 이 아티팩트는 redis를 사용하기 위해 spring-boot-starter-data-redis, spring-boot-starter-cache, spring-cloud-azure-resourcemanager 및 spring-cloud-azure-starter를 추가하기 위해 삭제되었습니다. 사용량에 대한 자세한 내용은 Spring Cloud Azure Redis 지원참조하세요.
azure-spring-cloud-starter-eventhubs-kafka 해당 없음 이 아티팩트가 삭제되었습니다. kafka를 사용하기 위해 spring kafka, spring-cloud-azure-resourcemanager 및 spring-cloud-azure-starter를 추가하기만 하면 될 것입니다. 사용량에 대한 자세한 내용은 Spring Cloud Azure Kafka 지원참조하세요.
azure-spring-cloud-starter-eventhubs spring-cloud-azure-starter-integration-eventhubs Event Hubs와 Spring Integration을 사용함을 나타내는 integration추가하도록 아티팩트 이름을 변경했습니다.
azure-spring-cloud-starter-servicebus spring-cloud-azure-starter-integration-servicebus Service Bus와 Spring Integration을 사용함을 나타내는 integration추가하도록 아티팩트 이름을 변경했습니다.
azure-spring-cloud-starter-storage-queue spring-cloud-azure-starter-integration-storage-queue 스토리지 큐와 Spring Integration을 사용함을 나타내는 integration추가하도록 아티팩트 이름을 변경했습니다.
azure-spring-cloud-storage 해당 없음 이 아티팩트는 모든 기능이 새 spring-cloud-azure-autoconfigure 아티팩트로 병합되어 삭제되었습니다.
azure-spring-cloud-stream-binder-eventhubs spring-cloud-azure-stream-binder-eventhubs 이 아티팩트는 주로 spring-cloud-azure-stream-binder-eventhubsspring-cloud-azure-stream-binder-eventhubs-core새 디자인을 사용하여 리팩터링되었습니다.
azure-spring-cloud-stream-binder-service-core spring-cloud-azure-stream-binder-servicebus-core 아티팩트 이름을 변경했습니다.
azure-spring-cloud-stream-binder-servicebus-queue spring-cloud-azure-stream-binder-servicebus 이 아티팩트는 모든 기능을 spring-cloud-azure-stream-binder-servicebus 아티팩트로 병합하여 삭제되었습니다.
azure-spring-cloud-stream-binder-servicebus-topic spring-cloud-azure-stream-binder-servicebus 이 아티팩트는 모든 기능을 spring-cloud-azure-stream-binder-servicebus 아티팩트로 병합하여 삭제되었습니다.
azure-spring-integration-core spring-integration-azure-core 아티팩트 이름을 변경했습니다.
azure-spring-integration-eventhubs spring-integration-azure-eventhubs 아티팩트 이름을 바꿉니다.
azure-spring-integration-servicebus spring-integration-azure-servicebus 아티팩트 이름을 바꿉니다.
azure-spring-integration-storage-queue spring-integration-azure-storage-queue 아티팩트 이름을 바꿉니다.
해당 없음 spring-cloud-azure-actuator 새로 추가된 Spring Cloud Azure Actuator 아티팩트입니다.
해당 없음 spring-cloud-azure-actuator-autoconfigure 액추에이터에 대한 자동 구성을 포함하여 새로 추가된 Spring Cloud Azure Actuator AutoConfigure 아티팩트입니다.
해당 없음 spring-cloud-azure-autoconfigure SDK 클라이언트에 대한 모든 자동 구성, Spring Security 지원, Spring Data 지원 및 Spring Integration 지원을 포함하여 새로 추가된 Spring Cloud Azure AutoConfigure 아티팩트입니다.
해당 없음 spring-cloud-azure-core 모든 핵심 기능을 포함하여 새로 추가된 Spring Cloud Azure Core 아티팩트입니다.
해당 없음 spring-cloud-azure-resourcemanager 새로 추가된 Resource Manager 아티팩트입니다. Azure Resource Manager를 사용하여 메타데이터를 읽고 리소스를 만드는 핵심 라이브러리입니다.
해당 없음 spring-cloud-azure-service Azure 서비스에 대한 추상화가 포함된 Spring Cloud Azure 서비스 아티팩트가 새로 추가되었습니다.
해당 없음 spring-cloud-azure-starter-appconfiguration Azure App Configuration SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다.
해당 없음 spring-cloud-azure-starter-cosmos Azure Cosmos DB SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다.
해당 없음 spring-cloud-azure-starter-eventhubs Azure Event Hubs SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다.
해당 없음 spring-cloud-azure-starter-servicebus Azure Service Bus SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다.
해당 없음 spring-cloud-azure-starter-storage-blob Azure Storage Blob SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다.
해당 없음 spring-cloud-azure-starter-storage-file-share Azure Storage 파일 공유 SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다.
해당 없음 spring-cloud-azure-starter-storage-queue Azure Storage Queue SDK 클라이언트를 사용하기 위해 새로 추가된 시작입니다.
해당 없음 spring-cloud-azure-starter-stream-eventhubs Azure Event Hubs Spring Cloud Stream Binder를 사용하기 위해 새로 추가된 시작입니다.
해당 없음 spring-cloud-azure-starter-stream-servicebus Azure Service Bus Spring Cloud Stream Binder를 사용하기 위해 새로 추가된 시작
해당 없음 spring-cloud-azure-stream-binder-eventhubs-core Azure Event Hubs에 대해 새로 추가된 Spring Cloud Stream 핵심 아티팩트입니다.

종속성 변경

일부 불필요한 종속성은 최신 Spring Cloud Azure 4.0 라이브러리에서 제거한 레거시 아티팩트에서 포함되었습니다. 충돌을 방지하기 위해 제거된 종속성을 프로젝트에 수동으로 추가해야 합니다.

종속성이 변경된 라이브러리는 다음과 같습니다.

  • spring-cloud-azure-starter
  • spring-cloud-azure-starter-active-directory
  • spring-cloud-azure-starter-active-directory-b2c

인증 변경 내용

Spring Cloud Azure 4.0은 각 Azure 서비스 SDK에서 지원하는 모든 인증 방법을 지원합니다. 전역 토큰 자격 증명을 구성할 뿐만 아니라 각 서비스 수준에서 토큰 자격 증명을 제공할 수 있습니다. 그러나 Azure Services의 로컬 개발 환경 또는 관리 ID에 저장된 자격 증명을 적용할 수 있으므로 Spring Cloud Azure 4.0을 구성하려면 자격 증명이 필요하지 않습니다. 보안 주체에게 대상 Azure 리소스에 액세스할 수 있는 충분한 권한이 부여되었는지 확인합니다.

메모

Azure 메시징 서비스와 상호 작용하기 위해 보안 주체에 역할을 할당하는 경우 메시징 작업을 수행하려면 Data 관련 역할이 필요합니다. Azure Spring Apps Stream Event Hubs/Service Bus 바인더 라이브러리의 경우 리소스를 자동으로 만드는 기능이 필요할 때 Contributor 역할이 필요합니다. 자세한 내용은 azure 기본 제공 역할참조하세요.

연결된 자격 증명인 DefaultAzureCredential 콩은 기본적으로 자동으로 구성되며 인증 정보가 더 이상 지정되지 않은 경우 모든 구성 요소에서 사용됩니다. 자세한 내용은 JavaAzure Identity 클라이언트 라이브러리의 DefaultAzureCredential 섹션을 참조하세요.

구성 속성

속성 마이그레이션

사용할 때 속성 마이그레이션을 원활하게 하기 위해 spring-boot-properties-migrator 파일을 만들었습니다. 먼저 애플리케이션에 다음 속성 마이그레이션기를 추가합니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-properties-migrator</artifactId>
    <scope>runtime</scope>
</dependency>

또는 Gradle을 사용하는 경우:

runtime("org.springframework.boot:spring-boot-properties-migrator")

앱을 실행하면 Spring Cloud Azure에서 더 이상 관리되지 않는 속성을 식별합니다. 대체 항목이 있는 경우 경고와 함께 속성을 일시적으로 다시 매핑합니다. 대체 항목이 없으면 오류 보고서에 자세한 정보가 표시됩니다. 어느 쪽이든 구성을 업데이트한 후 구성을 업데이트하고 종속성을 제거해야 합니다.

계속 진행하기 전에 IDE의 검색 기능을 사용하여 통합 테스트에서 마이그레이션한 속성 중 하나를 사용하지 않는지 다시 확인하는 것이 좋습니다.

메모

이 변경에서 많은 구성 속성을 변경했습니다. spring-boot-properties-migrator 사용하면 마이그레이션을 원활하게 하는 데 도움이 됩니다.

전역 구성

최신 spring-cloud-azure-starter 사용하면 네임스페이스 spring.cloud.azure모든 Azure SDK에 적용되는 속성을 정의할 수 있습니다. 이 기능은 레거시 azure-spring-boot-starter지원되지 않았습니다. 전역 구성은 다음 표와 같이 다섯 가지 범주로 나눌 수 있습니다.

접두사 묘사
spring.cloud.azure.client를 각 Azure SDK 아래에 전송 클라이언트를 구성합니다.
spring.cloud.azure.credential Microsoft Entra ID를 사용하여 인증하는 방법을 구성합니다.
spring.cloud.azure.profile Azure 클라우드 환경을 구성합니다.
spring.cloud.azure.proxy를 프록시 옵션을 구성하고 모든 Azure SDK 클라이언트에 적용합니다.
spring.cloud.azure.retry 재시도 옵션을 구성하고 모든 Azure SDK 클라이언트에 적용합니다. 다시 시도 옵션은 SDK의 일부를 지원하며 spring.cloud.azure.cosmos.retry없습니다.

구성의 전체 목록은Spring Cloud Azure 구성 속성 참조하세요.

각 SDK 구성

SDK 수준의 구성 옵션에 대한 자세한 내용은 다음 링크를 사용합니다.

API 호환성이 손상되는 변경

각 라이브러리의 API 호환성이 손상되는 변경에 대한 자세한 내용은 다음 링크를 사용합니다.

라이브러리 변경 내용

각 라이브러리의 주요 변경 내용은 다음과 같이 도입됩니다.

azure-spring-boot-starter에서 spring-cloud-azure-starter로

이 가이드는 azure-spring-boot-starter버전 3에서 spring-cloud-azure-starter 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

종속성 변경

일부 불필요한 종속성은 최신 Spring Cloud Azure 4.0 라이브러리에서 제거한 레거시 아티팩트에서 포함되었습니다. 의도하지 않은 충돌을 방지하려면 제거된 종속성을 프로젝트에 수동으로 추가해야 합니다.

다음 표에서는 제거된 종속성을 보여줍니다.

종속성 제거됨 묘사
org.springframework.boot:spring-boot-starter-validation 최대 절전 모드 유효성 검사기를 사용하려는 경우 유효성 검사 시작자를 포함합니다.

azure-spring-boot-starter-active-directory에서 spring-cloud-azure-starter-active-directory로

이 가이드는 azure-spring-boot-starter-active-directory버전 3에서 spring-cloud-azure-starter-active-directory 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

종속성 변경

최신 Spring Cloud Azure 4.0 라이브러리 이후 레거시 아티팩트에서 일부 불필요한 종속성이 제거되었습니다. 이러한 제거된 종속성을 프로젝트에 추가하여 의도하지 않은 충돌을 방지합니다.

다음 표에서는 제거된 종속성을 보여줍니다.

종속성 제거됨 묘사
com.fasterxml.jackson.core:jackson-databind 필요한 경우 프로젝트에 이 종속성을 추가합니다.
io.projectreactor.netty:reactor-netty 필요한 경우 프로젝트에 이 종속성을 추가합니다.
org.springframework.boot:spring-boot-starter-validation 필요한 경우 프로젝트에 이 종속성을 추가합니다.
org.springframework.boot:spring-boot-starter-webflux 필요한 경우 프로젝트에 이 종속성을 추가합니다.

SDK 구성 변경 내용

이 섹션에는 추가, 제거 및 변경된 속성에 대한 변경 내용이 포함되어 있습니다.

  • 다음 두 가지 사항은 주의해야 할 주요 사항입니다.
  1. 모든 구성 속성 이름의 접두사는 azure.activedirectoryspring.cloud.azure.active-directory변경되었습니다.
  2. Microsoft Entra 관련 기능을 사용하거나 사용하지 않도록 설정하기 위해 새 속성 spring.cloud.azure.active-directory.enabled 추가됩니다. 기본값은 false.

다음 표에서는 azure-spring-boot-starter-active-directoryspring-cloud-azure-starter-active-directory간의 속성 매핑을 보여 줍니다.

레거시 속성 최신 속성
azure.activedirectory.app-id-uri spring.cloud.azure.active-directory.app-id-uri
azure.activedirectory.application-type spring.cloud.azure.active-directory.application-type
azure.activedirectory.authorization-clients spring.cloud.azure.active-directory.authorization-clients
azure.activedirectory.authorization-clients.AZURE_CLIENT_NAME.authorization-grant-type spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME.authorization-grant-type
azure.activedirectory.authorization-clients.AZURE_CLIENT_NAME.on-demand spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME.on-demand
azure.activedirectory.authorization-clients.AZURE_CLIENT_NAME.scopes spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME.scopes
azure.activedirectory.authenticate-additional-parameters spring.cloud.azure.active-directory.authenticate-additional-parameters
azure.activedirectory.base-uri spring.cloud.azure.active-directory.profile.environment.active-directory-endpoint
azure.activedirectory.client-id spring.cloud.azure.active-directory.credential.client-id
azure.activedirectory.client-secret spring.cloud.azure.active-directory.credential.client-secret
azure.activedirectory.graph-membership-uri 자세한 내용은 다음 표를 확인하세요.
azure.activedirectory.jwt-connect-timeout spring.cloud.azure.active-directory.jwt-connect-timeout.
azure.activedirectory.jwt-read-timeout spring.cloud.azure.active-directory.jwt-read-timeout.
azure.activedirectory.jwt-size-limit spring.cloud.azure.active-directory.jwt-size-limit.
azure.activedirectory.jwk-set-cache-lifespan spring.cloud.azure.active-directory.jwk-set-cache-lifespan.
azure.activedirectory.jwk-set-cache-refresh-time spring.cloud.azure.active-directory.jwk-set-cache-refresh-time
azure.activedirectory.post-logout-redirect-uri spring.cloud.azure.active-directory.post-logout-redirect-uri
azure.activedirectory.session-stateless spring.cloud.azure.active-directory.session-stateless
azure.activedirectory.redirect-uri-template spring.cloud.azure.active-directory.redirect-uri-template
azure.activedirectory.resource-server.claim-to-authority-prefix-map spring.cloud.azure.active-directory.resource-server.claim-to-authority-prefix-map
azure.activedirectory.resource-server.principal-claim-name spring.cloud.azure.active-directory.resource-server.principal-claim-name
azure.activedirectory.tenant-id spring.cloud.azure.active-directory.profile.tenant-id
azure.activedirectory.user-group.allowed-group-ids spring.cloud.azure.active-directory.user-group.allowed-group-ids
azure.activedirectory.user-group.allowed-group-names spring.cloud.azure.active-directory.user-group.allowed-group-names
azure.activedirectory.user-name-attribute spring.cloud.azure.active-directory.user-name-attribute
  • 다음 속성의 값 형식이 longDuration변경됩니다.

    • jwt-connect-timeout
    • jwt-read-timeout
    • jwk-set-cache-lifespan
    • jwk-set-cache-refresh-time.
  • 다음 속성이 제거됩니다.

    • azure.activedirectory.allow-telemetry
    • azure.activedirectory.user-group.enable-full-list
    • azure.activedirectory.graph-base-uri
    • azure.activedirectory.graph-membership-uri
  • 다음 속성이 추가됩니다.

    • spring.cloud.azure.active-directory.enabled
    • spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint
    • spring.cloud.azure.active-directory.user-group.use-transitive-members

메모

azure.activedirectory.graph-membership-uri 함수는 spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpointspring.cloud.azure.active-directory.user-group.use-transitive-members2개의 속성으로 대체되었습니다. 첫 번째 속성은 호스트 이름을 지정하는 데 사용되며, 두 번째 속성은 URL 경로(v1.0/me/memberOf 또는 v1.0/me/transitiveMemberOf)를 사용하기 위한 플래그입니다.

다음은 마이그레이션의 몇 가지 예입니다.

  • 예제 1. 사례 1

    • 레거시의 경우: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/memberOf

    • 최신의 경우: spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint=https://graph.microsoft.com/ + spring.cloud.azure.active-directory.user-group.use-transitive-members=false

  • 예제 2. 사례 2

    • 레거시의 경우: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/transitiveMemberOf

    • 최신의 경우: spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint=https://graph.microsoft.com/ + spring.cloud.azure.active-directory.user-group.use-transitive-members=true

API 변경 내용

다음 표에서는 azure-spring-boot-starter-active-directoryspring-cloud-azure-starter-active-directory클래스 매핑을 보여 줍니다.

레거시 클래스 최신 클래스
com.azure.spring.aad.webapi.AADJwtBearerTokenAuthenticationConverter com.azure.spring.cloud.autoconfigure.aad.AadJwtBearerTokenAuthenticationConverter
com.azure.spring.aad.webapi.AADResourceServerProperties com.azure.spring.cloud.autoconfigure.aad.properties.AadResourceServerProperties
com.azure.spring.aad.webapi.AADResourceServerWebSecurityConfigurerAdapter com.azure.spring.cloud.autoconfigure.aad.AadResourceServerWebSecurityConfigurerAdapter
com.azure.spring.aad.webapp.AADWebSecurityConfigurerAdapter com.azure.spring.cloud.autoconfigure.aad.AadWebSecurityConfigurerAdapter
com.azure.spring.aad.webapp.AuthorizationClientProperties com.azure.spring.cloud.autoconfigure.aad.properties.AuthorizationClientProperties
com.azure.spring.aad.AADApplicationType com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType
com.azure.spring.aad.AADAuthorizationGrantType com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationGrantType
com.azure.spring.aad.AADAuthorizationServerEndpoints com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints
com.azure.spring.aad.AADClientRegistrationRepository com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository
com.azure.spring.aad.AADTrustedIssuerRepository com.azure.spring.cloud.autoconfigure.aad.AadTrustedIssuerRepository
com.azure.spring.autoconfigure.aad.AADAppRoleStatelessAuthenticationFilter com.azure.spring.cloud.autoconfigure.aad.filter.AadAppRoleStatelessAuthenticationFilter
com.azure.spring.autoconfigure.aad.AADAuthenticationFilter com.azure.spring.cloud.autoconfigure.aad.filter.AadAuthenticationFilter
com.azure.spring.autoconfigure.aad.AADAuthenticationProperties com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties
com.azure.spring.autoconfigure.aad.UserPrincipal com.azure.spring.cloud.autoconfigure.aad.filter.UserPrincipal
com.azure.spring.autoconfigure.aad.UserPrincipalManager com.azure.spring.cloud.autoconfigure.aad.filter.UserPrincipalManager

이 섹션에서는 azure-spring-boot-starter-active-directory에서 제거된 클래스를 나열합니다.

  • 레거시 클래스 제거됨

    • com.azure.spring.aad.webapp.AADHandleConditionalAccessFilter
    • com.azure.spring.aad.webapi.validator.AADJwtAudienceValidator
    • com.azure.spring.aad.webapi.validator.AADJwtClaimValidator

azure-spring-boot-starter-active-directory-b2c에서 spring-cloud-azure-starter-active-directory-b2c로

이 가이드는 azure-spring-boot-starter-active-directory-b2c버전 3에서 spring-cloud-azure-starter-active-directory-b2c 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

종속성 변경

일부 불필요한 종속성은 최신 Spring Cloud Azure 4.0 라이브러리에서 제거한 레거시 아티팩트에서 포함되었습니다. 의도하지 않은 충돌을 방지하려면 제거된 종속성을 프로젝트에 수동으로 추가해야 합니다.

다음 표에서는 제거된 종속성을 보여줍니다.

종속성 제거됨 묘사
org.springframework.boot:spring-boot-starter-validation 최대 절전 모드 유효성 검사기를 사용하려는 경우 유효성 검사 시작자를 포함합니다.

SDK 구성 변경 내용

이 섹션에는 추가, 제거 및 변경된 속성에 대한 변경 내용이 포함되어 있습니다.

  • 다음 두 가지 사항은 주의해야 할 주요 사항입니다.
  1. 모든 구성 속성 이름이 접두사를 azure.activedirectory.b2cspring.cloud.azure.active-directory.b2c변경했습니다.
  2. Azure AD B2C 관련 기능을 사용하거나 사용하지 않도록 설정/해제할 수 있도록 새 속성 spring.cloud.azure.active-directory.b2c.enabled 추가됩니다. 기본값은 false입니다.

다음 표에서는 azure-spring-boot-starter-active-directory-b2cspring-cloud-azure-starter-active-directory-b2c속성 매핑을 보여 줍니다.

레거시 속성 최신 속성
azure.activedirectory.b2c.authenticate-additional-parameters를 spring.cloud.azure.active-directory.b2c.authenticate-additional-parameters를
azure.activedirectory.b2c.authorization-clients spring.cloud.azure.active-directory.b2c.authorization-clients를
azure.activedirectory.b2c.authorization-clients를 . .authorization-grant-typeAZURE_CLIENT_NAME spring.cloud.azure.active-directory.b2c.authorization-clients를 . .authorization-grant-typeAZURE_CLIENT_NAME
azure.activedirectory.b2c.authorization-clients를 .AZURE_CLIENT_NAME.scopes spring.cloud.azure.active-directory.b2c.authorization-clients를 .AZURE_CLIENT_NAME.scopes
azure.activedirectory.b2c.app-id-uri spring.cloud.azure.active-directory.b2c.app-id-uri를
azure.activedirectory.b2c.base-uri를 spring.cloud.azure.active-directory.b2c.base-uri를
azure.activedirectory.b2c.client-id를 spring.cloud.azure.active-directory.b2c.credential.client-id를
azure.activedirectory.b2c.client-secret spring.cloud.azure.active-directory.b2c.credential.client-secret을
azure.activedirectory.b2c.jwt-connect-timeout spring.cloud.azure.active-directory.b2c.jwt-connect-timeout을
azure.activedirectory.b2c.jwt-read-timeout spring.cloud.azure.active-directory.b2c.jwt-read-timeout을
azure.activedirectory.b2c.jwt-size-limit spring.cloud.azure.active-directory.b2c.jwt-size-limit
azure.activedirectory.b2c.login-flow spring.cloud.azure.active-directory.b2c.login-flow를
azure.activedirectory.b2c.logout-success-url spring.cloud.azure.active-directory.b2c.logout-success-url을
azure.activedirectory.b2c.reply-url spring.cloud.azure.active-directory.b2c.reply-url을
azure.activedirectory.b2c.tenant-id를 spring.cloud.azure.active-directory.b2c.profile.tenant-id를
azure.activedirectory.b2c.user-flows spring.cloud.azure.active-directory.b2c.user-flows를
azure.activedirectory.b2c.user-name-attribute-name spring.cloud.azure.active-directory.b2c.user-name-attribute-name을
  • azure-spring-boot-starter-active-directory-b2c에서 속성이 제거되었습니다.

    • azure.activedirectory.b2c.allow-telemetry
    • azure.activedirectory.b2c.tenant
  • 다음 속성의 값 형식이 longDuration변경됩니다.

    • jwt-connect-timeout
    • jwt-read-timeout

API 변경 내용

다음 표에서는 azure-spring-boot-starter-active-directory-b2cspring-cloud-azure-starter-active-directory-b2c클래스 매핑을 보여 줍니다.

레거시 클래스 최신 클래스
com.azure.spring.autoconfigure.b2c.AADB2CAuthorizationRequestResolver com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cAuthorizationRequestResolver
com.azure.spring.autoconfigure.b2c.AADB2CJwtBearerTokenAuthenticationConverter com.azure.spring.cloud.autoconfigure.aad.AadJwtBearerTokenAuthenticationConverter
com.azure.spring.autoconfigure.b2c.AADB2CLogoutSuccessHandler com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cLogoutSuccessHandler
com.azure.spring.autoconfigure.b2c.AADB2COidcLoginConfigurer com.azure.spring.cloud.autoconfigure.aadb2c.AadB2COidcLoginConfigurer
com.azure.spring.autoconfigure.b2c.AADB2CProperties com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties
com.azure.spring.autoconfigure.b2c.AADB2CTrustedIssuerRepository com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cTrustedIssuerRepository
com.azure.spring.autoconfigure.b2c.AuthorizationClientProperties com.azure.spring.cloud.autoconfigure.aad.properties.AuthorizationClientProperties

azure-spring-boot-starter-cosmos에서 spring-cloud-azure-starter-data-cosmos로

이 가이드는 azure-spring-boot-starter-cosmos버전 3에서 spring-cloud-azure-starter-data-cosmos 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

SDK 구성 변경 내용

모든 구성 속성 이름이 접두사를 azure.cosmosspring.cloud.azure.cosmos변경했습니다.

다음 표에서는 azure-spring-boot-starter-cosmosspring-cloud-azure-starter-data-cosmos클래스 매핑을 보여 줍니다.

레거시 속성 최신 속성
.connection-mode를azure.cosmos spring.cloud.azure.cosmos.connection-mode를
azure.cosmos.consistency 수준 spring.cloud.azure.cosmos.consistency 수준
azure.cosmos.database spring.cloud.azure.cosmos.database를
azure.cosmos.key spring.cloud.azure.cosmos.key
azure.cosmos.populate-query-metrics spring.cloud.azure.cosmos.populate-query-metrics를
azure.cosmos.uri spring.cloud.azure.cosmos.endpoint를

azure-spring-boot-starter-keyvault-secrets에서 spring-cloud-azure-starter-keyvault-secrets까지

이 가이드는 azure-spring-boot-starter-keyvault-secrets버전 3에서 spring-cloud-azure-starter-keyvault-secrets 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

SDK 구성 변경 내용

이 섹션에는 추가, 제거 및 변경된 속성에 대한 변경 내용이 포함되어 있습니다.

다음 표에서는 azure-spring-boot-starter-keyvault-secretsspring-cloud-azure-starter-keyvault-secrets속성 매핑을 보여 줍니다.

레거시 속성 최신 속성
.case-sensitive-key를azure.keyvault spring.cloud.azure.keyvault.secret.property-source[n].case-sensitive를
.certificate-password를azure.keyvault spring.cloud.azure.keyvault.secret.property-source[n].credential.client-certificate-password를
azure.keyvault.certificate-path spring.cloud.azure.keyvault.secret.property-source[n].credential.client-certificate-path를
.client-id를azure.keyvault spring.cloud.azure.keyvault.secret.property-source[n].credential.client-id를
azure.keyvault.client-key spring.cloud.azure.keyvault.secret.property-source[n].credential.client-secret
azure.keyvault.enabled를 spring.cloud.azure.keyvault.secret.property-source-enabled 및 spring.cloud.azure.keyvault.secret.property-source-enabled를
azure.keyvault.order 더 이상 지원되지 않습니다. 대신 property-source[n]에서 순서를 사용합니다.
azure.keyvault.refresh-interval spring.cloud.azure.keyvault.secret.property-source[n].refresh-interval을
azure.keyvault.secret-keys spring.cloud.azure.keyvault.secret.property-source[n].secret-keys를
.tenant-id를azure.keyvault spring.cloud.azure.keyvault.secret.property-source[n].profile.tenant-id를
azure.keyvault.uri spring.cloud.azure.keyvault.secret.property-source[n].endpoint를
  • spring-cloud-azure-starter-keyvault-secrets에서 속성 제거

azure.keyvault.allow-telemetry azure.keyvault.order

다음 사항에 주의해야 합니다.

  1. 모든 구성 속성 이름이 접두사를 azure.keyvaultspring.cloud.azure.keyvault.secret변경했습니다.
  2. spring.cloud.azure.keyvault.secret.enabled 모든 Key Vault 비밀 기능을 사용하도록 설정하고, Key Vault 비밀 클라이언트 빈(예: SecretClientSecretAsyncClient)을 구성하고, KeyVaultPropertySourceConfigurableEnvironment 추가하는 데 사용됩니다.
  3. spring.cloud.azure.keyvault.secret.property-source-enabled 모든 KeyVaultPropertySource사용하도록 설정하는 데 사용됩니다. spring.cloud.azure.keyvault.secret.enabled=true경우에만 적용됩니다.
  4. Azure 공통 속성(예: client, proxy, retry, credential, profile) 및 Key Vault 속성(예: endpoint, service-version). spring.cloud.azure.keyvault.secret.property-sources[n].PROPERTY_NAME 구성되지 않은 경우 spring.cloud.azure.keyvault.secret.PROPERTY_NAME 사용됩니다.
  5. spring.cloud.azure.keyvault.secret.property-sources[n].resource 고유한 Azure 리소스와 관련이 있으므로 구성되지 않은 경우 다른 위치에서 값을 얻지 못합니다.

azure-spring-boot-starter-servicebus-jms에서 spring-cloud-azure-starter-servicebus-jms로

이 가이드는 azure-spring-boot-starter-servicebus-jms버전 3에서 spring-cloud-azure-starter-servicebus-jms 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

SDK 구성 변경 내용

spring.jms.servicebus.idle-timeout 대한 구성 유형이 가독성을 위해 long(밀리초)에서 Duration 패턴으로 변경되었습니다.

azure-spring-boot-starter-Storage에서 spring-cloud-azure-starter-storage-blob으로

이 가이드는 azure-spring-boot-starter-storage버전 3에서 spring-cloud-azure-starter-storage-blob 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

SDK 구성 변경 내용

모든 구성 속성 이름이 접두사를 azure.storagespring.cloud.azure.storage.blob변경했습니다.

다음 표에서는 azure-spring-boot-starter-storagespring-cloud-azure-starter-storage-blob속성 매핑을 보여 줍니다.

레거시 속성 최신 속성
azure.storage.account-name spring.cloud.azure.storage.blob.account-name
azure.storage.account-key spring.cloud.azure.storage.blob.account-key를
azure.storage.blob-endpoint spring.cloud.azure.storage.blob.endpoint

API 변경 내용

다음 표에서는 azure-spring-boot-starter-storagespring-cloud-azure-starter-storage-blob클래스 매핑을 보여 줍니다.

레거시 클래스 최신 클래스
com.azure.spring.autoconfigure.storage.resource.AzureStorageProtocolResolver com.azure.spring.core.resource.AzureStorageBlobProtocolResolver
com.azure.spring.autoconfigure.storage.resource.BlobStorageResource com.azure.spring.core.resource.StorageBlobResource
com.azure.spring.autoconfigure.storage.resource.AzureStorageResourcePatternResolver com.azure.spring.core.resource.AzureStorageBlobProtocolResolver

azure-spring-boot-starter-storage에서 spring-cloud-azure-starter-storage-file-share로

이 가이드는 azure-spring-boot-starter-storage버전 3에서 spring-cloud-azure-starter-storage-file-share 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

SDK 구성 변경 내용

모든 구성 속성 이름이 접두사를 azure.storagespring.cloud.azure.storage.fileshare변경했습니다.

다음 표에서는 azure-spring-boot-starter-storagespring-cloud-azure-starter-storage-file-share속성 매핑을 보여 줍니다.

레거시 속성 최신 속성
azure.storage.account-name spring.cloud.azure.storage.fileshare.account-name
azure.storage.account-key spring.cloud.azure.storage.fileshare.account-key를
azure.storage.file-endpoint spring.cloud.azure.storage.fileshare.endpoint

API 변경 내용

다음 표에서는 azure-spring-boot-starter-storagespring-cloud-azure-starter-storage-file-share클래스 매핑을 보여 줍니다.

레거시 클래스 최신 클래스
com.azure.spring.autoconfigure.storage.resource.AzureStorageProtocolResolver com.azure.spring.core.resource.AzureStorageFileProtocolResolver
com.azure.spring.autoconfigure.storage.resource.FileStorageResource com.azure.spring.core.resource.StorageFileResource
com.azure.spring.autoconfigure.storage.resource.AzureStorageResourcePatternResolver com.azure.spring.core.resource.AzureStorageFileProtocolResolver

azure-spring-cloud-starter-eventhubs에서 spring-cloud-azure-starter-integration-eventhubs로

이 가이드는 azure-spring-cloud-starter-eventhubs버전 2에서 spring-cloud-azure-starter-integration-eventhubs 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

SDK 구성 변경 내용

중요하다

구성 접두사를 spring.cloud.azure.eventhubspring.cloud.azure.eventhubs.

이 접두사에 대한 자식 항목에 대한 변경 내용은 다음 표를 참조하세요.

다음 표에서는 azure-spring-cloud-starter-eventhubsspring-cloud-azure-starter-integration-eventhubs속성 매핑을 보여 줍니다.

레거시 속성 최신 속성
spring.cloud.azure.resource-group spring.cloud.azure.eventhubs.resource.resource-group을
spring.cloud.azure.eventhub.namespace를 spring.cloud.azure.eventhubs.namespace를
spring.cloud.azure.eventhub.connection-string을 spring.cloud.azure.eventhubs.connection-string을
spring.cloud.azure.eventhub.checkpoint-storage-account를 spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name을
spring.cloud.azure.eventhub.checkpoint-access-key를 spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key를
spring.cloud.azure.eventhub.checkpoint-container spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name을

예를 들어 다음에서 변경합니다.

spring:
  cloud:
    azure:
      eventhub:
        connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
        checkpoint-storage-account: ${AZURE_CHECKPOINT_STORAGE_ACCOUNT_NAME}
        checkpoint-access-key: ${AZURE_CHECKPOINT_ACCOUNT_KEY}
        checkpoint-container: ${AZURE_CHECKPOINT_CONTAINER_NAME}

받는 사람:

spring:
  cloud:
    azure:
      eventhubs:
        connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
        processor:
          checkpoint-store:
            container-name: ${AZURE_STORAGE_CONTAINER_NAME}
            account-name: ${AZURE_STORAGE_ACCOUNT_NAME}
            account-key: ${AZURE_STORAGE_ACCOUNT_KEY}

메모

사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 권장됩니다. 데이터베이스, 캐시, 메시징 또는 AI 서비스와 같이 이 절차에서 설명하는 인증 흐름은 애플리케이션에 대한 신뢰 수준이 매우 높고 다른 흐름에 존재하지 않는 위험을 수반합니다. 암호 없는 연결 또는 키 없는 연결에 대한 관리 ID와 같은 더 안전한 옵션이 실행 가능하지 않은 경우에만 이 흐름을 사용합니다. 로컬 컴퓨터 작업의 경우 암호 없는 연결이나 키 없는 연결에 사용자 ID를 사용하는 것이 좋습니다.

API 변경 내용

  • 수신기 주석에 대한 변경 내용은 <<migration-azure-spring-cloud-messaging, azure-spring-cloud-messaging>> 라이브러리의 마이그레이션 가이드를 참조하세요.
  • 구독 함수가 클래스 EventHubOperation 이동되고 송신 함수가 EventHubsMessageListenerContainer이동한 EventHubsTemplate 삭제합니다.
  • Azure Event Hubs의 서비스와 일치하도록 EventHubInboundChannelAdapter 이름을 EventHubsInboundChannelAdapter 바꿉니다.
  • 생성자를 EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String)EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer)EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode)변경합니다.
  • CheckpointConfig 인스턴스화 스타일을 빌드 스타일 대신 단순 생성자로 변경합니다.
  • API EventHubOperation#setCheckpointConfig삭제합니다. 인바운드 채널 어댑터에 대한 검사점 구성을 설정하려면 사용자가 메서드 EventHubsContainerProperties#setCheckpointConfig호출할 수 있습니다.
  • API EventHubOperation#setBatchConsumerConfig삭제합니다. 인바운드 채널 어댑터에 대한 일괄 처리 사용 구성을 설정하기 위해 사용자는 EventHubsContainerProperties#getBatch#setMaxSize 두 메서드를 호출하고 EventHubsContainerProperties#getBatch#setMaxWaitTime 수 있습니다.
  • 일괄 처리 사용 모드의 경우 일괄 처리된 메시지에서 변환된 메시지 헤더 이름을 변경합니다.
    • 메시지 헤더를 azure_eventhub_enqueued_timeazure_eventhubs_batch_converted_enqueued_time변경합니다.
    • 메시지 헤더를 azure_eventhub_offsetazure_eventhubs_batch_converted_offset변경합니다.
    • 메시지 헤더를 azure_eventhub_sequence_numberazure_eventhubs_batch_converted_sequence_number변경합니다.
    • 메시지 헤더를 azure_partition_keyazure_batch_converted_partition_key변경합니다.
  • Event Hubs에 메시지를 게시하는 경우 일괄 처리된 메시지에서 변환된 모든 메시지 헤더를 무시합니다. 헤더에는 다음이 포함됩니다.
    • azure_batch_converted_partition_key
    • azure_eventhubs_batch_converted_enqueued_time
    • azure_eventhubs_batch_converted_offset
    • azure_eventhubs_batch_converted_sequence_number
    • azure_eventhubs_batch_converted_system_properties
    • azure_eventhubs_batch_converted_application_properties
  • BATCH 검사점 모드는 이제 일괄 처리 사용 모드에서만 작동하며, EventHubsInboundChannelAdapter 생성자에 ListenerMode.BATCH 전달하여 사용하도록 설정할 수 있습니다.

다음 표에서는 azure-spring-cloud-starter-eventhubsspring-cloud-azure-starter-integration-eventhubs클래스 매핑을 보여 줍니다.

레거시 클래스 최신 클래스
com.azure.spring.integration.core.AzureHeaders com.azure.spring.messaging.AzureHeaders
com.azure.spring.integration.core.EventHubHeaders com.azure.spring.messaging.eventhubs.support.EventHubsHeaders
com.azure.spring.integration.core.api.CheckpointConfig com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointConfig
com.azure.spring.integration.core.api.CheckpointMode com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging.checkpoint.Checkpointer
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler com.azure.spring.integration.core.handler.DefaultMessageHandler
com.azure.spring.integration.eventhub.inbound.EventHubInboundChannelAdapter com.azure.spring.integration.eventhubs.inbound.EventHubsInboundChannelAdapter

샘플 코드 조각

  • EventHubsInboundChannelAdapter 샘플 코드:

    레거시 코드:

    public class Demo {
        @Bean
        public EventHubInboundChannelAdapter messageChannelAdapter(
            @Qualifier("INPUT_CHANNEL") MessageChannel inputChannel, EventHubOperation   eventhubOperation) {
            eventhubOperation.setCheckpointConfig(CheckpointConfig.builder().checkpointMode  (CheckpointMode.MANUAL).build());
            EventHubInboundChannelAdapter adapter = new EventHubInboundChannelAdapter("EVENTHUB_NAME",
                eventhubOperation, "CONSUMER_GROUP");
            adapter.setOutputChannel(inputChannel);
            return adapter;
        }
    }
    

    최신 코드:

    public class Demo {
        @Bean
        public EventHubsMessageListenerContainer messageListenerContainer(EventHubsProcessorFactory processorFactory) {
            EventHubsContainerProperties containerProperties = new EventHubsContainerProperties();
            containerProperties.setEventHubName("EVENTHUB_NAME");
            containerProperties.setConsumerGroup("CONSUMER_GROUP");
            CheckpointConfig config = new CheckpointConfig(CheckpointMode.MANUAL);
            containerProperties.setCheckpointConfig(config);
            return new EventHubsMessageListenerContainer(processorFactory, containerProperties);
        }
    
        @Bean
        public EventHubsInboundChannelAdapter messageChannelAdapter(@Qualifier("INPUT_CHANNEL") MessageChannel inputChannel,
                                                                    EventHubsMessageListenerContainer listenerContainer) {
            EventHubsInboundChannelAdapter adapter = new EventHubsInboundChannelAdapter(listenerContainer);
            adapter.setOutputChannel(inputChannel);
            return adapter;
        }
    }
    
  • DefaultMessageHandler 샘플 코드:

    레거시 코드:

    public class Demo {
        @Bean
        @ServiceActivator(inputChannel = "OUTPUT_CHANNEL")
        public MessageHandler messageSender(EventHubOperation eventhubOperation) {
            DefaultMessageHandler handler = new DefaultMessageHandler("EVENTHUB_NAME", eventhubOperation);
            handler.setSendCallback(new ListenableFutureCallback<Void>() {
                @Override
                public void onSuccess(Void result) {
                    LOGGER.info("Message was sent successfully.");
                }
    
                @Override
                public void onFailure(Throwable ex) {
                    LOGGER.error("There was an error sending the message.", ex);
                }
            });
            return handler;
        }
    }
    

    최신 코드:

    public class Demo {
        @Bean
        @ServiceActivator(inputChannel = "OUTPUT_CHANNEL")
        public MessageHandler messageSender(EventHubsTemplate eventhubOperation) {
            DefaultMessageHandler handler = new DefaultMessageHandler("EVENTHUB_NAME", eventhubOperation);
            handler.setSendCallback(new ListenableFutureCallback<Void>() {
                @Override
                public void onSuccess(Void result) {
                    LOGGER.info("Message was sent successfully.");
                }
    
                @Override
                public void onFailure(Throwable ex) {
                    LOGGER.error("There was an error sending the message.", ex);
                }
            });
    
            return handler;
        }
    }
    

azure-spring-integration-eventhubs에서 spring-integration-azure-eventhubs로

이 가이드는 azure-spring-integration-eventhubs버전 2에서 spring-integration-azure-eventhubs 마이그레이션을 지원하기 위한 것입니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.

API 변경 내용

  • 구독 함수가 클래스 EventHubOperation 이동되고 송신 함수가 EventHubsMessageListenerContainer이동한 EventHubsTemplate 삭제합니다.
  • Azure Event Hubs의 서비스와 일치하도록 EventHubInboundChannelAdapter 이름을 EventHubsInboundChannelAdapter 바꿉니다.
  • 생성자를 EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String)EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer)EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode)변경합니다.
  • CheckpointConfig 인스턴스화 스타일을 빌드 스타일 대신 단순 생성자로 변경합니다.
  • API EventHubOperation#setCheckpointConfig삭제합니다. 인바운드 채널 어댑터에 대한 검사점 구성을 설정하려면 사용자가 메서드 EventHubsContainerProperties#setCheckpointConfig호출할 수 있습니다.
  • API EventHubOperation#setBatchConsumerConfig삭제합니다. 인바운드 채널 어댑터에 대한 일괄 처리 사용 구성을 설정하기 위해 사용자는 EventHubsContainerProperties#getBatch#setMaxSize 두 메서드를 호출하고 EventHubsContainerProperties#getBatch#setMaxWaitTime 수 있습니다.
  • 일괄 처리 사용 모드의 경우 일괄 처리된 메시지에서 변환된 메시지 헤더 이름을 변경합니다.
    • 메시지 헤더를 azure_eventhub_enqueued_timeazure_eventhubs_batch_converted_enqueued_time변경합니다.
    • 메시지 헤더를 azure_eventhub_offsetazure_eventhubs_batch_converted_offset변경합니다.
    • 메시지 헤더를 azure_eventhub_sequence_numberazure_eventhubs_batch_converted_sequence_number변경합니다.
    • 메시지 헤더를 azure_partition_keyazure_batch_converted_partition_key변경합니다.
  • Event Hubs에 메시지를 게시하는 경우 일괄 처리된 메시지에서 변환된 모든 메시지 헤더를 무시합니다. 헤더에는 다음이 포함됩니다.
    • azure_batch_converted_partition_key
    • azure_eventhubs_batch_converted_enqueued_time
    • azure_eventhubs_batch_converted_offset
    • azure_eventhubs_batch_converted_sequence_number
    • azure_eventhubs_batch_converted_system_properties
    • azure_eventhubs_batch_converted_application_properties
  • BATCH 검사점 모드는 이제 일괄 처리 사용 모드에서만 작동하며, EventHubsInboundChannelAdapter 생성자에 ListenerMode.BATCH 전달하여 사용하도록 설정할 수 있습니다.

다음 표에서는 azure-spring-integration-eventhubs spring-integration-azure-eventhubs클래스 매핑을 보여 줍니다.

레거시 클래스 최신 클래스
com.azure.spring.integration.core.AzureHeaders com.azure.spring.messaging.AzureHeaders
com.azure.spring.integration.core.EventHubHeaders com.azure.spring.messaging.eventhubs.support.EventHubsHeaders
com.azure.spring.integration.core.api.CheckpointConfig com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointConfig
com.azure.spring.integration.core.api.CheckpointMode com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging.checkpoint.Checkpointer
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler com.azure.spring.integration.core.handler.DefaultMessageHandler
com.azure.spring.integration.eventhub.inbound.EventHubInboundChannelAdapter com.azure.spring.integration.eventhubs.inbound.EventHubsInboundChannelAdapter

azure-spring-cloud-starter-servicebus에서 spring-cloud-azure-starter-integration-servicebus로

이 가이드는 azure-spring-cloud-starter-servicebus버전 2에서 spring-cloud-azure-starter-integration-servicebus 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

SDK 구성 변경 내용

spring-cloud-azure-starter-integration-servicebus지원되는 모든 구성 옵션의 경우 접두사는 spring.cloud.azure.servicebus유지됩니다.

다음 표에서는 azure-spring-cloud-starter-servicebusspring-cloud-azure-starter-integration-servicebus속성 매핑을 보여 줍니다.

레거시 속성 최신 속성
spring.cloud.azure.resource-group spring.cloud.azure.servicebus.resource.resource-group
spring.cloud.azure.servicebus.transport-type을 spring.cloud.azure.servicebus.client.transport-type을
spring.cloud.azure.servicebus.retry-options.retry-mode를 spring.cloud.azure.servicebus.retry.mode를
spring.cloud.azure.servicebus.retry-options.max 다시 시도 spring.cloud.azure.servicebus.retry.exponential.max 재시도 또는 spring.cloud.azure.servicebus.retry.fixed.max 재시도를 spring.cloud.azure.servicebus.retry.mode= 고정 또는 지수 따라 구성해야 합니다.
spring.cloud.azure.servicebus.retry-options.delay를 spring.cloud.azure.servicebus.retry.exponential.base-delay 또는 spring.cloud.azure.servicebus.retry.fixed.delay를 spring.cloud.azure.servicebus.retry.mode=고정 또는 지수 따라 구성해야 합니다.
spring.cloud.azure.servicebus.retry-options.max 지연 spring.cloud.azure.servicebus.retry.exponential.max 지연
spring.cloud.azure.servicebus.retry-options.try-timeout을 spring.cloud.azure.servicebus.retry.try-timeout

API 변경 내용

  • 구독 함수가 클래스 ServiceBusQueueOperation 이동하고 보내는 함수가 ServiceBusTopicOperation이동한 ServiceBusMessageListenerContainer 삭제하고 ServiceBusTemplate.
  • ServiceBusQueueInboundChannelAdapter 삭제하고 ServiceBusTopicInboundChannelAdapterService Bus 큐/토픽 엔터티를 수신 대기하는 기능을 ServiceBusInboundChannelAdapter로 이동합니다.
  • 생성자를 ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode)변경합니다.
  • 생성자를 ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode)변경합니다.
  • API ServiceBusQueueOperation#setCheckpointConfig 삭제하고 ServiceBusTopicOperation#setCheckpointConfig. 인바운드 채널 어댑터에 대한 검사점 구성을 설정하려면 사용자가 메서드 ServiceBusContainerProperties#setAutoComplete 대신 호출할 수 있습니다. 자동 완성 모드를 사용하지 않도록 설정하는 것은 MANUAL 검사점 모드와 동일하며 이를 사용하도록 설정하면 RECORD 모드가 트리거됩니다.
  • API ServiceBusQueueOperatio#setClientConfig 삭제하고 ServiceBusTopicOperation#setClientConfig. 인바운드 채널 어댑터에서 사용하는 기본 ServiceBusProcessorClient 구성하기 위해 사용자는 대신 ServiceBusContainerProperties 사용할 수 있습니다.
  • CompletableFuture ServiceBusTemplate 지원을 삭제하고 DefaultMessageHandler대신 Reactor 지원합니다.
  • ServiceBusTemplate#setDefaultEntityType 새 API를 추가하여 엔터티 형식을 지정합니다. 이 형식은 PropertiesSupplier&lt;String, ProducerProperties&gt;대해 ProducerProperties#entityType 빈이 제공되지 않는 경우에 필요합니다.
  • 메시지 헤더 AzureHeaders.RAW_ID삭제합니다. 대신 ServiceBusMessageHeaders.MESSAGE_ID 사용합니다.

다음 표에서는 azure-spring-cloud-starter-servicebusspring-cloud-azure-starter-integration-servicebus클래스 매핑을 보여 줍니다.

레거시 클래스 최신 클래스
com.azure.spring.integration.core.AzureHeaders com.azure.spring.messaging.AzureHeaders
com.azure.spring.integration.servicebus.converter.ServiceBusMessageHeaders com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders
com.azure.spring.integration.servicebus.converter.ServiceBusMessageConverter com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter
com.azure.spring.integration.core.DefaultMessageHandler com.azure.spring.integration.core.handler.DefaultMessageHandler
com.azure.spring.integration.servicebus.inbound.ServiceBusQueueInboundChannelAdapter com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter
com.azure.spring.integration.servicebus.inbound.ServiceBusTopicInboundChannelAdapter com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter

샘플 코드 조각

  • ServiceBusInboundChannelAdapter 샘플 코드:

    ServiceBusQueueInboundChannelAdapter 또는 ServiceBusTopicInboundChannelAdapter사용하는 레거시 코드:

    public class Demo {
        @Bean
        public ServiceBusQueueInboundChannelAdapter queueMessageChannelAdapter(
            @Qualifier("INPUT_CHANNEL_NAME") MessageChannel inputChannel, ServiceBusQueueOperation queueOperation) {
            queueOperation.setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.MANUAL).build());
            ServiceBusQueueInboundChannelAdapter adapter = new ServiceBusQueueInboundChannelAdapter("QUEUE_NAME",
                queueOperation);
            adapter.setOutputChannel(inputChannel);
            return adapter;
        }
    
        @Bean
        public ServiceBusTopicInboundChannelAdapter topicMessageChannelAdapter(
            @Qualifier("INPUT_CHANNEL_NAME") MessageChannel inputChannel, ServiceBusTopicOperation topicOperation) {
            topicOperation.setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.MANUAL).build());
            ServiceBusTopicInboundChannelAdapter adapter = new ServiceBusTopicInboundChannelAdapter("TOPIC_NAME",
                topicOperation, "SUBSCRIPTION_NAME");
            adapter.setOutputChannel(inputChannel);
            return adapter;
        }
    
    }
    

    최신 코드:

    public class Demo {
        @Bean("queue-listener-container")
        public ServiceBusMessageListenerContainer messageListenerContainer(ServiceBusProcessorFactory processorFactory) {
            ServiceBusContainerProperties containerProperties = new ServiceBusContainerProperties();
            containerProperties.setEntityName("QUEUE_NAME");
            containerProperties.setAutoComplete(false);
            return new ServiceBusMessageListenerContainer(processorFactory, containerProperties);
        }
    
        @Bean
        public ServiceBusInboundChannelAdapter queueMessageChannelAdapter(
            @Qualifier("INPUT_CHANNEL") MessageChannel inputChannel,
            @Qualifier("queue-listener-container") ServiceBusMessageListenerContainer listenerContainer) {
            ServiceBusInboundChannelAdapter adapter = new ServiceBusInboundChannelAdapter(listenerContainer);
            adapter.setOutputChannel(inputChannel);
            return adapter;
        }
    
        @Bean("topic-listener-container")
        public ServiceBusMessageListenerContainer messageListenerContainer(ServiceBusProcessorFactory processorFactory) {
            ServiceBusContainerProperties containerProperties = new ServiceBusContainerProperties();
            containerProperties.setEntityName("TOPIC_NAME");
            containerProperties.setSubscriptionName("SUBSCRIPTION_NAME");
            containerProperties.setAutoComplete(false);
            return new ServiceBusMessageListenerContainer(processorFactory, containerProperties);
        }
    
        @Bean
        public ServiceBusInboundChannelAdapter topicMessageChannelAdapter(
            @Qualifier("INPUT_CHANNEL") MessageChannel inputChannel,
            @Qualifier("topic-listener-container") ServiceBusMessageListenerContainer listenerContainer) {
            ServiceBusInboundChannelAdapter adapter = new ServiceBusInboundChannelAdapter(listenerContainer);
            adapter.setOutputChannel(inputChannel);
            return adapter;
        }
    }
    
  • DefaultMessageHandler 샘플 코드:

    레거시 코드, 큐를 예로 들면 다음과 같습니다.

    public class Demo {
        @Bean
        @ServiceActivator(inputChannel = "OUTPUT_CHANNEL_NAME")
        public MessageHandler queueMessageSender(ServiceBusQueueOperation queueOperation) {
            DefaultMessageHandler handler = new DefaultMessageHandler("QUEUE_NAME", queueOperation);
            handler.setSendCallback(new ListenableFutureCallback<Void>() {
                @Override
                public void onSuccess(Void result) {
                    LOGGER.info("Message was sent successfully.");
                }
                @Override
                public void onFailure(Throwable ex) {
                    LOGGER.info("There was an error sending the message.");
                }
            });
            return handler;
        }
    }
    

    최신 코드:

    public class Demo {
    
        @Bean
        @ServiceActivator(inputChannel = "OUTPUT_CHANNEL_NAME")
        public MessageHandler queueMessageSender(ServiceBusTemplate serviceBusTemplate) {
            serviceBusTemplate.setDefaultEntityType(ServiceBusEntityType.QUEUE);
            DefaultMessageHandler handler = new DefaultMessageHandler("QUEUE_NAME", serviceBusTemplate);
            handler.setSendCallback(new ListenableFutureCallback<Void>() {
                @Override
                public void onSuccess(Void result) {
                    LOGGER.info("Message was sent successfully for {}.", "QUEUE_NAME");
                }
    
                @Override
                public void onFailure(Throwable ex) {
                    LOGGER.info("There was an error sending the message.");
                }
            });
    
            return handler;
        }
    }
    

azure-spring-integration-servicebus에서 spring-integration-azure-servicebus로

이 가이드는 azure-spring-integration-servicebus버전 2에서 spring-integration-azure-servicebus 마이그레이션을 지원하기 위한 것입니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.

API 변경 내용

  • 구독 함수가 클래스 ServiceBusQueueOperation 이동하고 보내는 함수가 ServiceBusTopicOperation이동한 ServiceBusMessageListenerContainer 삭제하고 ServiceBusTemplate.
  • ServiceBusQueueInboundChannelAdapter 삭제하고 ServiceBusTopicInboundChannelAdapterService Bus 큐/토픽 엔터티를 수신 대기하는 기능을 ServiceBusInboundChannelAdapter로 이동합니다.
  • 생성자를 ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode)변경합니다.
  • 생성자를 ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode)변경합니다.
  • API ServiceBusQueueOperation#setCheckpointConfig 삭제하고 ServiceBusTopicOperation#setCheckpointConfig. 인바운드 채널 어댑터에 대한 검사점 구성을 설정하려면 사용자가 메서드 ServiceBusContainerProperties#setAutoComplete 대신 호출할 수 있습니다. 자동 완성 모드를 사용하지 않도록 설정하는 것은 MANUAL 검사점 모드와 동일하며 이를 사용하도록 설정하면 RECORD 모드가 트리거됩니다.
  • API ServiceBusQueueOperation#setClientConfig 삭제하고 ServiceBusTopicOperation#setClientConfig. 인바운드 채널 어댑터에서 사용하는 기본 ServiceBusProcessorClient 구성하기 위해 사용자는 대신 ServiceBusContainerProperties 사용할 수 있습니다.
  • CompletableFuture ServiceBusTemplate 지원을 삭제하고 DefaultMessageHandler대신 Reactor 지원합니다.
  • ServiceBusTemplate#setDefaultEntityType 새 API를 추가하여 엔터티 형식을 지정합니다. 이 형식은 PropertiesSupplier&lt;String, ProducerProperties&gt;대해 ProducerProperties#entityType 빈이 제공되지 않는 경우에 필요합니다.
  • 메시지 헤더 AzureHeaders.RAW_ID삭제합니다. 대신 ServiceBusMessageHeaders.MESSAGE_ID 사용합니다.

다음 표에서는 azure-spring-integration-servicebusspring-integration-azure-servicebus클래스 매핑을 보여 줍니다.

레거시 클래스 최신 클래스
com.azure.spring.integration.core.AzureHeaders com.azure.spring.messaging.AzureHeaders
com.azure.spring.integration.servicebus.converter.ServiceBusMessageHeaders com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders
com.azure.spring.integration.servicebus.converter.ServiceBusMessageConverter com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter
com.azure.spring.integration.core.DefaultMessageHandler com.azure.spring.integration.core.handler.DefaultMessageHandler
com.azure.spring.integration.servicebus.inbound.ServiceBusQueueInboundChannelAdapter com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter
com.azure.spring.integration.servicebus.inbound.ServiceBusTopicInboundChannelAdapter com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter

azure-spring-cloud-starter-storage-queue에서 spring-cloud-azure-starter-integration-storage-queue로

이 가이드는 azure-spring-cloud-starter-storage-queue버전 2에서 spring-cloud-azure-starter-integration-storage-queue 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

SDK 구성 변경 내용

모든 구성 속성 이름이 접두사를 spring.cloud.azure.storagespring.cloud.azure.storage.queue변경했습니다.

다음 표에서는 azure-spring-cloud-starter-storage-queuespring-cloud-azure-starter-integration-storage-queue속성 매핑을 보여 줍니다.

레거시 속성 최신 속성
spring.cloud.azure.storage.account를 spring.cloud.azure.storage.queue.account-name
spring.cloud.azure.storage.access-key를 spring.cloud.azure.storage.queue.account-key를
spring.cloud.azure.storage.resource-group spring.cloud.azure.storage.queue.resource.resource-group

API 변경 내용

  • StorageQueueOperation 삭제하고 대신 StorageQueueTemplate 제공합니다.
  • checkpoint-mode StorageQueueTemplate 구성을 삭제하고 MANUAL 모드만 지원합니다.

다음 표에서는 azure-spring-cloud-starter-storage-queuespring-cloud-azure-starter-integration-storage-queue클래스 매핑을 보여 줍니다.

레거시 클래스 최신 클래스
com.azure.spring.integration.core.AzureHeaders com.azure.spring.messaging.AzureHeaders
com.azure.spring.integration.storage.queue.converter.StorageQueueMessageConverter com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging.checkpoint.Checkpointer
com.azure.spring.integration.storage.queue.StorageQueueTemplate com.azure.spring.storage.queue.core.StorageQueueTemplate
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler com.azure.spring.integration.core.handler.DefaultMessageHandler
com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource

azure-spring-integration-storage-queue에서 spring-integration-azure-storage-queue로

이 가이드는 azure-spring-integration-storage-queue버전 2에서 spring-integration-azure-storage-queue 마이그레이션을 지원하기 위한 것입니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.

API 변경 내용

  • StorageQueueOperation 삭제하고 대신 StorageQueueTemplate 제공합니다.
  • checkpoint-mode StorageQueueTemplate 구성을 삭제하고 MANUAL 모드만 지원합니다.

다음 표에서는 azure-spring-integration-storage-queuespring-integration-azure-storage-queue클래스 매핑을 보여 줍니다.

레거시 클래스 최신 클래스
com.azure.spring.integration.core.AzureHeaders com.azure.spring.messaging.AzureHeaders
com.azure.spring.integration.storage.queue.converter.StorageQueueMessageConverter com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging.checkpoint.Checkpointer
com.azure.spring.integration.storage.queue.StorageQueueTemplate com.azure.spring.storage.queue.core.StorageQueueTemplate
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler com.azure.spring.integration.core.handler.DefaultMessageHandler
com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource

azure-spring-cloud-stream-binder-eventhubs에서 spring-cloud-azure-stream-binder-eventhubs로

이 가이드는 azure-spring-cloud-stream-binder-eventhubs버전 2에서 spring-cloud-azure-stream-binder-eventhubs 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

SDK 구성 변경 내용

중요하다

구성 접두사를 spring.cloud.azure.eventhubspring.cloud.azure.eventhubs.

중요하다

바인더 형식의 이름이 eventhubeventhubs.

다음 접두사에 대한 자식 항목의 변경 내용은 다음 표를 참조하세요.

다음 표에서는 azure-spring-cloud-stream-binder-eventhubsspring-cloud-azure-stream-binder-eventhubs속성 매핑을 보여 줍니다.

레거시 속성 최신 속성
spring.cloud.azure.resource-group spring.cloud.azure.eventhubs.resource.resource-group을
spring.cloud.azure.eventhub.namespace를 spring.cloud.azure.eventhubs.namespace를
spring.cloud.azure.eventhub.connection-string을 spring.cloud.azure.eventhubs.connection-string을
spring.cloud.azure.eventhub.checkpoint-storage-account를 spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name을
spring.cloud.azure.eventhub.checkpoint-access-key를 spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key를
spring.cloud.azure.eventhub.checkpoint-container spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name을
spring.cloud.stream.eventhub.bindings.binding-name.consumer.max-batch-size를 spring.cloud.stream.eventhubs.bindings.binding-name.consumer.batch.max-size를
spring.cloud.stream.eventhub.bindings.binding-name.consumer.max-wait-time spring.cloud.stream.eventhubs.bindings.binding-name.consumer.batch.max-wait-time
spring.cloud.stream.eventhub.bindings.binding-name.consumer.checkpoint-mode를 spring.cloud.stream.eventhubs.bindings.binding-name.consumer.checkpoint.mode를
spring.cloud.stream.eventhub.bindings.binding-name.consumer.checkpoint-count를 spring.cloud.stream.eventhubs.bindings.binding-name.consumer.checkpoint.count를
spring.cloud.stream.eventhub.bindings.binding-name.consumer.checkpoint-interval을 spring.cloud.stream.eventhubs.bindings.binding-name.consumer.checkpoint.interval을
spring.cloud.stream.eventhub.bindings.binding-name.consumer.start-position을 spring.cloud.stream.eventhubs.bindings.binding-name.consumer.initial-partition-event-position을

메모

start-position 구성의 값 형식도 com.azure.spring.integration.core.api.StartPosition 열거형에서 각 파티션에 대한 mapStartPositionProperties 변경됩니다. 따라서 키는 파티션 ID이며 값은 오프셋, 시퀀스 번호, 큐에 포함된 날짜 시간 및 포함 여부의 속성을 포함하는 com.azure.spring.cloud.service.eventhubs.properties.StartPositionProperties.

구성 마이그레이션 예제

인증에 연결 문자열을 사용하고 위에서 언급한 속성을 마이그레이션하기 위해 구성 변경 내용이 다음과 같이 나열됩니다.

레거시 구성:

spring:
  cloud:
    azure:
      eventhub:
        connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
        checkpoint-storage-account: ${AZURE_CHECKPOINT_STORAGE_ACCOUNT_NAME}
        checkpoint-access-key: ${AZURE_CHECKPOINT_ACCOUNT_KEY}
        checkpoint-container: ${AZURE_CHECKPOINT_CONTAINER_NAME}
    stream:
      eventhub:
        bindings:
          <binding-name>:
            consumer:
              max-batch-size: ${AZURE_MAX_BATCH_SIZE}
              max-wait-time: ${AZURE_MAX_WAIT_TIME}
              checkpoint-mode: ${AZURE_CHECKPOINT_MODE}
              checkpoint-count: ${AZURE_CHECKPOINT_COUNT}
              checkpoint-interval: ${AZURE_CHECKPOINT_INTERVAL}
              start-position: EARLIEST

최신 구성:

spring:
  cloud:
    azure:
      eventhubs:
        connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
        processor:
          checkpoint-store:
            container-name: ${AZURE_STORAGE_CONTAINER_NAME}
            account-name:  ${AZURE_STORAGE_ACCOUNT_NAME}
            account-key: ${AZURE_STORAGE_ACCOUNT_KEY}
    stream:
      eventhubs:
        bindings:
          <binding-name>:
            consumer:
              batch:
                max-size: ${AZURE_MAX_BATCH_SIZE}
                max-wait-time: ${AZURE_MAX_WAIT_TIME}
              checkpoint:
                mode: ${AZURE_CHECKPOINT_MODE}
                count: ${AZURE_CHECKPOINT_COUNT}
                interval: ${AZURE_CHECKPOINT_INTERVAL}
              initial-partition-event-position:
                0:
                  offset: earliest
                1:
                  sequence-number: 100
                2:
                  enqueued-date-time: 2022-01-12T13:32:47.650005Z
                4:
                  inclusive: false

메모

사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 권장됩니다. 데이터베이스, 캐시, 메시징 또는 AI 서비스와 같이 이 절차에서 설명하는 인증 흐름은 애플리케이션에 대한 신뢰 수준이 매우 높고 다른 흐름에 존재하지 않는 위험을 수반합니다. 암호 없는 연결 또는 키 없는 연결에 대한 관리 ID와 같은 더 안전한 옵션이 실행 가능하지 않은 경우에만 이 흐름을 사용합니다. 로컬 컴퓨터 작업의 경우 암호 없는 연결이나 키 없는 연결에 사용자 ID를 사용하는 것이 좋습니다.

연결 문자열 대신 보안 주체를 사용하는 경우 4.0 이전 버전에서 애플리케이션은 먼저 제공된 보안 주체를 사용하여 ARM(Azure Resource Manager)에 연결한 다음 ARM을 사용하여 지정된 네임스페이스의 연결 문자열을 검색합니다. 결국 애플리케이션은 검색된 연결 문자열을 사용하여 Azure Event Hubs에 연결합니다. 이러한 방식으로 제공된 보안 주체는 연결된 Azure Event Hubs 네임스페이스를 검색할 기여자 역할을 부여해야 합니다.

Azure Spring Apps 4.0의 경우 인증을 위해 보안 주체를 활용하는 두 가지 방법을 제공합니다. 하나는 여전히 보안 주체를 사용하여 ARM에 연결하고 보안 주체에 Contributor 역할이 필요한 연결 문자열을 검색합니다. 다른 하나는 보안 주체를 활용하여 Microsoft Entra ID에 인증한 다음 Azure Event Hubs에 직접 연결합니다. 이 경우 Contributor 역할은 더 이상 필요하지 않지만 메시징 작업에는 다른 Data 관련 역할이 필요합니다. 보안 주체에게 Azure 리소스에 액세스할 수 있는 충분한 권한이 부여되었는지 확인하려면 Microsoft Entra ID사용하여 액세스 권한 부여를 참조하세요.

ARM 기반 인증의 경우 서비스 주체를 예로 들어 할당된 역할이 변경되지 않아야 하는 구성 마이그레이션이 다음과 같이 나열됩니다.

레거시 구성:

spring:
  cloud:
    azure:
      client-id: ${AZURE_CLIENT_ID}
      client-secret: ${AZURE_CLIENT_SECRET}
      tenant-id: <tenant>
      resource-group: ${EVENTHUB_RESOURCE_GROUP}
      eventhub:
        namespace: ${EVENTHUB_NAMESPACE}

메모

tenant-id 허용되는 값은 common, organizations, consumers또는 테넌트 ID입니다. 이러한 값에 대한 자세한 내용은 오류 AADSTS50020 잘못된 엔드포인트(개인 및 조직 계정) 섹션을 참조하세요. - ID 공급자의 사용자 계정이 테넌트존재하지 않습니다. 단일 테넌트 앱을 변환하는 방법에 대한 자세한 내용은 Microsoft Entra ID단일 테넌트 앱을 다중 테넌트로 변환을 참조하세요.

최신 구성, Azure 구독 ID 및 리소스 그룹에 대한 속성이 필요합니다.

spring:
  cloud:
    azure:
      credential:
        client-id: ${AZURE_CLIENT_ID}
        client-secret: ${AZURE_CLIENT_SECRET}
      profile:
        tenant-id: <tenant>
        subscription-id: ${AZURE_SUBSCRIPTION_ID}
      eventhubs:
        namespace: ${EVENTHUB_NAMESPACE}
        resource:
          resource-group: ${RESOURCE_GROUP}

메모

tenant-id 허용되는 값은 common, organizations, consumers또는 테넌트 ID입니다. 이러한 값에 대한 자세한 내용은 오류 AADSTS50020 잘못된 엔드포인트(개인 및 조직 계정) 섹션을 참조하세요. - ID 공급자의 사용자 계정이 테넌트존재하지 않습니다. 단일 테넌트 앱을 변환하는 방법에 대한 자세한 내용은 Microsoft Entra ID단일 테넌트 앱을 다중 테넌트로 변환을 참조하세요.

ARM으로 우회하지 않고 Microsoft Entra ID로 직접 인증 및 권한을 부여하도록 마이그레이션할 수도 있습니다. 메시징 작업에 필요한 보안 주체 Data 역할을 부여해야 합니다. 서비스 주체 및 관리 ID의 구성 예제는 다음과 같습니다.

  • 서비스 주체를 사용하는 경우

    spring:
      cloud:
        azure:
          credential:
            client-id: ${AZURE_CLIENT_ID}
            client-secret: ${AZURE_CLIENT_SECRET}
          profile:
            tenant-id: <tenant>
          eventhubs:
            namespace: ${EVENTHUB_NAMESPACE}
    

메모

tenant-id 허용되는 값은 common, organizations, consumers또는 테넌트 ID입니다. 이러한 값에 대한 자세한 내용은 오류 AADSTS50020 잘못된 엔드포인트(개인 및 조직 계정) 섹션을 참조하세요. - ID 공급자의 사용자 계정이 테넌트존재하지 않습니다. 단일 테넌트 앱을 변환하는 방법에 대한 자세한 내용은 Microsoft Entra ID단일 테넌트 앱을 다중 테넌트로 변환을 참조하세요.

  • 관리 ID를 사용하는 경우

    spring:
      cloud:
        azure:
          credential:
            managed-identity-enabled: true
            client-id: ${AZURE_MANAGED_IDENTITY_CLIENT_ID} # Only needed when using a user-assigned managed identity
          eventhubs:
            namespace: ${EVENTHUB_NAMESPACE}
    

API 변경 내용

다음 표에서는 azure-spring-cloud-stream-binder-eventhubsspring-cloud-azure-stream-binder-eventhubs클래스 매핑을 보여 줍니다.

레거시 클래스 최신 클래스
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging.checkpoint.Checkpointer
com.azure.spring.integration.core.AzureHeaders com.azure.spring.messaging.AzureHeaders
com.azure.spring.integration.core.EventHubHeaders com.azure.spring.messaging.eventhubs.support.EventHubsHeaders

azure-spring-cloud-stream-binder-servicebus-*에서 spring-cloud-azure-stream-binder-servicebus로

이 가이드는 azure-spring-cloud-stream-binder-servicebus-queue 또는 azure-spring-cloud-stream-binder-servicebus-topic버전 2에서 spring-cloud-azure-stream-binder-servicebus 마이그레이션을 지원하기 위한 것입니다.

일반 정보는 다음 링크를 사용합니다.

  • 4.0의 변경 내용에 대한 개요는 소개마이그레이션 혜택 섹션을 참조하세요.
  • 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
  • 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
  • Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
  • 마이그레이션 중에 spring-boot-properties-migrator 활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요.
  • 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.

SDK 구성 변경 내용

중요하다

레거시 바인더 라이브러리는 azure-spring-cloud-stream-binder-servicebus-queueazure-spring-cloud-stream-binder-servicebus-topic이제 하나의 spring-cloud-azure-stream-binder-servicebus병합됩니다.

중요하다

바인더 형식은 servicebus-queue 결합되고 servicebus-topicservicebus.

다음 표에서는 spring-cloud-azure-stream-binder-servicebus새 구성 속성을 나열합니다.

최신 속성 묘사
spring.cloud.stream.servicebus.bindings.binding-name.producer.entity-type을 보내는 함수를 사용하는 경우 토픽 또는 큐로 설정할 수 있는 엔터티 형식을 설정해야 합니다.

다음 표에서는 azure-spring-cloud-stream-binder-servicebus-*spring-cloud-azure-stream-binder-servicebus속성 매핑을 보여 줍니다.

레거시 속성 최신 속성
spring.cloud.azure.resource-group spring.cloud.azure.servicebus.resource.resource-group
spring.cloud.azure.servicebus.transport-type을 spring.cloud.azure.servicebus.client.transport-type을
spring.cloud.azure.servicebus.retry-options.retry-mode를 spring.cloud.azure.servicebus.retry.mode를
spring.cloud.azure.servicebus.retry-options.max 다시 시도 spring.cloud.azure.servicebus.retry.exponential.max 재시도 또는 spring.cloud.azure.servicebus.retry.fixed.max 재시도를 spring.cloud.azure.servicebus.retry.mode= 고정 또는 지수 따라 구성해야 합니다.
spring.cloud.azure.servicebus.retry-options.delay를 spring.cloud.azure.servicebus.retry.exponential.base-delay 또는 spring.cloud.azure.servicebus.retry.fixed.delay를 spring.cloud.azure.servicebus.retry.mode=고정 또는 지수 따라 구성해야 합니다.
spring.cloud.azure.servicebus.retry-options.max 지연 spring.cloud.azure.servicebus.retry.exponential.max 지연
spring.cloud.azure.servicebus.retry-options.try-timeout을 spring.cloud.azure.servicebus.retry.try-timeout
spring.cloud.stream.servicebus.queue.bindings를 .* spring.cloud.stream.servicebus.bindings.*
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer를 . 동시성 spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions/max-concurrent-calls를
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer를 . 검사점 모드 spring.cloud.stream.servicebus.bindings.binding-name.consumer를 . 자동 완성
spring.cloud.stream.servicebus.topic.bindings를 .* spring.cloud.stream.servicebus.bindings.*
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer를 . 동시성 spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions/max-concurrent-calls를
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer를 . 검사점 모드 spring.cloud.stream.servicebus.bindings.binding-name.consumer를 . 자동 완성

메모

sessionsEnabled가 true 경우 동시성 속성이 maxConcurrentSessions로 대체되고 sessionsEnabled가 false경우 maxConcurrentCalls로 바뀝니다.

메모

자동 완성을 사용하도록 설정하는 것은 RECORD 검사점 모드와 같으며 MANUAL 모드와 반대입니다.

구성 마이그레이션 예제

레거시 구성, 큐를 예로 들면 다음과 같습니다.

spring:
  cloud:
    azure:
      servicebus:
        connection-string: ${AZURE_SERVICEBUS_BINDER_CONNECTION_STRING}
    stream:
      function:
        definition: consume;supply
      bindings:
        consume-in-0:
          destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
        supply-out-0:
          destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
      servicebus:
        queue:
          bindings:
            consume-in-0:
              consumer:
                checkpoint-mode: MANUAL

최신 구성:

spring:
  cloud:
    azure:
      servicebus:
        connection-string: ${AZURE_SERVICEBUS_BINDER_CONNECTION_STRING}
    stream:
      function:
        definition: consume;supply
      bindings:
        consume-in-0:
          destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
        supply-out-0:
          destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
      servicebus:
        bindings:
          consume-in-0:
            consumer:
              auto-complete: false
          supply-out-0:
            producer:
              entity-type: queue #set as topic if needed

메모

사용 가능한 가장 안전한 인증 흐름을 사용하는 것이 권장됩니다. 데이터베이스, 캐시, 메시징 또는 AI 서비스와 같이 이 절차에서 설명하는 인증 흐름은 애플리케이션에 대한 신뢰 수준이 매우 높고 다른 흐름에 존재하지 않는 위험을 수반합니다. 암호 없는 연결 또는 키 없는 연결에 대한 관리 ID와 같은 더 안전한 옵션이 실행 가능하지 않은 경우에만 이 흐름을 사용합니다. 로컬 컴퓨터 작업의 경우 암호 없는 연결이나 키 없는 연결에 사용자 ID를 사용하는 것이 좋습니다.

연결 문자열 대신 보안 주체를 사용하는 경우 4.0 이전 버전에서 애플리케이션은 먼저 제공된 보안 주체를 사용하여 ARM(Azure Resource Manager)에 연결한 다음 ARM을 사용하여 지정된 네임스페이스의 연결 문자열을 검색합니다. 결국 애플리케이션은 검색된 연결 문자열을 사용하여 Azure Service Bus에 연결합니다. 이러한 방식으로 제공된 보안 주체는 연결된 Azure Service Bus 네임스페이스를 검색할 기여자 역할을 부여해야 합니다.

Azure Spring Apps 4.0의 경우 인증을 위해 보안 주체를 활용하는 두 가지 방법을 제공합니다. 하나는 여전히 보안 주체를 사용하여 ARM에 연결하고 보안 주체에 Contributor 역할이 필요한 연결 문자열을 검색합니다. 다른 하나는 보안 주체를 활용하여 Microsoft Entra ID에 인증한 다음 Azure Service Bus에 직접 연결합니다. 이 경우 Contributor 역할은 더 이상 필요하지 않지만 메시징 작업에는 다른 Data 관련 역할이 필요합니다. 보안 주체에게 Azure 리소스에 액세스할 수 있는 충분한 권한이 부여되었는지 확인하려면 Microsoft Entra ID사용하여 액세스 권한 부여를 참조하세요.

ARM 기반 인증의 경우 서비스 주체를 예로 들어 할당된 역할이 변경되지 않아야 하는 구성 마이그레이션이 다음과 같이 나열됩니다.

레거시 구성:

spring:
  cloud:
    azure:
      client-id: ${AZURE_CLIENT_ID}
      client-secret: ${AZURE_CLIENT_SECRET}
      tenant-id: <tenant>
      resource-group: ${SERVICEBUS_RESOURCE_GROUP}
      servicebus:
        namespace: ${SERVICEBUS_NAMESPACE}

메모

tenant-id 허용되는 값은 common, organizations, consumers또는 테넌트 ID입니다. 이러한 값에 대한 자세한 내용은 오류 AADSTS50020 잘못된 엔드포인트(개인 및 조직 계정) 섹션을 참조하세요. - ID 공급자의 사용자 계정이 테넌트존재하지 않습니다. 단일 테넌트 앱을 변환하는 방법에 대한 자세한 내용은 Microsoft Entra ID단일 테넌트 앱을 다중 테넌트로 변환을 참조하세요.

최신 구성, Azure 구독 ID 및 리소스 그룹에 대한 속성이 필요합니다.

spring:
  cloud:
    azure:
      credential:
        client-id: ${AZURE_CLIENT_ID}
        client-secret: ${AZURE_CLIENT_SECRET}
      profile:
        tenant-id: <tenant>
        subscription-id: ${AZURE_SUBSCRIPTION_ID}
      servicebus:
        namespace: ${SERVICEBUS_NAMESPACE}
        resource:
          resource-group: ${SERVICEBUS_RESOURCE_GROUP}

메모

tenant-id 허용되는 값은 common, organizations, consumers또는 테넌트 ID입니다. 이러한 값에 대한 자세한 내용은 오류 AADSTS50020 잘못된 엔드포인트(개인 및 조직 계정) 섹션을 참조하세요. - ID 공급자의 사용자 계정이 테넌트존재하지 않습니다. 단일 테넌트 앱을 변환하는 방법에 대한 자세한 내용은 Microsoft Entra ID단일 테넌트 앱을 다중 테넌트로 변환을 참조하세요.

ARM으로 우회하지 않고 Microsoft Entra ID로 직접 인증 및 권한을 부여하도록 마이그레이션할 수도 있습니다. 메시징 작업에 필요한 보안 주체 Data 역할을 부여해야 합니다. 서비스 주체 및 관리 ID의 구성 예제는 다음과 같습니다.

  • 서비스 주체를 사용하는 경우

    spring:
      cloud:
        azure:
          credential:
            client-id: ${AZURE_CLIENT_ID}
            client-secret: ${AZURE_CLIENT_SECRET}
          profile:
            tenant-id: <tenant>
          servicebus:
            namespace: ${SERVICEBUS_NAMESPACE}
    

메모

tenant-id 허용되는 값은 common, organizations, consumers또는 테넌트 ID입니다. 이러한 값에 대한 자세한 내용은 오류 AADSTS50020 잘못된 엔드포인트(개인 및 조직 계정) 섹션을 참조하세요. - ID 공급자의 사용자 계정이 테넌트존재하지 않습니다. 단일 테넌트 앱을 변환하는 방법에 대한 자세한 내용은 Microsoft Entra ID단일 테넌트 앱을 다중 테넌트로 변환을 참조하세요.

  • 관리 ID를 사용하는 경우

    spring:
      cloud:
        azure:
          credential:
            managed-identity-enabled: true
            client-id: ${AZURE_MANAGED_IDENTITY_CLIENT_ID} # Only needed when using a user-assigned   managed identity
          servicebus:
            namespace: ${SERVICEBUS_NAMESPACE}
    

API 변경 내용

  • 메시지 헤더 AzureHeaders.RAW_ID삭제합니다. 대신 ServiceBusMessageHeaders.MESSAGE_ID 사용합니다.

다음 표에서는 azure-spring-cloud-stream-binder-eventhubsspring-cloud-azure-stream-binder-eventhubs클래스 매핑을 보여 줍니다.

레거시 클래스 최신 클래스
com.azure.spring.integration.core.AzureHeaders com.azure.spring.messaging.AzureHeaders
com.azure.spring.integration.servicebus.converter.ServiceBusMessageHeaders com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders
com.azure.spring.integration.core.api.Checkpointer com.azure.spring.messaging.checkpoint.Checkpointer

azure-spring-cloud-messaging

com.azure.spring:azure-spring-cloud-messaging 라이브러리는 4.0에 대해 준비되지 않았습니다. 수신기 주석의 함수는 다시 디자인 중이므로 @AzureMessageListener, @AzureMessageListeners@EnableAzureMessaging 주석은 현재 지원되지 않습니다.