Создание аренды контейнеров и управление ими с помощью Java
В этой статье показано, как создавать аренды контейнеров и управлять ими с помощью клиентской библиотеки служба хранилища Azure для Java. Клиентская библиотека может использовать для получения, продления, выпуска и прерывания аренды контейнеров.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Учетная запись хранения Azure — создайте такую учетную запись.
- Пакет средств разработки Java (JDK) версии 8 или более поздней версии (рекомендуется использовать версию 17 для оптимального взаимодействия)
- Apache Maven используется для управления проектами в этом примере
Настройка среды
Если у вас нет существующего проекта, в этом разделе показано, как настроить проект для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для Java. Дополнительные сведения см. в статье "Начало работы с Хранилище BLOB-объектов Azure и Java".
Чтобы работать с примерами кода в этой статье, выполните следующие действия, чтобы настроить проект.
Примечание.
В этой статье используется средство сборки Maven для создания и запуска примера кода. Для работы с пакетами SDK Azure для Java есть и другие средства сборки, например Gradle.
Установка пакетов
Откройте файл pom.xml
в текстовом редакторе. Установите пакеты, включив файл BOM или включив прямую зависимость.
Добавление инструкций импорта
Добавьте следующие операторы import
:
import com.azure.storage.blob.*;
import com.azure.storage.blob.specialized.*;
Авторизация
Механизм авторизации должен иметь необходимые разрешения для работы с арендой контейнера. Для авторизации с помощью идентификатора Microsoft Entra (рекомендуется), требуется встроенный участник данных хранилища BLOB-объектов хранилища ролей или более поздней версии. Дополнительные сведения см. в руководстве по авторизации контейнера аренды (REST API).
Создание клиентского объекта
Чтобы подключить приложение к хранилищу BLOB-объектов, создайте экземпляр BLOBServiceClient.
В следующем примере используется BLOBServiceClientBuilder для создания BlobServiceClient
объекта с помощью DefaultAzureCredential
и показано, как создать клиенты контейнеров и BLOB-объектов при необходимости:
// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
.getBlobContainerClient("<container-name>");
// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
.getBlobClient("<blob-name>");
Дополнительные сведения о создании клиентских объектов и управлении ими см. в статье "Создание клиентских объектов и управление ими", взаимодействующих с ресурсами данных.
Сведения об аренде контейнеров
Аренда устанавливает блокировку контейнера для операций удаления и управляет ими. Длительность блокировки может составлять 15–60 секунд либо быть бесконечной. Аренда контейнера предоставляет эксклюзивный доступ к удалению контейнера. Аренда контейнера управляет только возможностью удаления контейнера с помощью операции REST API удаления контейнера . Для удаления контейнера с активной арендой клиент наряду с запросом на удаление должен ввести активный идентификатор аренды. Все остальные операции контейнера успешно выполняются в арендованном контейнере без идентификатора аренды. Если вы включили обратимое удаление контейнера, можно восстановить удаленные контейнеры.
Дополнительные сведения о состояниях аренды и о том, когда можно выполнить данное действие по аренде, см. в разделе "Состояния аренды" и действия.
Операции аренды обрабатываются классом BlobLeaseClient , который предоставляет клиенту все операции аренды для больших двоичных объектов и контейнеров. Дополнительные сведения об аренде BLOB-объектов с помощью клиентской библиотеки см. в статье "Создание аренды BLOB-объектов и управление ими с помощью Java".
Получение аренды
При получении аренды контейнера вы получите идентификатор аренды, который код может использовать для работы с контейнером. Если контейнер уже имеет активную аренду, можно запросить только новую аренду с помощью активного идентификатора аренды. Однако можно указать новую длительность аренды.
Чтобы получить аренду, создайте экземпляр класса BlobLeaseClient , а затем используйте следующий метод:
Следующий пример получает 30-секундную аренду контейнера:
public BlobLeaseClient acquireContainerLease(BlobContainerClient container) {
// Create the lease client
BlobLeaseClient leaseClient = new BlobLeaseClientBuilder()
.containerClient(container)
.buildClient();
// Acquire the lease - specify duration between 15 and 60 seconds, or -1 for
// infinite duration
String leaseID = leaseClient.acquireLease(30);
System.out.printf("Acquired lease ID: %s%n", leaseID);
return leaseClient;
}
Продление аренды
Вы можете продлить аренду контейнера, если идентификатор аренды, указанный в запросе, соответствует идентификатору аренды, связанному с контейнером. Аренда может быть продлена даже в том случае, если срок его действия истек, если контейнер еще не был арендован с момента истечения срока действия этой аренды. При продлении аренды длительность сброса аренды.
Чтобы продлить существующую аренду, используйте следующий метод:
В следующем примере возобновляется аренда контейнера:
public void renewContainerLease(BlobLeaseClient leaseClient) {
leaseClient.renewLease();
}
Освобождение аренды
Вы можете освободить аренду контейнера, если идентификатор аренды, указанный в запросе, соответствует идентификатору аренды, связанному с контейнером. Освобождение аренды позволяет другому клиенту получить аренду контейнера сразу после завершения выпуска.
Вы можете освободить аренду с помощью следующего метода:
В следующем примере освобождается аренда контейнера:
public void releaseContainerLease(BlobLeaseClient leaseClient) {
leaseClient.releaseLease();
System.out.println("Release lease operation completed");
}
Прерывание аренды
Вы можете разорвать аренду контейнера, если контейнер имеет активную аренду. Любой авторизованный запрос может нарушить аренду; Запрос не требуется для указания соответствующего идентификатора аренды. Аренда не может быть продлена после того, как она нарушена, и разрыв аренды предотвращает получение новой аренды в течение определенного периода времени, пока исходная аренда не истекает или не будет освобождена.
Вы можете разорвать аренду с помощью следующего метода:
В следующем примере прерывается аренда контейнера:
public void breakContainerLease(BlobLeaseClient leaseClient) {
leaseClient.breakLease();
}
Состояния аренды и действия
На следующей схеме показаны пять состояний аренды, а также команды или события, вызывающие изменение состояния аренды.
В следующей таблице перечислены пять состояний аренды, краткое описание каждого из них и список действий аренды, разрешенных в заданном состоянии. Эти действия аренды вызывают переходы состояния, как показано на схеме.
Состояние аренды | Description | Разрешенные действия аренды |
---|---|---|
Доступно | Аренда разблокирована и может быть приобретена. | acquire |
Арендованный | Аренда заблокирована. | acquire (один и тот же идентификатор аренды), renew , change , release и break |
Срок действия истек | Срок аренды истек. | acquire , renew , release и break |
Ломка | Аренда была нарушена, но аренда будет по-прежнему заблокирована до истечения периода перерыва. | release и break . |
Неисправно | Аренда была нарушена, и срок перерыва истек. | acquire , release и break |
По истечении срока аренды идентификатор аренды сохраняется службой BLOB-объектов до тех пор, пока контейнер не будет изменен или арендован снова. Клиент может попытаться продлить или освободить аренду с помощью идентификатора аренды с истекшим сроком действия. Если запрос завершается ошибкой, клиент знает, что контейнер был арендован снова или контейнер был удален с момента последнего активного аренды.
Если срок действия аренды истекает, а не освобождается явным образом, клиенту может потребоваться ждать до одной минуты, прежде чем будет получена новая аренда для контейнера. Однако клиент может немедленно продлить аренду с идентификатором аренды с истекшим сроком действия.
Ресурсы
Дополнительные сведения о аренде контейнера с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Java см. в следующих ресурсах.
Примеры кода
Операции REST API
Пакет SDK Azure для Java содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы Java. Методы клиентской библиотеки для аренды контейнера используют следующую операцию REST API:
- Контейнер аренды (REST API)
Ресурсы клиентской библиотеки
См. также
Связанный контент
- Эта статья является частью руководства разработчика хранилища BLOB-объектов для Java. Дополнительные сведения см. в полном списке статей руководства разработчика по созданию приложения Java.