Поделиться через


Руководство по миграции для Spring Cloud Azure 4.0

Это руководство помогает выполнить миграцию в Spring Cloud Azure 4.0 из устаревших библиотек Azure Spring.

Введение

Мы вызовем библиотеки, идентификатор группы и артефакты которых соответствуют шаблону 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-* пакет.

Если вы не знакомы с библиотеками Azure Spring Cloud 4.0, ознакомьтесь с руководством разработчика Spring Cloud, а не с этим руководством.

Преимущества переноса

Естественный вопрос, который следует задать при рассмотрении того, следует ли принять новую версию или библиотеку, является его преимуществами. По мере того как Azure зрела и была принята более разнообразной группой разработчиков, мы были сосредоточены на изучении шаблонов и методик, чтобы обеспечить поддержку производительности разработчиков и понять пробелы, которые имеют библиотеки Azure Spring Cloud.

В библиотеках Azure Spring Cloud было выражено несколько областей согласованной обратной связи. Наиболее важным является то, что библиотеки для разных служб Azure не включили полный набор конфигураций. Кроме того, несоответствие именования проектов, идентификаторов артефактов, версий и конфигураций сделало кривую обучения крутой.

Чтобы улучшить возможности разработки в библиотеках Azure Spring Cloud, был представлен набор рекомендаций по проектированию, чтобы гарантировать, что библиотеки Azure Spring Cloud имеют естественное и идиоматичное чувство в отношении экосистемы Spring. Дополнительные сведения см. в документации по проектированию для заинтересованных пользователей.

Spring Cloud Azure 4.0 предоставляет общий интерфейс между библиотеками, интегрирующимися с различными проектами Spring Boot, Spring Boot, Spring Integration, Spring Cloud Stream и т. д. Общий интерфейс включает в себя:

  • Унифицированный BOM для включения всех библиотек Azure 4.0 Spring Cloud.
  • Согласованное соглашение об именовании артефактов.
  • Единый способ настройки учетных данных, прокси-сервера, повторных попыток, облачной среды и параметров транспортного слоя.
  • Поддержка всех методов проверки подлинности, поддерживаемых службой Azure или пакетом SDK службы Azure.

Обзор

Это руководство по миграции состоит из следующих разделов:

  • Изменения именования для Spring Cloud Azure 4.0
  • Изменения артефакта: переименовано/ добавлено или удалено
  • Изменения зависимостей
  • Изменения проверки подлинности
  • Свойства конфигурации
  • Критические изменения API
  • Изменения библиотеки

Изменение имен.

Никогда не было согласованного или официального имени для вызова всех библиотек Azure Spring Cloud. Некоторые из них были вызваны Azure Spring Boot и некоторые из них Spring on Azure. С 4.0 мы начали использовать имя Spring Cloud Azure проекта для представления всех библиотек Azure Spring.

Спецификация

Мы использовали для отправки двух BOM для наших библиотек, azure-spring-boot-bom и azure-spring-cloud-dependencies, но мы объединили эти два BOM в один BOM с 4.0, .spring-cloud-azure-dependencies Добавьте запись в dependencyManagement раздел проекта, чтобы воспользоваться управлением зависимостями.

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

Примечание.

Если вы используете Spring Boot 3.x, обязательно установите для нее spring-cloud-azure-dependencies значение 5.8.0. Дополнительные сведения о версии см. в spring-cloud-azure-dependencies статье "Какая версия Spring Cloud Azure должна использоваться".

Изменения артефакта: переименовано/ добавлено или удалено

Идентификаторы групп совпадают с современными и устаревшими библиотеками Azure Spring Cloud. Они все com.azure.spring. Идентификаторы артефактов для современных библиотек Azure Spring Cloud изменились. Согласно проекту Spring, которому он принадлежит, Spring Boot, Spring Integration или Spring Cloud Stream, шаблон идентификаторов артефактов может быть spring-cloud-azure-starter-[service], spring-integration-azure-[service]или spring-cloud-azure-stream-binder-[service]. Устаревшие начальные элементы для каждого из них имеют идентификатор артефакта после шаблона azure-spring-*. Это обеспечивает быстрые и доступные средства, помогающие понять, используете ли вы современные или устаревшие начальные элементы.

В процессе разработки Spring Cloud Azure 4.0 мы переименовали некоторые артефакты, чтобы сделать их новыми соглашениями об именовании, удалили некоторые артефакты, чтобы функциональные возможности могли быть помещены в более подходящий артефакт, и добавили некоторые новые артефакты, чтобы лучше служить некоторым сценариям.

В следующей таблице показаны сопоставления между устаревшим идентификатором артефакта и современным идентификатором артефакта:

Устаревший идентификатор артефакта Идентификатор современного артефакта Description
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 Переименован артефакт для добавления data, указывающий на использование Spring Data Azure Cosmos DB.
azure-spring-boot-starter-keyvault-certificates Неприменимо Не входит в этот выпуск, но будет поддерживаться в более поздней версии.
azure-spring-boot-starter-keyvault-secret spring-cloud-azure-starter-keyvault-secret Переименован артефакт.
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 Переименован артефакт для добавления integration, указывающий использование Spring Integration с Центрами событий.
azure-spring-cloud-starter-servicebus spring-cloud-azure-starter-integration-servicebus Переименован артефакт для добавленияintegration, указывающий использование Spring Integration с служебная шина.
azure-spring-cloud-starter-storage-queue spring-cloud-azure-starter-integration-storage-queue Переименован артефакт для добавленияintegration, указывающий использование Spring 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 Недавно добавлен артефакт Azure Actuator Spring Cloud.
Неприменимо spring-cloud-azure-actuator-autoconfigure Недавно добавлен артефакт AutoConfigure Azure Spring Cloud Azure Actuator, включая автонастройку для актуатора.
Неприменимо spring-cloud-azure-autoconfigure Недавно добавлен артефакт Azure AutoConfigure Spring Cloud, включая всю автоматическую настройку для клиентов SDK, поддержку Spring Security, поддержку Spring Data и поддержку Spring Integration.
Неприменимо 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 Добавлен новый начальный код для использования клиента пакета SDK Конфигурация приложений Azure.
Неприменимо spring-cloud-azure-starter-cosmos Добавлен новый начальный код для использования клиента пакета SDK Для Azure Cosmos DB.
Неприменимо spring-cloud-azure-starter-eventhubs Добавлен новый начальный элемент для использования клиента пакета SDK Центры событий Azure.
Неприменимо spring-cloud-azure-starter-servicebus Добавлен новый начальный элемент для использования клиента пакета SDK для Служебная шина Azure.
Неприменимо spring-cloud-azure-starter-storage-blob Добавлен новый начальный элемент для использования служба хранилища Azure клиента пакета SDK ДЛЯ BLOB-объектов.
Неприменимо spring-cloud-azure-starter-storage-file-share Добавлен новый начальный элемент для использования клиента пакета SDK для файлового ресурса служба хранилища Azure.
Неприменимо spring-cloud-azure-starter-storage-queue Добавлен новый начальный элемент для использования клиента пакета SDK для очередей служба хранилища Azure.
Неприменимо spring-cloud-azure-starter-stream-eventhubs Добавлен новый начальный модуль для использования Центры событий Azure Spring Cloud Stream Binder.
Неприменимо spring-cloud-azure-starter-stream-servicebus Добавлен новый начальный модуль для использования Служебная шина Azure Spring Cloud Stream Binder
Неприменимо Spring-cloud-azure-stream-binder-eventhubs-core Добавлен новый артефакт Core Spring Cloud Stream для Центры событий Azure.

Изменения зависимостей

Некоторые ненужные зависимости были включены в устаревшие артефакты, которые мы удалили в современных библиотеках Spring Cloud Azure 4.0. Обязательно добавьте удаленные зависимости вручную в проект, чтобы предотвратить сбои.

К библиотекам, которые имеют изменения зависимостей, относятся:

Изменения проверки подлинности

Spring Cloud Azure 4.0 поддерживает все методы проверки подлинности, поддерживаемые каждым пакетом SDK службы Azure. Он позволяет настроить учетные данные глобального токена, а также предоставить учетные данные маркера на каждом уровне обслуживания. Но учетные данные не требуются для настройки Spring Cloud Azure 4.0, так как они могут применять учетные данные, хранящиеся в локальной среде разработки или управляемом удостоверении в службах Azure. Просто убедитесь, что субъект получил достаточно разрешений для доступа к целевым ресурсам Azure.

Примечание.

При назначении ролей субъектам безопасности для взаимодействия со службами Data обмена сообщениями Azure связанные роли требуются для проведения операций обмена сообщениями. Для Центров событий Azure Spring Apps Stream / служебная шина Библиотеки Contributor привязывателя требуется роль, когда требуется функция автоматического создания ресурсов. Дополнительные сведения см. в статье Встроенные роли Azure.

Цепочки учетных данных, DefaultAzureCredential bean автоматически настраивается по умолчанию и будет использоваться всеми компонентами, если больше сведений о проверке подлинности не указано. Дополнительные сведения см. в разделе DefaultAzureCredential клиентской библиотеки удостоверений Azure для Java.

Свойства конфигурации

Миграция свойств

Мы создали файл дополнительных spring-configuration-metadata.json , чтобы сгладить миграцию свойств при использовании 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. Если есть замена, он временно переназначит свойство для вас с предупреждением. Если нет замены, отчет об ошибке даст вам дополнительные сведения. В любом случае необходимо обновить конфигурацию и удалить зависимость после обновления конфигурации.

Прежде чем перейти, рекомендуется использовать функцию поиска интегрированной среды разработки для двойного проверка, которые вы не используете одно из свойств, перенесенных в тесте интеграции.

Примечание.

Мы изменили множество свойств конфигурации в этом изменении. spring-boot-properties-migrator Использование поможет сгладить миграцию.

Глобальные конфигурации

Современный spring-cloud-azure-starter позволяет определить свойства, которые применяются ко всем пакетам SDK Azure в пространстве spring.cloud.azureимен. Эта функция не поддерживается в устаревшей azure-spring-boot-starterверсии. Глобальные конфигурации можно разделить на пять категорий, показанных в следующей таблице:

Префикс Description
spring.cloud.azure.client Настраивает клиенты транспорта под каждым пакетом SDK Azure.
Spring.cloud.azure.credential Настраивает проверку подлинности с помощью идентификатора Microsoft Entra.
Spring.cloud.azure.profile Настраивает облачную среду Azure.
Spring.cloud.azure.proxy Настраивает параметры прокси-сервера, применяется ко всем клиентам Пакета SDK Azure.
Spring.cloud.azure.retry Настраивает параметры повторных попыток, применяется ко всем клиентам Пакета SDK Azure. Параметры повторных попыток поддерживают часть пакетов SDK, нет spring.cloud.azure.cosmos.retry.

Полный список конфигураций см. в разделе "Свойства конфигурации Spring Cloud Azure".

Настройка каждого пакета SDK

Дополнительные сведения о параметрах конфигурации на уровне пакета SDK см. по следующим ссылкам:

Критические изменения API

Дополнительные сведения о критических изменениях API в каждой библиотеке см. по следующим ссылкам:

Изменения библиотеки

Критические изменения в каждой библиотеке представлены следующим образом.

Начиная с azure-spring-boot-starter до spring-cloud-azure-starter

Это руководство предназначено для поддержки миграции в spring-cloud-azure-starter с версии 3 azure-spring-boot-starter.

Для получения общих сведений используйте следующие ссылки:

Изменения зависимостей

Некоторые ненужные зависимости были включены в устаревшие артефакты, которые мы удалили в современных библиотеках Spring Cloud Azure 4.0. Обязательно добавьте удаленные зависимости вручную в проект, чтобы предотвратить непреднамеренный сбой.

В следующей таблице показаны удаленные зависимости:

Удалены зависимости Description
org.springframework.boot:spring-boot-starter-validation Включите начальный модуль проверки, если вы хотите использовать проверяющий элемент Hibernate.

Из azure-spring-boot-starter-active-directory в spring-cloud-azure-starter-active-directory

Это руководство предназначено для поддержки миграции в spring-cloud-azure-starter-active-directory с версии 3 azure-spring-boot-starter-active-directory.

Для получения общих сведений используйте следующие ссылки:

Изменения зависимостей

Некоторые ненужные зависимости в устаревшем артефакте были удалены с современной библиотеки Spring Cloud Azure 4.0. Добавьте эти удаленные зависимости в проект, чтобы предотвратить непреднамеренный сбой.

В следующей таблице показаны удаленные зависимости:

Удалены зависимости Description
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. Новое свойство spring.cloud.azure.active-directory.enabled добавляется для включения и отключения связанных функций Microsoft Entra. Значение по умолчанию — 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-client
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. область spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME. область
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-жизнь spring.cloud.azure.active-directory.jwk-set-cache-жизни.
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-group-name spring.cloud.azure.active-directory.user-group.allowed-group-group-name
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 заменена 2 свойствами: spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint и spring.cloud.azure.active-directory.user-group.use-transitive-members. Первое свойство используется для указания имени узла, а второй флаг для использования 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

Это руководство предназначено для поддержки миграции в spring-cloud-azure-starter-active-directory-b2c версии 3 azure-spring-boot-starter-active-directory-b2c.

Для получения общих сведений используйте следующие ссылки:

Изменения зависимостей

Некоторые ненужные зависимости были включены в устаревшие артефакты, которые мы удалили в современных библиотеках Spring Cloud Azure 4.0. Обязательно добавьте удаленные зависимости вручную в проект, чтобы предотвратить непреднамеренный сбой.

В следующей таблице показаны удаленные зависимости:

Удалены зависимости Description
org.springframework.boot:spring-boot-starter-validation Включите начальный модуль проверки, если вы хотите использовать проверяющий элемент Hibernate.

Изменения конфигурации пакета SDK

В этом разделе содержатся изменения о добавленных, удаленных и измененных свойствах.

  • Следующие два пункта являются основными, чтобы обратить внимание на:
  1. Все имена свойств конфигурации изменили префикс на azure.activedirectory.b2cspring.cloud.azure.active-directory.b2c.
  2. Новое свойство spring.cloud.azure.active-directory.b2c.enabled добавляется, чтобы разрешить включение и отключение связанных функций Azure AD B2C. По умолчанию используется значение 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-client spring.cloud.azure.active-directory.b2c.authorization-client
azure.activedirectory.b2c.authorization-client.<>тип AZURE_CLIENT_NAME.authorization-grant-type spring.cloud.azure.active-directory.b2c.authorization-client.<>тип AZURE_CLIENT_NAME.authorization-grant-type
azure.activedirectory.b2c.authorization-client.<>AZURE_CLIENT_NAME.областьs spring.cloud.azure.active-directory.b2c.authorization-client.<>AZURE_CLIENT_NAME.областьs
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-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

Это руководство предназначено для поддержки миграции в spring-cloud-azure-starter-data-cosmos версии 3 azure-spring-boot-starter-cosmos.

Для получения общих сведений используйте следующие ссылки:

Изменения конфигурации пакета SDK

Все имена свойств конфигурации изменили префикс на azure.cosmosspring.cloud.azure.cosmos.

В следующей таблице показаны сопоставления классов от azure-spring-boot-starter-cosmosspring-cloud-azure-starter-data-cosmos:

Устаревшие свойства Современные свойства
режим azure.cosmos.connection-mode Spring.cloud.azure.cosmos.connection-mode
уровень согласованности azure.cosmos.consistency spring.cloud.azure.cosmos.consistency-level
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-secret в spring-cloud-azure-starter-keyvault-secret

Это руководство предназначено для поддержки миграции в spring-cloud-azure-starter-keyvault-secret из версии 3 azure-spring-boot-starter-keyvault-secret.

Для получения общих сведений используйте следующие ссылки:

Изменения конфигурации пакета SDK

В этом разделе содержатся изменения о добавленных, удаленных и измененных свойствах.

В следующей таблице показаны сопоставления свойств от azure-spring-boot-starter-keyvault-secretsspring-cloud-azure-starter-keyvault-secrets:

Устаревшие свойства Современные свойства
azure.keyvault.case-sensitive-keys spring.cloud.azure.keyvault.secret.property-source[n].case-sensitive
azure.keyvault.certificate-password 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
azure.keyvault.client-id 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 Больше не поддерживается. Вместо этого используйте порядок в свойстве-источнике[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
azure.keyvault.tenant-id 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-secret

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 (например SecretClient , и SecretAsyncClient) и добавление KeyVaultPropertySource в ConfigurableEnvironmentнего.
  3. spring.cloud.azure.keyvault.secret.property-source-enabled используется для включения всех KeyVaultPropertySource. Оно вступит в силу только в том случае, если spring.cloud.azure.keyvault.secret.enabled=true.
  4. Для общих свойств Azure(напримерclient, , retryproxy, 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

Это руководство предназначено для поддержки миграции в spring-cloud-azure-starter-servicebus-jms версии 3 azure-spring-boot-starter-servicebus-jms.

Для получения общих сведений используйте следующие ссылки:

Изменения конфигурации пакета SDK

Тип конфигурации для spring.jms.servicebus.idle-timeout изменения long(миллисекунда) на Duration шаблон для удобства чтения.

С azure-spring-boot-starter-storage до spring-cloud-azure-starter-storage-blob

Это руководство предназначено для поддержки миграции в spring-cloud-azure-starter-storage-blob версии 3 azure-spring-boot-starter-storage.

Для получения общих сведений используйте следующие ссылки:

Изменения конфигурации пакета 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.Azure служба хранилища ProtocolResolver com.azure.spring.core.resource.Azure служба хранилища BlobProtocolResolver
com.azure.spring.autoconfigure.storage.resource.Blob служба хранилища Resource com.azure.spring.core.resource. служба хранилища BlobResource
com.azure.spring.autoconfigure.storage.resource.Azure служба хранилища ResourcePatternResolver com.azure.spring.core.resource.Azure служба хранилища BlobProtocolResolver

Из azure-spring-boot-starter-storage в spring-cloud-azure-starter-storage-file-share

Это руководство предназначено для поддержки миграции в spring-cloud-azure-starter-storage-file-share версии 3 azure-spring-boot-starter-storage.

Для получения общих сведений используйте следующие ссылки:

Изменения конфигурации пакета 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.Azure служба хранилища ProtocolResolver com.azure.spring.core.resource.Azure служба хранилища FileProtocolResolver
com.azure.spring.autoconfigure.storage.resource.File служба хранилища Resource com.azure.spring.core.resource. служба хранилища FileResource
com.azure.spring.autoconfigure.storage.resource.Azure служба хранилища ResourcePatternResolver com.azure.spring.core.resource.Azure служба хранилища FileProtocolResolver

С azure-spring-cloud-starter-eventhubs до spring-cloud-azure-starter-integration-eventhubs

Это руководство предназначено для поддержки миграции в spring-cloud-azure-starter-integration-eventhubs из версии 2 azure-spring-cloud-starter-eventhubs.

Для получения общих сведений используйте следующие ссылки:

Изменения конфигурации пакета 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.проверкаучетная запись point-storage spring.cloud.azure.eventhubs.processor.проверкаpoint-store.account-name
Spring.cloud.azure.eventhub.проверкаключ точки доступа spring.cloud.azure.eventhubs.processor.проверкаpoint-store.account-key
Spring.cloud.azure.eventhub.проверкаpoint-container spring.cloud.azure.eventhubs.processor.проверкаpoint-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}

Изменения API

  • Сведения об изменениях примечаний прослушивателя см. в руководстве <<по миграции в библиотеке сообщений migration-azure-spring-cloud-messaging, azure-spring-cloud-messaging>> .
  • Удалите EventHubOperation с функцией подписки, перемещенной в класс EventHubsMessageListenerContainer , и функция отправки перемещена в EventHubsTemplate.
  • Переименуйте EventHubInboundChannelAdapter имя EventHubsInboundChannelAdapter в соответствии со службой Центры событий Azure.
  • Изменение конструктора на EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String)EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer) и EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode).
  • Измените CheckpointConfig стиль экземпляра на простой конструктор вместо стиля сборки.
  • Удалить API EventHubOperation#setCheckpointConfig. Чтобы задать конфигурацию проверка point для адаптера входящего канала, пользователи могут вызвать метод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.
  • При публикации сообщений в Центры событий игнорируйте все заголовки сообщений, преобразованные из пакетных сообщений. К заголовкам относятся:
    • 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 проверка point работает только в пакетном режиме, который можно включить, передав ListenerMode.BATCH в конструктор EventHubsInboundChannelAdapter.

В следующей таблице показаны сопоставления классов от 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. проверка point. Контрольная точкаConfig
com.azure.spring.integration.core.api.CheckpointMode com.azure.spring.messaging.eventhubs.core. проверка point. Контрольная точкаMode
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging. проверка point. Контрольный контрольный пункт
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

Это руководство предназначено для поддержки миграции на spring-integration-azure-eventhubs с версии 2 azure-spring-integration-eventhubs.

  • Общие сведения об изменениях в версии 4.0 см. в разделах "Введение и миграция".
  • Дополнительные сведения об изменениях стратегии в именовании проекта см . в разделе об изменениях именования.
  • Сведения об использовании одного BOM для всех библиотек Azure Spring Cloud см. в разделе BOM .

Изменения API

  • Удалите EventHubOperation с функцией подписки, перемещенной в класс EventHubsMessageListenerContainer , и функция отправки перемещена в EventHubsTemplate.
  • Переименуйте EventHubInboundChannelAdapter имя EventHubsInboundChannelAdapter в соответствии со службой Центры событий Azure.
  • Изменение конструктора на EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String)EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer) и EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode).
  • Измените CheckpointConfig стиль экземпляра на простой конструктор вместо стиля сборки.
  • Удалить API EventHubOperation#setCheckpointConfig. Чтобы задать конфигурацию проверка point для адаптера входящего канала, пользователи могут вызвать метод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.
  • При публикации сообщений в Центры событий игнорируйте все заголовки сообщений, преобразованные из пакетных сообщений. К заголовкам относятся:
    • 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 проверка point работает только в пакетном режиме, который можно включить, передав ListenerMode.BATCH в конструктор EventHubsInboundChannelAdapter.

В следующей таблице показаны сопоставления классов от 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. проверка point. Контрольная точкаConfig
com.azure.spring.integration.core.api.CheckpointMode com.azure.spring.messaging.eventhubs.core. проверка point. Контрольная точкаMode
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging. проверка point. Контрольный контрольный пункт
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

Это руководство предназначено для поддержки миграции в spring-cloud-azure-starter-integration-servicebus версии 2 azure-spring-cloud-starter-servicebus.

Для получения общих сведений используйте следующие ссылки:

Изменения конфигурации пакета 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-retries spring.cloud.azure.servicebus.retry.exponential.max-retries или spring.cloud.azure.servicebus.retry.fixed.max-retries, следует настроить в зависимости от spring.cloud.azure.servicebus.retry.mode=fixed или экспоненциальной
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=fixed или экспоненциальной
spring.cloud.azure.servicebus.retry-options.max-delay spring.cloud.azure.servicebus.retry.exponential.max-delay
spring.cloud.azure.servicebus.retry-options.try-timeout spring.cloud.azure.servicebus.retry.try-timeout

Изменения API

  • Удалите ServiceBusQueueOperation и ServiceBusTopicOperation с функцией подписки, перемещенной в класс ServiceBusMessageListenerContainer , и функция отправки перемещена в ServiceBusTemplate.
  • Удалите и ServiceBusTopicInboundChannelAdapterпереместите ServiceBusQueueInboundChannelAdapter функциональные возможности для прослушивания сущности очереди и раздела служебная шина в ServiceBusInboundChannelAdapter.
  • Изменение конструктора на ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) и ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Изменение конструктора на ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) и ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Удаление API ServiceBusQueueOperation#setCheckpointConfig и ServiceBusTopicOperation#setCheckpointConfig. Чтобы задать конфигурацию проверка point для адаптера входящего канала, пользователи могут вызывать методServiceBusContainerProperties#setAutoComplete. Чтобы отключить режим автоматического завершения, эквивалентен режиму MANUAL проверка point и включить его активациюRECORD.
  • Удаление API ServiceBusQueueOperatio#setClientConfig и ServiceBusTopicOperation#setClientConfig. Чтобы настроить базовый объект ServiceBusProcessorClient , используемый адаптером входящего канала, пользователи могут использовать ServiceBusContainerProperties вместо этого.
  • Удалите CompletableFuture поддержку ServiceBusTemplate и DefaultMessageHandler, вместо этого, поддержку Reactor .
  • Добавьте новый APIServiceBusTemplate#setDefaultEntityType, чтобы указать тип сущности, который требуется, если для нее ProducerProperties#entityTypeне указана частьPropertiesSupplier&lt;String, ProducerProperties&gt;.
  • Удаление заголовка 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

Это руководство предназначено для поддержки миграции на spring-integration-azure-servicebus с версии 2 azure-spring-integration-servicebus.

  • Общие сведения об изменениях в версии 4.0 см. в разделах "Введение и миграция".
  • Дополнительные сведения об изменениях стратегии в именовании проекта см . в разделе об изменениях именования.
  • Сведения об использовании одного BOM для всех библиотек Azure Spring Cloud см. в разделе BOM .

Изменения API

  • Удалите ServiceBusQueueOperation и ServiceBusTopicOperation с функцией подписки, перемещенной в класс ServiceBusMessageListenerContainer , и функция отправки перемещена в ServiceBusTemplate.
  • Удалите и ServiceBusTopicInboundChannelAdapterпереместите ServiceBusQueueInboundChannelAdapter функциональные возможности для прослушивания сущности очереди и раздела служебная шина в ServiceBusInboundChannelAdapter.
  • Изменение конструктора на ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) и ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Изменение конструктора на ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String)ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) и ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Удаление API ServiceBusQueueOperation#setCheckpointConfig и ServiceBusTopicOperation#setCheckpointConfig. Чтобы задать конфигурацию проверка point для адаптера входящего канала, пользователи могут вызывать методServiceBusContainerProperties#setAutoComplete. Чтобы отключить режим автоматического завершения, эквивалентен режиму MANUAL проверка point и включить его активациюRECORD.
  • Удаление API ServiceBusQueueOperation#setClientConfig и ServiceBusTopicOperation#setClientConfig. Чтобы настроить базовый объект ServiceBusProcessorClient , используемый адаптером входящего канала, пользователи могут использовать ServiceBusContainerProperties вместо этого.
  • Удалите CompletableFuture поддержку ServiceBusTemplate и DefaultMessageHandler, вместо этого, поддержку Reactor .
  • Добавьте новый APIServiceBusTemplate#setDefaultEntityType, чтобы указать тип сущности, который требуется, если для нее ProducerProperties#entityTypeне указана частьPropertiesSupplier&lt;String, ProducerProperties&gt;.
  • Удаление заголовка 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

Это руководство предназначено для поддержки миграции в spring-cloud-azure-starter-integration-storage-queue с версии 2 azure-spring-cloud-starter-storage-queue.

Для получения общих сведений используйте следующие ссылки:

Изменения конфигурации пакета 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

  • Удалите и укажите StorageQueueOperationStorageQueueTemplate вместо этого.
  • Удаление 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. служба хранилища QueueMessageConverter com.azure.spring.messaging.storage.queue.support.converter. служба хранилища QueueMessageConverter
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging. проверка point. Контрольный контрольный пункт
com.azure.spring.integration.storage.queue. служба хранилища QueueTemplate com.azure.spring.storage.queue.core. служба хранилища QueueTemplate
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler com.azure.spring.integration.core.handler.DefaultMessageHandler
com.azure.spring.integration.storage.queue.inbound. служба хранилища QueueMessageSource com.azure.spring.integration.storage.queue.inbound. служба хранилища QueueMessageSource

От azure-spring-integration-storage-queue до spring-integration-azure-storage-queue

Это руководство предназначено для поддержки миграции на spring-integration-azure-storage-queue с версии 2 azure-spring-integration-storage-queue.

  • Общие сведения об изменениях в версии 4.0 см. в разделах "Введение и миграция".
  • Дополнительные сведения об изменениях стратегии в именовании проекта см . в разделе об изменениях именования.
  • Сведения об использовании одного BOM для всех библиотек Azure Spring Cloud см. в разделе BOM .

Изменения API

  • Удалите и укажите StorageQueueOperationStorageQueueTemplate вместо этого.
  • Удаление 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. служба хранилища QueueMessageConverter com.azure.spring.messaging.storage.queue.support.converter. служба хранилища QueueMessageConverter
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging. проверка point. Контрольный контрольный пункт
com.azure.spring.integration.storage.queue. служба хранилища QueueTemplate com.azure.spring.storage.queue.core. служба хранилища QueueTemplate
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler com.azure.spring.integration.core.handler.DefaultMessageHandler
com.azure.spring.integration.storage.queue.inbound. служба хранилища QueueMessageSource com.azure.spring.integration.storage.queue.inbound. служба хранилища QueueMessageSource

Из azure-spring-cloud-stream-binder-eventhubs в spring-cloud-azure-stream-binder-eventhubs

Это руководство предназначено для поддержки миграции в spring-cloud-azure-stream-binder-eventhubs из версии 2 azure-spring-cloud-stream-binder-eventhubs.

Для получения общих сведений используйте следующие ссылки:

Изменения конфигурации пакета SDK

Важно!

Префикс конфигурации был изменен на spring.cloud.azure.eventhubspring.cloud.azure.eventhubs.

Важно!

Тип привязки переименовывается из: eventhub в eventhubs.

Изменения дочерних записей для следующего префикса см. в следующей таблице.

В следующей таблице показаны сопоставления свойств от 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.проверкаучетная запись point-storage spring.cloud.azure.eventhubs.processor.проверкаpoint-store.account-name
Spring.cloud.azure.eventhub.проверкаключ точки доступа spring.cloud.azure.eventhubs.processor.проверкаpoint-store.account-key
Spring.cloud.azure.eventhub.проверкаpoint-container spring.cloud.azure.eventhubs.processor.проверкаpoint-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.проверкарежим точки spring.cloud.stream.eventhubs.bindings.binding-name.consumer.проверкаpoint.mode
spring.cloud.stream.eventhub.bindings.binding-name.consumer.проверкачисло точек spring.cloud.stream.eventhubs.bindings.binding-name.consumer.проверкаpoint.count
spring.cloud.stream.eventhub.bindings.binding-name.consumer.проверкаинтервал точки spring.cloud.stream.eventhubs.bindings.binding-name.consumer.проверкаpoint.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 секции. Таким образом, ключ — это идентификатор секции, а значение состоит из 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

Если вы используете субъекты безопасности вместо строка подключения, в версиях до 4.0 приложение сначала подключается к Azure Resource Manager (ARM) с указанным субъектом безопасности, а затем извлекает строка подключения указанного пространства имен с помощью ARM. В конце концов приложение использует полученный строка подключения для подключения к Центры событий Azure. Таким образом, предоставленный субъект безопасности должен быть предоставлен ролью участника для получения связанного пространства имен Центры событий Azure.

Для Azure Spring Apps 4.0 мы предоставляем два способа использования субъектов безопасности для проверки подлинности. Один по-прежнему использует субъекты для подключения к ARM и получения строка подключения, где Contributor роль требуется для субъектов. Другие используют субъекты безопасности для проверки подлинности в идентификаторе Microsoft Entra ID, а затем подключаются к Центры событий Azure напрямую. В этом случае Contributor роль больше не требуется, а для операций обмена сообщениями требуются другие Data связанные роли. Чтобы убедиться, что субъекту безопасности предоставлено достаточное разрешение на доступ к ресурсу Azure, см. статью "Авторизация доступа с помощью идентификатора Microsoft Entra".

Для проверки подлинности на основе 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, organizationsconsumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе "Использована неправильная конечная точка (личные и учетные записи организации) в разделе "Ошибка" AADSTS50020 . Учетная запись пользователя от поставщика удостоверений не существует в клиенте. Сведения о преобразовании приложения с одним клиентом см. в разделе "Преобразование однотенантного приложения в мультитенантный" в идентификатор Microsoft Entra.

Требуется современная конфигурация, свойства для идентификатора подписки Azure и группы ресурсов:

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, organizationsconsumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе "Использована неправильная конечная точка (личные и учетные записи организации) в разделе "Ошибка" AADSTS50020 . Учетная запись пользователя от поставщика удостоверений не существует в клиенте. Сведения о преобразовании приложения с одним клиентом см. в разделе "Преобразование однотенантного приложения в мультитенантный" в идентификатор Microsoft Entra.

Вы также можете выполнить миграцию для проверки подлинности и авторизации с помощью идентификатора Microsoft Entra ID напрямую, не выполняя обход в ARM. Обязательно предоставьте субъекту безопасности необходимые Data роли для операций обмена сообщениями. Ниже перечислены примеры конфигурации субъекта-службы и управляемого удостоверения:

  • С субъектом-службой

    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, organizationsconsumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе "Использована неправильная конечная точка (личные и учетные записи организации) в разделе "Ошибка" AADSTS50020 . Учетная запись пользователя от поставщика удостоверений не существует в клиенте. Сведения о преобразовании приложения с одним клиентом см. в разделе "Преобразование однотенантного приложения в мультитенантный" в идентификатор Microsoft Entra.

  • С управляемым удостоверением

    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. проверка point. Контрольный контрольный пункт
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

Это руководство предназначено для поддержки миграции в spring-cloud-azure-stream-binder-servicebus версии 2 azure-spring-cloud-stream-binder-servicebus-queue или azure-spring-cloud-stream-binder-servicebus-topic.

Для получения общих сведений используйте следующие ссылки:

Изменения конфигурации пакета SDK

Важно!

Устаревшие либерные файлы привязки и azure-spring-cloud-stream-binder-servicebus-queueazure-spring-cloud-stream-binder-servicebus-topicтеперь они объединяются в одну spring-cloud-azure-stream-binder-servicebus.

Важно!

Тип привязки объединяется из servicebus-queue и servicebus-topic как servicebus.

В следующей таблице перечислены новые свойства spring-cloud-azure-stream-binder-servicebusконфигурации:

Современные свойства Description
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-retries spring.cloud.azure.servicebus.retry.exponential.max-retries или spring.cloud.azure.servicebus.retry.fixed.max-retries, следует настроить в зависимости от spring.cloud.azure.servicebus.retry.mode=fixed или экспоненциальной
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=fixed или экспоненциальной
spring.cloud.azure.servicebus.retry-options.max-delay spring.cloud.azure.servicebus.retry.exponential.max-delay
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-session/max-concurrent-calls
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.режим проверка point 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-session/max-concurrent-calls
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.режим проверка point spring.cloud.stream.servicebus.bindings.binding-name.consumer.автоматическое завершение

Примечание.

Свойство параллелизма будет заменено maxConcurrentSessions при использовании true sessionEnabled и maxConcurrentCalls при использовании sessionEnabled false.

Примечание.

Включение автоматического завершения равно режиму RECORD проверка point и наоборот режиму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

Если вы используете субъекты безопасности вместо строка подключения, в версиях до 4.0 приложение сначала подключается к Azure Resource Manager (ARM) с указанным субъектом безопасности, а затем извлекает строка подключения указанного пространства имен с помощью ARM. В конце концов приложение использует полученный строка подключения для подключения к Служебная шина Azure. Таким образом, предоставленный субъект безопасности должен быть предоставлен роли участника для получения связанного пространства имен Служебная шина Azure.

Для Azure Spring Apps 4.0 мы предоставляем два способа использования субъектов безопасности для проверки подлинности. Один по-прежнему использует субъекты для подключения к ARM и получения строка подключения, где Contributor роль требуется для субъектов. Другие используют субъекты безопасности для проверки подлинности в идентификаторе Microsoft Entra, а затем подключаются к Служебная шина Azure напрямую. В этом случае Contributor роль больше не требуется, а для операций обмена сообщениями требуются другие Data связанные роли. Чтобы убедиться, что субъекту безопасности предоставлено достаточное разрешение на доступ к ресурсу Azure, см. статью "Авторизация доступа с помощью идентификатора Microsoft Entra".

Для проверки подлинности на основе 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, organizationsconsumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе "Использована неправильная конечная точка (личные и учетные записи организации) в разделе "Ошибка" AADSTS50020 . Учетная запись пользователя от поставщика удостоверений не существует в клиенте. Сведения о преобразовании приложения с одним клиентом см. в разделе "Преобразование однотенантного приложения в мультитенантный" в идентификатор Microsoft Entra.

Требуется современная конфигурация, свойства для идентификатора подписки Azure и группы ресурсов:

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, organizationsconsumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе "Использована неправильная конечная точка (личные и учетные записи организации) в разделе "Ошибка" AADSTS50020 . Учетная запись пользователя от поставщика удостоверений не существует в клиенте. Сведения о преобразовании приложения с одним клиентом см. в разделе "Преобразование однотенантного приложения в мультитенантный" в идентификатор Microsoft Entra.

Вы также можете выполнить миграцию для проверки подлинности и авторизации с помощью идентификатора Microsoft Entra ID напрямую, не выполняя обход в ARM. Обязательно предоставьте субъекту безопасности необходимые Data роли для операций обмена сообщениями. Ниже перечислены примеры конфигурации субъекта-службы и управляемого удостоверения:

  • С субъектом-службой

    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, organizationsconsumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе "Использована неправильная конечная точка (личные и учетные записи организации) в разделе "Ошибка" AADSTS50020 . Учетная запись пользователя от поставщика удостоверений не существует в клиенте. Сведения о преобразовании приложения с одним клиентом см. в разделе "Преобразование однотенантного приложения в мультитенантный" в идентификатор Microsoft Entra.

  • С управляемым удостоверением

    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. проверка point. Контрольный контрольный пункт

azure-spring-cloud-messaging

Библиотека com.azure.spring:azure-spring-cloud-messaging не готова к версии 4.0. Функция примечаний прослушивателя находится под редизайном, поэтому @AzureMessageListener@AzureMessageListeners@EnableAzureMessaging в настоящее время не поддерживаются и заметки.