Краткое руководство: Создайте приложение Java Quarkus с помощью Azure App Configuration

В этом кратком руководстве описано, как включить конфигурацию приложений Azure в приложение Java Quarkus для централизованного хранения и управления параметрами приложения отдельно от кода.

Предпосылки

Добавление пары "ключ-значение"

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

Key Ценность
/application/config.message Привет

Создание приложения Quarkus

В этом разделе описано, как создать приложение Quarkus с расширением конфигурации приложений Azure и расширением REST. Расширение REST используется для создания службы REST, которая возвращает значение конфигурации из хранилища конфигурации приложений. Дополнительные сведения см. в разделе "Конфигурация приложений Azure Quarkus".

Создайте приложение Quarkus с помощью следующей команды:

mvn io.quarkus.platform:quarkus-maven-plugin:create \
    -DprojectGroupId=com.example \
    -DprojectArtifactId=quarkus-app-configuration \
    -Dextensions='io.quarkiverse.azureservices:quarkus-azure-app-configuration,rest' \
    -DjavaVersion="17"

Приложение создается в новом каталоге с именем quarkus-app-configuration. Ниже приведена структура приложения:

quarkus-app-configuration
├── src
│   ├── main/java/com/example
│   │   ├── GreetingResource.java
│   └── test/java/com/example
│       └── GreetingResourceTest.java
├── pom.xml

Файл pom.xml содержит зависимости для приложения, включая расширение конфигурации приложений Azure и расширение REST. Следующий XML-код является типичным примером:

<dependency>
    <groupId>io.quarkiverse.azureservices</groupId>
    <artifactId>quarkus-azure-app-configuration</artifactId>
</dependency>
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-rest</artifactId>
</dependency>

Файл GreetingResource.java содержит службу REST. Впоследствии вы измените этот файл, чтобы доставать значения конфигурации из хранилища конфигурирования приложения.

Файл GreetingResourceTest.java содержит модульный тест для службы REST. Вы изменяете этот файл, чтобы подтвердить, что значение, возвращаемое службой REST, равно значению в магазине конфигурации приложений.

Подключение к хранилищу конфигурации приложений

Теперь, когда у вас есть хранилище конфигурации приложений и приложение Quarkus с расширением конфигурации приложений Azure, вы можете подключить приложение к магазину.

Программирование приложения

Настройте приложение, выполнив следующие действия.

  1. Откройте файл GreetingResource.java в каталоге src/main/java/com/example и замените содержимое следующим кодом:

    package com.example;
    
    import jakarta.ws.rs.GET;
    import jakarta.ws.rs.Path;
    import jakarta.ws.rs.Produces;
    import jakarta.ws.rs.core.MediaType;
    
    import org.eclipse.microprofile.config.inject.ConfigProperty;
    
    @Path("/hello")
    public class GreetingResource {
    
        @ConfigProperty(name = "/application/config.message")
        String value;
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String hello() {
            return value;
        }
    }
    

    Измененный код использует заметку MicroProfile Config @ConfigProperty для внедрения значения ключа /application/config.message из хранилища value конфигурации приложений в поле и возвращает значение в службе REST.

  2. Откройте автоматически созданный модульный тест, который находится в файле GreetingResourceTest.java в каталоге src/test/java/com/example . Замените содержимое файла следующим кодом:

    package com.example;
    
    import io.quarkus.test.junit.QuarkusTest;
    import org.junit.jupiter.api.Test;
    
    import javax.inject.Inject;
    
    import static io.restassured.RestAssured.given;
    import static org.hamcrest.CoreMatchers.is;
    
    @QuarkusTest
    public class GreetingResourceTest {
        @Test
        public void testHelloEndpoint() {
            given()
                .when().get("/hello")
                .then()
                .statusCode(200)
                .body(is("Hello"));
        }
    }
    

    Измененный код утверждает, что значение, возвращаемое службой REST, равно значению в хранилище конфигурации приложений. Значение Hello предназначено для ключа /application/config.message, который вы добавили ранее.

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

Настройка проверки подлинности в хранилище конфигураций приложений

Помимо проверки подлинности с помощью ключей доступа, расширение Конфигурации приложений Azure Quarkus поддерживает проверку подлинности с помощью идентификатора Microsoft Entra, используемого DefaultAzureCredential из клиентской библиотеки удостоверений Azure.

Вы используете Microsoft Entra ID для аутентификации в этом кратком руководстве. Дополнительные сведения см. в клиентской библиотеке DefaultAzureCredentialудостоверений Azure для Java.

Настройте проверку подлинности в магазине конфигурации приложений, выполнив следующие действия.

  1. Задайте переменные среды с помощью следующих команд, заменив <...> заполнители значениями, созданными ранее:

    export RESOURCE_GROUP_NAME="<resource-group-name>"
    export APP_CONFIG_NAME="<app-configuration-store-name>"
    
  2. Используйте следующие команды, чтобы назначить App Configuration Data Reader роль пользователю, вошедшего в систему:

    # Retrieve the app configuration resource ID
    export APP_CONFIGURATION_RESOURCE_ID=$(az appconfig show \
        --resource-group $RESOURCE_GROUP_NAME \
        --name "${APP_CONFIG_NAME}" \
        --query 'id' \
        --output tsv)
    # Assign the "App Configuration Data Reader" role to the current signed-in identity
    az role assignment create \
        --assignee $(az ad signed-in-user show --query 'id' --output tsv) \
        --role "App Configuration Data Reader" \
        --scope $APP_CONFIGURATION_RESOURCE_ID
    
  3. Экспорт конечной точки хранилища конфигурации приложений в переменную среды с именем QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT с помощью следующей команды:

    export QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT=$(az appconfig show \
        --resource-group "${RESOURCE_GROUP_NAME}" \
        --name "${APP_CONFIG_NAME}" \
        --query endpoint \
        --output tsv)
    

    Замечание

    Значение переменной QUARKUS_AZURE_APP_CONFIGURATION_ENDPOINT среды используется в свойстве quarkus.azure.app.configuration.endpoint конфигурации расширения Конфигурации приложений Azure Quarkus для настройки подключения к хранилищу конфигурации приложений Azure. Кроме того, это свойство можно настроить в файле application.properties в каталоге src/main/resources , установив его напрямую, как показано в следующем примере. Не забудьте заменить <your-app-configuration-store-endpoint> вашим фактическим значением.

    quarkus.azure.app.configuration.endpoint=<your-app-configuration-store-endpoint>
    

Постройте и запустите приложение локально

Выполните сборку и запуск приложения локально, выполнив следующие действия.

  1. Используйте следующие команды для сборки и запуска приложения в режиме JVM:

    # Build, test and package the app
    mvn clean package
    
    # Run the app
    java -jar ./target/quarkus-app/quarkus-run.jar
    

    Замечание

    В качестве альтернативы можно запустить пример в родном режиме. Чтобы использовать режим собственного выполнения, необходимо установить GraalVM или использовать образ сборщика для создания исполняемого файла в режиме собственного выполнения. Дополнительные сведения см. в разделе "Создание собственного исполняемого файла". В этом кратком руководстве используется Docker в качестве среды выполнения контейнера для создания нативного исполняемого файла Linux. Если у вас нет Docker, его можно скачать на веб-сайте Docker.

    Используйте следующие команды для сборки и выполнения собственного исполняемого файла в среде Linux:

    mvn package -Dnative -Dquarkus.native.container-build
    ./target/storage-blob-1.0.0-SNAPSHOT-runner
    
  2. Протестируйте приложение с помощью следующей команды:

    curl localhost:8080/hello
    

    В результатах должно отображаться Hello, так как Hello является значением ключа /application/config.message, который вы добавили в хранилище конфигурации приложений.

  3. Нажмите клавиши Control+C, чтобы остановить приложение.

Очистите ресурсы

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

az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait

См. также