Aracılığıyla paylaş


Java ile kapsayıcı kiralamaları oluşturma ve yönetme

Bu makalede Java için Azure Depolama istemci kitaplığını kullanarak kapsayıcı kiraları oluşturma ve yönetme işlemleri gösterilmektedir. kapsayıcı kiralamalarını almak, yenilemek, serbest bırakmak ve kesmek için istemci kitaplığını kullanabilirsiniz.

Ön koşullar

  • Bu makalede, Java için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere ayarlanmış bir projeniz olduğu varsayılır. Paket yükleme, yönergeler ekleme import ve yetkili istemci nesnesi oluşturma dahil olmak üzere projenizi ayarlama hakkında bilgi edinmek için bkz. Azure Depolama ve Java ile Çalışmaya Başlama.
  • Yetkilendirme mekanizmasının kapsayıcı kirasıyla çalışma izinleri olmalıdır. Daha fazla bilgi edinmek için aşağıdaki REST API işlemi için yetkilendirme kılavuzuna bakın:

Kapsayıcı kiralamaları hakkında

Kiralama, silme işlemleri için bir kapsayıcı üzerinde kilit oluşturur ve yönetir. Kilit süresi 15-60 saniye veya sonsuz olabilir. Kapsayıcıdaki kiralama, kapsayıcıya özel silme erişimi sağlar. Kapsayıcı kiralaması yalnızca Kapsayıcıyı Sil REST API'sini silme işlemini kullanarak kapsayıcıyı silme özelliğini denetler. Etkin kiralaması olan bir kapsayıcıyı silmek için, istemcinin silme isteğiyle birlikte etkin kira kimliğini içermesi gerekir. Kira kimliği olmadan kiralanan bir kapsayıcıda diğer tüm kapsayıcı işlemleri başarılı olur. Kapsayıcı geçici silmeyi etkinleştirdiyseniz silinen kapsayıcıları geri yükleyebilirsiniz.

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.

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 blob kiralamaları hakkında daha fazla bilgi edinmek için bkz . Java ile blob kiralamaları oluşturma ve yönetme.

Kiralama alma

Bir kapsayıcı kirası aldığınızda, kodunuzun kapsayıcı üzerinde çalışmak için kullanabileceği bir kira kimliği alırsınız. Kapsayıcının zaten etkin bir kirası varsa, 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 kapsayıcı için 30 saniyelik kira alır:

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;
}

Kiralamayı yenileme

İstekte belirtilen kira kimliği kapsayıcıyla ilişkilendirilmiş kira kimliğiyle eşleşiyorsa kapsayıcı kirasını yenileyebilirsiniz. Kiralama süresi dolsa bile, kapsayıcının süresi dolduğundan bu yana yeniden kiralanmamış olması durumunda kira 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 kapsayıcı için kirayı yeniler:

public void renewContainerLease(BlobLeaseClient leaseClient) {
    leaseClient.renewLease();
}

Kirayı serbest bırakma

İstekte belirtilen kira kimliği, kapsayıcıyla ilişkilendirilmiş kira kimliğiyle eşleşiyorsa kapsayıcı kiralamasını serbest bırakabilirsiniz. Kiranın serbest bırakılması, başka bir istemcinin yayın tamamlandıktan hemen sonra kapsayıcı için kira almasını sağlar.

Kiralamayı serbest bırakmak için aşağıdaki yöntemi kullanabilirsiniz:

Aşağıdaki örnek, bir kapsayıcıda kirayı serbest bırakır:

public void releaseContainerLease(BlobLeaseClient leaseClient) {
    leaseClient.releaseLease();
    System.out.println("Release lease operation completed");
}

Kirayı kesme

Kapsayıcının etkin bir kirası varsa kapsayıcı 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 kapsayıcıdaki kirayı keser:

public void breakContainerLease(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 diagram showing container lease states and state change triggers.

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 Tanım 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, releaseve break
Süresi Doldu Kiralama süresi doldu. acquire, renew, releaseve break
Kırma Kira bozulmuştur, ancak mola süresi dolana kadar kira kilitlenmeye devam edecektir. release ve break
Kırık Kira bozuldu ve kesme süresi doldu. acquire, releaseve break

Kiralamanın süresi dolduğunda, kapsayıcı yeniden değiştirilene veya 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. İstek başarısız olursa, istemci kapsayıcının yeniden kiralandığını veya kiralamanın son etkin olması nedeniyle kapsayıcının silindiğini bilir.

Bir kiranın süresi açıkça serbest bırakılmak yerine sona eriyorsa, kapsayıcı için yeni bir kiralamanın alınabilmesi için istemcinin bir dakika kadar beklemesi gerekebilir. Ancak istemci, süresi dolan kira kimliğiyle kiralamayı hemen yenileyebilir.

Kaynaklar

Java için Azure Blob Depolama istemci kitaplığını kullanarak kapsayıcı kiralama hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

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. Kapsayıcı kiralamak için istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:

Kod örnekleri

İstemci kitaplığı kaynakları

Ayrıca bkz.