2011-01-18 13 views
5

Sto utilizzando JMS Queue e MDB che lo ascoltano. Ho un meccanismo di ripetizione, quindi quando viene generata un'eccezione, si verificherà un rollback della transazione e l'operazione verrà rieseguita/Recupera numero di JMS Messaggio riprovare

Vorrei raggiungere il numero di messaggio_retry, ogni volta che "onMessage" viene eseguito, quindi io possibile scrivere il numero di ripetizione dell'esecuzione corrente. Ho sentito che posso recuperarlo tramite l'intestazione dell'oggetto messaggio, ma non ho trovato nulla nelle proprietà o nella rete.

qualcuno ha qualche idea?

Grazie, raggio.

risposta

10

Vedere javax.jms.Message.getIntProperty. Il nome della proprietà è "JMSXDeliveryCount".

+0

wow, yer goood :) grazie. – rayman

1

L'unico modo standard per eseguire questa operazione è dare un'occhiata alla proprietà JMSXDeliveryCount. Tuttavia, è necessario tenere presente che le specifiche JMS indicano che le proprietà definite JMS (quelle che iniziano con JMSX) sono facoltative, quindi dipende dal provider specifico se questa proprietà è supportata e impostata in ogni caso.

0

da Oracle esercitazione [https://docs.oracle.com/javaee/7/tutorial/jms-concepts003.htm#BNCEH] sezione 45.3.7.2 Proprietà messaggio:

Il JMS API fornisce alcuni nomi di proprietà predefiniti che iniziano con JMSX. È richiesto un provider JMS per implementare solo uno di questi, JMSXDeliveryCount (che specifica il numero di volte in cui un messaggio è stato consegnato); il resto è facoltativo. L'uso di queste proprietà predefinite o di proprietà definite dall'utente nelle applicazioni è facoltativo.

l'implementazione JMSXDeliveryCount è necessaria e conterrà le informazioni necessarie.