2012-07-26 47 views
17

Bunu Google'a denemeye çalıştım, ancak başarılı olmadım. AUTO_ACKNOWLEDGE kullanıyorum ve Java'da yazılmış bir tüketici istemcim varsa, ileti ne zaman onaylanır? onMessage yöntemini içeren bir MessageListener kullanıyorum. Onay, onMessage'dan önce veya onMessage'dan sonra veya başka bir noktadan sonra sunucuya geri gönderiliyor mu? Sağlayabileceğiniz herhangi bir yardım için şimdiden teşekkür ederiz!JMS AUTO_ACKNOWLEDGE ne zaman onaylandı?

cevap

19

Lütfen bu one numaralı telefonu kontrol edin.

AUTO_ACKNOWLEDGE10 modu ile onay her zaman, onMessage() işleyicisi geri döndükten sonra örtük olarak gerçekleşecek son şeydir. Mesajları alan istemci, tüketilen oturumda CLIENT_ACKNOWLEDGE modunu belirterek, garantili mesajların teslimatı üzerinde daha hassas kontrol sağlayabilir.

CLIENT_ACKNOWLEDGE kullanımı, onaylama gönderildiğinde uygulamanın denetlenmesine izin verir. Örneğin, bir uygulama bir mesajı kabul edebilir - böylece JMS sağlayıcısını görevinden alabilir - ve mesajın temsil ettiği verilerin daha fazla işlenmesini gerçekleştirebilir. acknowledge() yöntem ileti başarıyla tüketici tarafından alındıktan JMS sağlayıcı bildirir 1.

Liste gösterildiği gibi, bu anahtarı, Mesaj nesnesi üzerinde onaylama() yöntemidir. Bu yöntem, onaylama işlemi sırasında bir sağlayıcı hatası oluşursa, istemciye bir istisna atar. Sağlayıcı hatası, iletilmek üzere JMS sunucusu tarafından saklanan iletiyle sonuçlanır.

+6

? "AUTO_ACKNOWLEDGE" öğesi ayarlanmışsa mesaj tekrar gönderilecek mi? – Geek

+2

@Geek - İstisna onReceive veya JMSListener içine atılırsa, alındı ​​bildirimi gönderilmez ve redelivered – GameSalutes

+0

AUTO_ACKNOWLEDGE ile eşzamanlı olarak ileti alırsa, customer.receive yöntemini çağırırken mesaj kabul edilir – Wecherowski

5

CLIENT_ACKNOWLEDGE bu onay modu
, istemci, iletinin kabul yöntemini çağırarak bir tüketilen mesajı kabul eder. oturumu başarıyla alabilir veya bir çağrı döndü zaman bu onay moduyla AUTO_ACKNOWLEDGE

Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); 
... 
msg = (TextMessage) consumer.receive(); 
//acknowledge 
msg.acknowledge(); 

, oturum otomatik olarak mesajın bir müşterinin makbuz kabul ya mesaj dinleyici oturumu sürecine denir zaman Mesaj başarıyla geri döner.

bir istisna `onMessage()` işlenmesi sırasında atılır ne olur
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); 

source
Best example