Blobbérletek létrehozása és kezelése Java használatával
Ez a cikk bemutatja, hogyan hozhat létre és kezelhet blobbérleteket a Java Azure Storage ügyfélkódtárával. Az ügyfélkódtár használatával blobbérleteket szerezhet be, újíthat meg, adhat ki és szakíthat meg.
Előfeltételek
- Azure-előfizetés – hozzon létre egyet ingyenesen
- Azure Storage-fiók – tárfiók létrehozása
- Java Development Kit (JDK) 8-es vagy újabb verzió (a legjobb élmény érdekében a 17-es verziót javasoljuk)
- Ebben a példában az Apache Maven a projektkezeléshez használatos
Saját környezet beállítása
Ha nem rendelkezik meglévő projekttel, ez a szakasz bemutatja, hogyan állíthat be egy projektet a Java Azure Blob Storage ügyfélkódtárával való együttműködésre. További információ: Az Azure Blob Storage és a Java használatának első lépései.
A jelen cikkben szereplő példakódok használatához kövesse az alábbi lépéseket a projekt beállításához.
Feljegyzés
Ez a cikk a Maven buildelési eszközével hozza létre és futtatja a példakódot. Más buildelési eszközök, például a Gradle is együttműködnek a Java Azure SDK-val.
Csomagok telepítése
Nyissa meg a pom.xml
fájlt a szövegszerkesztőben. Telepítse a csomagokat a BOM-fájllal, vagy egy közvetlen függőséget is beleértve.
Importálási utasítások hozzáadása
Adja hozzá a következő import
-utasításokat:
import com.azure.storage.blob.*;
import com.azure.storage.blob.specialized.*;
Engedélyezés
Az engedélyezési mechanizmusnak rendelkeznie kell a blobbérlet használatához szükséges engedélyekkel. A Microsoft Entra-azonosítóval való engedélyezéshez (ajánlott) az Azure RBAC beépített szerepkörű Storage Blob Data Közreműködő vagy újabb szerepkörre van szüksége. További információkért tekintse meg a bérletblob (REST API) engedélyezési útmutatóját.
Ügyfélobjektum létrehozása
Ha egy alkalmazást a Blob Storage-hoz szeretne csatlakoztatni, hozzon létre egy BlobServiceClient-példányt.
Az alábbi példa a BlobServiceClientBuilder használatával DefaultAzureCredential
hoz létre objektumotBlobServiceClient
, és bemutatja, hogyan hozhat létre tároló- és blobügyfeleket, ha szükséges:
// 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>");
Az ügyfélobjektumok létrehozásáról és kezeléséről további információt az adaterőforrásokat kezelő ügyfélobjektumok létrehozása és kezelése című témakörben talál.
Tudnivalók a blobbérletekről
A bérlet létrehoz és kezel egy blob zárolását az írási és törlési műveletekhez. A zárolás időtartama 15–60 másodperc lehet, vagy végtelen is lehet. A blobok bérlete kizárólagos írási és törlési hozzáférést biztosít a blobhoz. Ha aktív bérlettel rendelkező blobba szeretne írni, az ügyfélnek tartalmaznia kell az aktív bérlet azonosítóját az írási kérelemmel.
Ha többet szeretne megtudni a bérletállapotokról, és hogy mikor hajthat végre egy adott műveletet egy bérleten, tekintse meg a bérletállapotokat és a műveleteket.
Minden tárolóművelet engedélyezett egy olyan tárolón, amely aktív bérlettel rendelkező blobokat tartalmaz, beleértve a tároló törlését is. Ezért a tároló akkor is törölhető, ha a benne lévő blobok aktív bérletekkel rendelkeznek. A Tárolóbérlet művelettel szabályozhatja a tároló törléséhez szükséges jogosultságokat.
A bérletműveleteket a BlobLeaseClient osztály kezeli, amely egy olyan ügyfelet biztosít, amely a blobok és tárolók összes bérletműveletét tartalmazza. Ha többet szeretne megtudni a tárolóbérletekről az ügyfélkódtár használatával, olvassa el a Tárolóbérletek létrehozása és kezelése a Java használatával című témakört.
Bérlet beszerzése
Blobbérlet beszerzésekor egy bérletazonosítót kap, amelyet a kód a blobon való működéshez használhat. Ha a blob már rendelkezik aktív bérletekkel, csak az aktív bérletazonosító használatával kérhet új bérletet. Megadhatja azonban az új bérlet időtartamát.
Bérlet beszerzéséhez hozza létre a BlobLeaseClient osztály egy példányát, majd használja a következő módszert:
Az alábbi példa egy blob 30 másodperces bérletét szerzi be:
public BlobLeaseClient acquireBlobLease(BlobClient blob) {
// Create the lease client
BlobLeaseClient leaseClient = new BlobLeaseClientBuilder()
.blobClient(blob)
.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;
}
Bérlet megújítása
Megújíthat egy blobbérletet, ha a kérelemben megadott bérletazonosító megegyezik a blobhoz társított bérletazonosítóval. A bérlet akkor is megújítható, ha lejárt, feltéve, hogy a blobot a bérlet lejárata óta nem módosították vagy bérletezték újra. Amikor megújít egy bérletet, a bérlet időtartama visszaáll.
Meglévő bérlet megújításához használja a következő módszert:
Az alábbi példa megújít egy blob bérletét:
public void renewBlobLease(BlobLeaseClient leaseClient) {
leaseClient.renewLease();
}
Bérlet felszabadítása
Blobbérletet akkor adhat ki, ha a kérelemben megadott bérletazonosító megegyezik a blobhoz társított bérletazonosítóval. A bérlet felszabadítása lehetővé teszi, hogy egy másik ügyfél közvetlenül a kiadás befejezése után megszerezze a blob bérletét.
A bérletet a következő módszerrel oldhatja fel:
Az alábbi példa egy blob bérletét adja ki:
public void releaseBlobLease(BlobLeaseClient leaseClient) {
leaseClient.releaseLease();
System.out.println("Release lease operation completed");
}
Bérlet megszakítása
A blobbérleteket megszakíthatja, ha a blob aktív bérletet kapott. Bármely engedélyezett kérelem megszakíthatja a bérletet; a kérelem nem szükséges egyező bérletazonosító megadásához. A bérletek nem újíthatók meg a szerződés megszakadása után, és a bérlet feltörése megakadályozza az új bérlet beszerzését egy ideig, amíg az eredeti bérlet lejár vagy fel nem szabadul.
A bérletet a következő módszerrel szakíthatja meg:
Az alábbi példa megszakítja a blobok bérletét:
public void breakBlobLease(BlobLeaseClient leaseClient) {
leaseClient.breakLease();
}
Bérletállapotok és műveletek
Az alábbi ábra egy bérlet öt állapotát, valamint a bérletállapot-módosításokat okozó parancsokat vagy eseményeket mutatja be.
Az alábbi táblázat felsorolja az öt bérletállapotot, rövid leírást ad mindegyikről, és felsorolja az adott állapotban engedélyezett bérletműveleteket. Ezek a bérletműveletek állapotváltásokat okoznak, ahogy az a diagramon is látható.
Bérlet állapota | Leírás | Bérletműveletek engedélyezettek |
---|---|---|
Elérhető | A bérlet feloldva van, és beszerezhető. | acquire |
Bérelt | A bérlet zárolva van. | acquire (csak ugyanaz a bérletazonosító), renew , change , release és break |
Lejárt | A bérlet időtartama lejárt. | acquire , renew , release és break |
Törés | A bérlet megszakadt, de a bérlet a megszakítási időszak lejártáig zárolva marad. | release és break |
Törött | A bérlet megszakadt, és a megszakítási időszak lejárt. | acquire , release és break |
Ha egy bérlet lejár, a blobszolgáltatás a bérletazonosítót addig tartja karban, amíg a blobot nem módosítják vagy újra nem bérletelik. Az ügyfél megkísérelheti megújítani vagy felszabadítani a bérletet a lejárt bérletazonosító használatával. Ha ez a művelet sikeres, az ügyfél tudja, hogy a blob nem módosult a bérletazonosító utolsó érvényességétől kezdve. Ha a kérés meghiúsul, az ügyfél tudja, hogy a blob módosult, vagy a blobot ismét bérletbe adták, mivel a bérlet utoljára aktív volt. Az ügyfélnek ezután új bérletet kell szereznie a blobon.
Ha egy bérlet lejár ahelyett, hogy explicit módon fel lett volna szabadítva, előfordulhat, hogy az ügyfélnek akár egy percet is várnia kell, mielőtt új bérletet szerezhet be a blob számára. Az ügyfél azonban azonnal megújíthatja a bérletet a bérletazonosítójával, ha a blobot nem módosították.
A blobok pillanatképeihez nem adható bérlet, mivel a pillanatképek írásvédettek. Ha bérletet kér egy pillanatképhez, az állapotkódot 400 (Bad Request)
eredményez.
Források
Ha többet szeretne megtudni a blobbérletek Java-hoz készült Azure Blob Storage-ügyfélkódtár használatával történő kezeléséről, tekintse meg az alábbi erőforrásokat.
Kódminták
REST API-műveletek
Az Azure SDK for Java olyan kódtárakat tartalmaz, amelyek az Azure REST API-ra épülnek, lehetővé téve a REST API-műveletek használatát ismert Java-paradigmákon keresztül. A blobbérletek kezelésére szolgáló ügyfélkódtár-metódusok a következő REST API-műveletet használják:
Ügyfélkódtár erőforrásai
Lásd még
Kapcsolódó tartalom
- Ez a cikk a Java Blob Storage fejlesztői útmutatójának része. További információkért tekintse meg a Java-alkalmazás buildeléséhez kapcsolódó fejlesztői útmutatók teljes listáját.