2014-11-19 21 views

cevap

1

@MessageDriven (MDBs), JMS API'nin bir parçasıdır. JMS, başarısız mesaj tüketimini, işlem desteğini yeniden denemenin yanı sıra mesajların sırasını kontrol etmenize izin verirken her türlü ek bilgiye sahiptir. Eki java-ee-6 (ejb 3.1) eki belirtilmemiştir. usecase varsayarsak bir java-ee-6 kapta basit asenkron çağırma veya üzerini bunun ötesinde daha gerekiyorsa @Asynchronous kullanmak (arun guptas blog on this)

JMS

6

@Asynchronous bir seçenek olabilir

olduğunu sadece dış işlemin paralel olarak birkaç parça iş başlatması gerekiyorsa ve sonra hepsini beklemek gerekiyorsa (veya arka planda tek bir iş parçasını çalıştırıyorsanız, ön planda çalışın ve arka planda çalışın) bekleyin. @Asynchronous, "yangın ve unutma" işlemine uygun değildir, çünkü eşzamansız çalışmanın yürütülmeye başlanmasından önce konteyner çökebilir (bence, EJB eşzamansız yöntemler geçersiz bir bellek önbellekini güncelleme gibi çok nadiren faydalıdır). İşin tamamlanmasını beklemeden, eşzamansız bir şekilde çalışacağını garanti etmek istiyorsanız, bir MDB'ye bir mesaj göndermeniz veya bir EJB zamanlayıcısı planlamanız gerekir.

+0

Kap "nasıl" çökebilir? – Dherik

+0

JVM işlemi öldürülüyor, makine aniden gücü kaybediyor, vb. –