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-bom
및 azure-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-eventhubs spring-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
콩은 기본적으로 자동으로 구성되며 인증 정보가 더 이상 지정되지 않은 경우 모든 구성 요소에서 사용됩니다. 자세한 내용은 Java
구성 속성
속성 마이그레이션
사용할 때 속성 마이그레이션을 원활하게 하기 위해 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 수준의 구성 옵션에 대한 자세한 내용은 다음 링크를 사용합니다.
- 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
- 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
- azure-spring-boot-starter-storage에서 spring-cloud-azure-starter-storage-file-share
- azure-spring-cloud-starter-eventhubs에서 spring-cloud-azure-starter-integration-eventhubs
- azure-spring-cloud-starter-servicebus에서 spring-cloud-azure-starter-integration-servicebus
- azure-spring-cloud-starter-storage-queue에서 spring-cloud-azure-starter-integration-storage-queue
- azure-spring-cloud-stream-binder-eventhubs에서 spring-cloud-azure-stream-binder-eventhubs
- azure-spring-cloud-stream-binder-servicebus-*에서 spring-cloud-azure-stream-binder-servicebus
API 호환성이 손상되는 변경
각 라이브러리의 API 호환성이 손상되는 변경에 대한 자세한 내용은 다음 링크를 사용합니다.
- 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-Storage에서 spring-cloud-azure-starter-storage-blob
- azure-spring-boot-starter-storage에서 spring-cloud-azure-starter-storage-file-share
- azure-spring-cloud-starter-eventhubs에서 spring-cloud-azure-starter-integration-eventhubs
- azure-spring-integration-eventhubs에서 spring-integration-azure-eventhubs
- azure-spring-cloud-starter-servicebus에서 spring-cloud-azure-starter-integration-servicebus
- azure-spring-integration-servicebus에서 spring-integration-azure-servicebus
- azure-spring-cloud-starter-storage-queue에서 spring-cloud-azure-starter-integration-storage-queue
- azure-spring-integration-storage-queue에서 spring-integration-azure-storage-queue
- azure-spring-cloud-stream-binder-eventhubs에서 spring-cloud-azure-stream-binder-eventhubs
- azure-spring-cloud-stream-binder-servicebus-*에서 spring-cloud-azure-stream-binder-servicebus
라이브러리 변경 내용
각 라이브러리의 주요 변경 내용은 다음과 같이 도입됩니다.
azure-spring-boot-starter에서 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로
이 가이드는
일반 정보는 다음 링크를 사용합니다.
- 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 구성 변경 내용
이 섹션에는 추가, 제거 및 변경된 속성에 대한 변경 내용이 포함되어 있습니다.
- 다음 두 가지 사항은 주의해야 할 주요 사항입니다.
- 모든 구성 속성 이름의 접두사는
azure.activedirectory
spring.cloud.azure.active-directory
변경되었습니다. - Microsoft Entra 관련 기능을 사용하거나 사용하지 않도록 설정하기 위해 새 속성
spring.cloud.azure.active-directory.enabled
추가됩니다. 기본값은false
.
다음 표에서는 azure-spring-boot-starter-active-directory
spring-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 |
다음 속성의 값 형식이
long
Duration
변경됩니다.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-endpoint
및 spring.cloud.azure.active-directory.user-group.use-transitive-members
2개의 속성으로 대체되었습니다. 첫 번째 속성은 호스트 이름을 지정하는 데 사용되며, 두 번째 속성은 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-directory
spring-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
일반 정보는 다음 링크를 사용합니다.
- 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 구성 변경 내용
이 섹션에는 추가, 제거 및 변경된 속성에 대한 변경 내용이 포함되어 있습니다.
- 다음 두 가지 사항은 주의해야 할 주요 사항입니다.
- 모든 구성 속성 이름이 접두사를
azure.activedirectory.b2c
spring.cloud.azure.active-directory.b2c
변경했습니다. - Azure AD B2C 관련 기능을 사용하거나 사용하지 않도록 설정/해제할 수 있도록 새 속성
spring.cloud.azure.active-directory.b2c.enabled
추가됩니다. 기본값은 false입니다.
다음 표에서는 azure-spring-boot-starter-active-directory-b2c
spring-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를 |
spring.cloud.azure.active-directory.b2c.authorization-clients를 |
azure.activedirectory.b2c.authorization-clients를 |
spring.cloud.azure.active-directory.b2c.authorization-clients를 |
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
다음 속성의 값 형식이
long
Duration
변경됩니다.- jwt-connect-timeout
- jwt-read-timeout
API 변경 내용
다음 표에서는 azure-spring-boot-starter-active-directory-b2c
spring-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
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator
활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
모든 구성 속성 이름이 접두사를 azure.cosmos
spring.cloud.azure.cosmos
변경했습니다.
다음 표에서는 azure-spring-boot-starter-cosmos
spring-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
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator
활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
이 섹션에는 추가, 제거 및 변경된 속성에 대한 변경 내용이 포함되어 있습니다.
다음 표에서는 azure-spring-boot-starter-keyvault-secrets
spring-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 및 |
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
다음 사항에 주의해야 합니다.
- 모든 구성 속성 이름이 접두사를
azure.keyvault
spring.cloud.azure.keyvault.secret
변경했습니다. -
spring.cloud.azure.keyvault.secret.enabled
모든 Key Vault 비밀 기능을 사용하도록 설정하고, Key Vault 비밀 클라이언트 빈(예:SecretClient
및SecretAsyncClient
)을 구성하고,KeyVaultPropertySource
ConfigurableEnvironment
추가하는 데 사용됩니다. -
spring.cloud.azure.keyvault.secret.property-source-enabled
모든KeyVaultPropertySource
사용하도록 설정하는 데 사용됩니다.spring.cloud.azure.keyvault.secret.enabled=true
경우에만 적용됩니다. - 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
사용됩니다. -
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
일반 정보는 다음 링크를 사용합니다.
- 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으로
이 가이드는
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator
활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
모든 구성 속성 이름이 접두사를 azure.storage
spring.cloud.azure.storage.blob
변경했습니다.
다음 표에서는 azure-spring-boot-starter-storage
spring-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-storage
spring-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로
이 가이드는
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator
활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
모든 구성 속성 이름이 접두사를 azure.storage
spring.cloud.azure.storage.fileshare
변경했습니다.
다음 표에서는 azure-spring-boot-starter-storage
spring-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-storage
spring-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
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator
활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
중요하다
구성 접두사를 spring.cloud.azure.eventhub
spring.cloud.azure.eventhubs.
이 접두사에 대한 자식 항목에 대한 변경 내용은 다음 표를 참조하세요.
다음 표에서는 azure-spring-cloud-starter-eventhubs
spring-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_time
azure_eventhubs_batch_converted_enqueued_time
변경합니다. - 메시지 헤더를
azure_eventhub_offset
azure_eventhubs_batch_converted_offset
변경합니다. - 메시지 헤더를
azure_eventhub_sequence_number
azure_eventhubs_batch_converted_sequence_number
변경합니다. - 메시지 헤더를
azure_partition_key
azure_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-eventhubs
spring-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로
이 가이드는
- 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_time
azure_eventhubs_batch_converted_enqueued_time
변경합니다. - 메시지 헤더를
azure_eventhub_offset
azure_eventhubs_batch_converted_offset
변경합니다. - 메시지 헤더를
azure_eventhub_sequence_number
azure_eventhubs_batch_converted_sequence_number
변경합니다. - 메시지 헤더를
azure_partition_key
azure_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로
이 가이드는
일반 정보는 다음 링크를 사용합니다.
- 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-servicebus
spring-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-options.delay를 |
spring.cloud.azure.servicebus.retry.exponential.base-delay 또는 |
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
삭제하고ServiceBusTopicInboundChannelAdapter
Service 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<String, ProducerProperties>
대해ProducerProperties#entityType
빈이 제공되지 않는 경우에 필요합니다. - 메시지 헤더
AzureHeaders.RAW_ID
삭제합니다. 대신ServiceBusMessageHeaders.MESSAGE_ID
사용합니다.
다음 표에서는 azure-spring-cloud-starter-servicebus
spring-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로
이 가이드는
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
API 변경 내용
- 구독 함수가 클래스
ServiceBusQueueOperation
이동하고 보내는 함수가ServiceBusTopicOperation
이동한ServiceBusMessageListenerContainer
삭제하고ServiceBusTemplate
. -
ServiceBusQueueInboundChannelAdapter
삭제하고ServiceBusTopicInboundChannelAdapter
Service 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<String, ProducerProperties>
대해ProducerProperties#entityType
빈이 제공되지 않는 경우에 필요합니다. - 메시지 헤더
AzureHeaders.RAW_ID
삭제합니다. 대신ServiceBusMessageHeaders.MESSAGE_ID
사용합니다.
다음 표에서는 azure-spring-integration-servicebus
spring-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로
이 가이드는
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator
활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
모든 구성 속성 이름이 접두사를 spring.cloud.azure.storage
spring.cloud.azure.storage.queue
변경했습니다.
다음 표에서는 azure-spring-cloud-starter-storage-queue
spring-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-queue
spring-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로
이 가이드는
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
API 변경 내용
-
StorageQueueOperation
삭제하고 대신StorageQueueTemplate
제공합니다. -
checkpoint-mode
StorageQueueTemplate
구성을 삭제하고MANUAL
모드만 지원합니다.
다음 표에서는 azure-spring-integration-storage-queue
spring-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
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator
활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
중요하다
구성 접두사를 spring.cloud.azure.eventhub
spring.cloud.azure.eventhubs.
중요하다
바인더 형식의 이름이 eventhub
eventhubs
.
다음 접두사에 대한 자식 항목의 변경 내용은 다음 표를 참조하세요.
다음 표에서는 azure-spring-cloud-stream-binder-eventhubs
spring-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
열거형에서 각 파티션에 대한 map
StartPositionProperties
변경됩니다. 따라서 키는 파티션 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입니다. 이러한 값에 대한 자세한 내용은
최신 구성, 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입니다. 이러한 값에 대한 자세한 내용은
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입니다. 이러한 값에 대한 자세한 내용은
관리 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-eventhubs
spring-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
일반 정보는 다음 링크를 사용합니다.
- 4.0의 변경 내용에 대한 개요는 소개 및 마이그레이션 혜택 섹션을 참조하세요.
- 프로젝트 명명의 전략 변경에 대한 자세한 내용은 명명 변경 섹션을 참조하세요.
- 모든 Spring Cloud Azure 라이브러리에 하나의 BOM을 사용하는 방법을 알아보려면 BOM 섹션을 참조하세요.
- Spring Cloud Azure 4.0에서 인증을 처리하는 방법을 알아보려면 인증 변경 섹션을 참조하세요.
- 마이그레이션 중에
spring-boot-properties-migrator
활용하는 방법을 알아보려면 각 SDK 구성 섹션을 참조하세요. - 전역 및 일반적인 구성 변경에 대한 자세한 내용은 전역 구성 섹션을 참조하세요.
SDK 구성 변경 내용
중요하다
레거시 바인더 라이브러리는 azure-spring-cloud-stream-binder-servicebus-queue
azure-spring-cloud-stream-binder-servicebus-topic
이제 하나의 spring-cloud-azure-stream-binder-servicebus
병합됩니다.
중요하다
바인더 형식은 servicebus-queue
결합되고 servicebus-topic
servicebus
.
다음 표에서는 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-options.delay를 |
spring.cloud.azure.servicebus.retry.exponential.base-delay 또는 |
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입니다. 이러한 값에 대한 자세한 내용은
최신 구성, 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입니다. 이러한 값에 대한 자세한 내용은
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입니다. 이러한 값에 대한 자세한 내용은
관리 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-eventhubs
spring-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
주석은 현재 지원되지 않습니다.