Java ile blob kiralamaları oluşturma ve yönetme
Bu makalede, Java için Azure Depolama istemci kitaplığını kullanarak blob kiralamalarının nasıl oluşturulacağı ve yönetileceğini gösterilmektedir. blob kiralamalarını almak, yenilemek, serbest bırakmak ve kesmek için istemci kitaplığını kullanabilirsiniz.
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- Java Development Kit (JDK) sürüm 8 veya üzeri (en iyi deneyim için sürüm 17'yi öneririz)
- Apache Maven bu örnekte proje yönetimi için kullanılır
Ortamınızı ayarlama
Mevcut bir projeniz yoksa, bu bölümde Java için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere bir projenin nasıl ayarlanacağı gösterilir. Daha fazla bilgi için bkz. Azure Blob Depolama ve Java'yı kullanmaya başlama.
Bu makaledeki kod örnekleriyle çalışmak için projenizi ayarlamak için bu adımları izleyin.
Not
Bu makalede, örnek kodu derlemek ve çalıştırmak için Maven derleme aracı kullanılmaktadır. Gradle gibi diğer derleme araçları da Java için Azure SDK ile çalışır.
Paketleri yükleme
pom.xml
Dosyayı metin düzenleyicinizde açın. Bom dosyasını ekleyerek veya doğrudan bağımlılık ekleyerek paketleri yükleyin.
İçeri aktarma deyimleri ekleme
Aşağıdaki import
deyimlerini ekleyin:
import com.azure.storage.blob.*;
import com.azure.storage.blob.specialized.*;
Yetkilendirme
Yetkilendirme mekanizmasının blob kiralaması ile çalışmak için gerekli izinlere sahip olması gerekir. Microsoft Entra Id ile yetkilendirme için (önerilir), Azure RBAC yerleşik rolü Depolama Blob Verileri Katkıda Bulunanı veya üzeri gerekir. Daha fazla bilgi edinmek için Bkz. Kira Blobu (REST API) yetkilendirme kılavuzu.
İstemci nesnesi oluşturma
Bir uygulamayı Blob Depolama'ya bağlamak için bir BlobServiceClient örneği oluşturun.
Aşağıdaki örnek kullanarak bir BlobServiceClient
nesne DefaultAzureCredential
oluşturmak için BlobServiceClientBuilder'ı kullanır ve gerekirse kapsayıcı ve blob istemcilerinin nasıl oluşturulacağını gösterir:
// 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>");
İstemci nesneleri oluşturma ve yönetme hakkında daha fazla bilgi edinmek için bkz . Veri kaynaklarıyla etkileşim kuran istemci nesneleri oluşturma ve yönetme.
Blob kiralamaları hakkında
Kiralama, yazma ve silme işlemleri için blob üzerinde kilit oluşturur ve yönetir. Kilit süresi 15-60 saniye veya sonsuz olabilir. Blob üzerindeki kiralama, bloba özel yazma ve silme erişimi sağlar. Etkin kiralaması olan bir bloba yazmak için, istemcinin yazma isteğiyle etkin kira kimliğini içermesi gerekir.
Kira durumları hakkında daha fazla bilgi edinmek ve bir kiralamada belirli bir eylemi ne zaman gerçekleştirebileceğinizi öğrenmek için bkz . Kira durumları ve eylemleri.
Kapsayıcıyı Sil de dahil olmak üzere etkin kiralaması olan blobları içeren bir kapsayıcıda tüm kapsayıcı işlemlerine izin verilir. Bu nedenle, kapsayıcı içindeki bloblar etkin kiralara sahip olsa bile silinebilir. Kapsayıcı silme haklarını denetlemek için Kira Kapsayıcısı işlemini kullanın.
Kira işlemleri bloblar ve kapsayıcılar için tüm kiralama işlemlerini içeren bir istemci sağlayan BlobLeaseClient sınıfı tarafından işlenir. İstemci kitaplığını kullanarak kapsayıcı kiralamaları hakkında daha fazla bilgi edinmek için bkz . Java ile kapsayıcı kiraları oluşturma ve yönetme.
Kiralama alma
Blob kiralaması aldığınızda, kodunuzun blob üzerinde çalışmak için kullanabileceği bir kira kimliği alırsınız. Blob zaten etkin bir kiraya sahipse, yalnızca etkin kira kimliğini kullanarak yeni kiralama isteyebilirsiniz. Ancak, yeni bir kira süresi belirtebilirsiniz.
Kiralama almak için BlobLeaseClient sınıfının bir örneğini oluşturun ve aşağıdaki yöntemi kullanın:
Aşağıdaki örnek bir blob için 30 saniyelik kira alır:
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;
}
Kiralamayı yenileme
İstekte belirtilen kira kimliği blobla ilişkilendirilmiş kira kimliğiyle eşleşiyorsa blob kiralamasını yenileyebilirsiniz. Bu kiralamanın süresi dolduğundan bu yana blob yeniden değiştirilmediği veya kiralanmamış olduğu sürece kiralama süresi dolmuş olsa bile yenilenebilir. Kiralamayı yenilediğinizde kiralama süresi sıfırlanır.
Mevcut kiralamayı yenilemek için aşağıdaki yöntemi kullanın:
Aşağıdaki örnek bir blob için kirayı yeniler:
public void renewBlobLease(BlobLeaseClient leaseClient) {
leaseClient.renewLease();
}
Kirayı serbest bırakma
İstekte belirtilen kira kimliği blobla ilişkilendirilmiş kira kimliğiyle eşleşiyorsa blob kiralamasını serbest bırakabilirsiniz. Kiranın serbest bırakılması, başka bir istemcinin yayın tamamlandıktan hemen sonra blob için kira almasını sağlar.
Kiralamayı serbest bırakmak için aşağıdaki yöntemi kullanabilirsiniz:
Aşağıdaki örnek, kirayı bir blob üzerinde serbest bırakır:
public void releaseBlobLease(BlobLeaseClient leaseClient) {
leaseClient.releaseLease();
System.out.println("Release lease operation completed");
}
Kirayı kesme
Blobda etkin bir kira varsa blob kirasını bozabilirsiniz. Herhangi bir yetkili istek kirayı bozabilir; eşleşen bir kira kimliği belirtmek için istek gerekli değildir. Kira bozulduktan sonra yenilenemez ve kirayı bozmak, özgün kiralamanın süresi dolana veya serbest bırakılana kadar bir süre için yeni bir kiranın alınmasına engel olur.
Aşağıdaki yöntemi kullanarak kirayı bozabilirsiniz:
Aşağıdaki örnek bir blob üzerindeki kirayı keser:
public void breakBlobLease(BlobLeaseClient leaseClient) {
leaseClient.breakLease();
}
Kira durumları ve eylemleri
Aşağıdaki diyagramda, kiralamanın beş durumu ve kiralama durumu değişikliklerine neden olan komutlar veya olaylar gösterilmektedir.
Aşağıdaki tabloda beş kira durumu listelenmiştir, her birinin kısa bir açıklaması verilmiştir ve belirli bir durumda izin verilen kiralama eylemleri listelenmiştir. Bu kiralama eylemleri, diyagramda gösterildiği gibi durum geçişlerine neden olur.
Kira durumu | Açıklama | kira eylemlerine izin verilir |
---|---|---|
Kullanılabilir | Kiranın kilidi açık ve satın alınabiliyor. | acquire |
Kiralanan | Kira kilitli. | acquire (yalnızca aynı kira kimliği), renew , change , release ve break |
Süresi Doldu | Kiralama süresi doldu. | acquire , renew , release ve break |
Kırma | Kira bozulmuştur, ancak mola süresi dolana kadar kira kilitlenmeye devam edecektir. | release ve break |
Bozuk | Kira bozuldu ve kesme süresi doldu. | acquire , release ve break |
Kiralamanın süresi dolduğunda, blob değiştirilene veya yeniden kiralanana kadar kira kimliği Blob hizmeti tarafından korunur. İstemci, süresi dolan kira kimliğini kullanarak kiralamayı yenilemeye veya serbest bırakmaya çalışabilir. Bu işlem başarılı olursa istemci, kira kimliği son geçerli olduğundan beri blob'un değiştirilmediğini bilir. İstek başarısız olursa, istemci blob'un değiştirildiğini veya kiralamanın son etkin olması nedeniyle blobu yeniden kiralandığını bilir. İstemcinin daha sonra blob üzerinde yeni bir kira alması gerekir.
Bir kiranın süresi açıkça yayımlanmak yerine sona eriyorsa, blob için yeni bir kiralamanın alınabilmesi için istemcinin bir dakika kadar beklemesi gerekebilir. Ancak blob değiştirilmediyse istemci kira kimliğini kullanarak kiralamayı hemen yenileyebilir.
Anlık görüntüler salt okunur olduğundan blob anlık görüntüsü için kira verilemiyor. Anlık görüntüye karşı kiralama isteğinde bulunarak durum kodu 400 (Bad Request)
elde edin.
Kaynaklar
Java için Azure Blob Depolama istemci kitaplığını kullanarak blob kiralarını yönetme hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.
Kod örnekleri
REST API işlemleri
Java için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık Java paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlar. Blob kiralamalarını yönetmek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:
İstemci kitaplığı kaynakları
Ayrıca bkz.
İlgili içerik
- Bu makale, Java için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Daha fazla bilgi edinmek için Java uygulamanızı derleme makalelerinde geliştirici kılavuzu makalelerinin tam listesine bakın.