2012-12-11 18 views
15

Durante la configurazione delle code JMS su JBoss 7 con HornetQ (basato sulla configurazione standalone-full.xml) ho notato un attributo "duraturo".Qual è il significato dell'attributo 'durable' per JMS Queue in JBoss 7 con HornetQ?

enter image description here

ho passato in rassegna diverse fonti e molti di loro ha dichiarato le code sono sempre 'resistenti', che significa il messaggio sarà sempre consegnato, anche in caso di potenziali riceventi inattività al momento della trasmissione.

Questo attributo in JBoss 7 HornetQ fa riferimento a code temporanee? O questo attributo si riferisce a qualche tipo di code non permanenti non temporanee?

risposta

13

Dopo una breve indagine sono giunto ad alcune conclusioni. Tutte le osservazioni sono basate su JBoss 7.1.1.Finale con HornetQ Server 2.2.13.Final.

  • La coda non permanente non è una coda temporanea. Esiste fino a quando non viene eliminato manualmente.

  • Tutti i messaggi inviati a una coda non duratura scompaiono al riavvio/errore del provider JMS (modalità di consegna, ovvero PERSISTENT/NON_PERSISTENT dei messaggi inoltrati ignorati).

  • Il valore dell'elemento di intestazione JMSDeliveryMode dei messaggi non viene modificato. In particolare, se il messaggio è stato inviato con la modalità di consegna PERSISTENT a una coda non duratura, il flag è impostato su PERSISTENT, anche se la coda non permanente non mantiene il messaggio (viene perso in caso di riavvio/errore del provider JMS).

Dal lato client sembra essere un po 'di una prospettiva preoccupante, dal momento che il mittente ha potenzialmente alcun modo di sapere se non sarà rispettata la modalità di consegna dichiarati del messaggio, a causa del significato problematica coda 'non durevole'.

Inoltre, il termine "coda permanente" in questo contesto sembra sconnesso dalla "sottoscrizione duratura", in quanto non sembra influenzare in alcun modo la consegna dei messaggi ai consumatori inattivi.

10

La sottoscrizione duratura in JMS significa che se l'abbonato si disconnette e quindi si collega nuovamente alla destinazione JMS (coda o argomento) riceverà tutti i messaggi che sono stati inviati alla destinazione fino a quel momento e che non sono ancora scaduti.

+3

Basta notare che l'attributo su JBoss sembra fare riferimento a una coda, piuttosto che a un sottoscrittore/sottoscrizione. – acalypso

15

Ritengo che la parola "Durevole" sia più applicabile agli argomenti che alle code. Una sottoscrizione duratura è quella in cui le pubblicazioni per un sottoscrittore vengono archiviate dal provider di messaggistica quando quell'abbonato non è in esecuzione. Una volta che l'abbonato diventa attivo, questi messaggi memorizzati verranno consegnati a quell'abbonato. Per gli abbonati non durevoli non riceveranno pubblicazioni se non sono attive.

Per quanto riguarda le code, i messaggi vengono trattenuti in coda fino a quando qualcuno li riceve o scade. I messaggi possono essere persistenti nel senso che sopravviveranno al riavvio del provider di messaggistica e non persistenti in cui i messaggi vengono persi quando il provider di messaggistica si interrompe.

+0

Grazie per le informazioni, come accennato la maggior parte delle fonti suggerite le code sono "durevoli" per impostazione predefinita. Ecco perché mi sono chiesto quale sia il significato della coda non durevole nel contesto di HornetQ su JBoss 7. Ho provato alcuni esempi e posterò le mie osservazioni come risposta. – acalypso

+1

@Shashi Qual è la ragione/spiegazione per dire che durevole è più applicabile agli argomenti che alla coda? – Geek