Come impostazione predefinita, un broker elimina una pubblicazione dopo che l'ha inviata
a tutti i sottoscrittori (subscriber) interessati. Tuttavia, un autore (publisher) può specificare
che desidera che il broker
conservi una copia della pubblicazione, che quindi viene chiamata pubblicazione conservata.
Una copia di una pubblicazione conservata viene inviata dal broker a tutti i sottoscrittori (subscriber) che registrano un interesse sull'argomento della
pubblicazione. Ciò significa che un nuovo sottoscrittore (subscriber) non deve attendere che le informazioni vengano
pubblicate nuovamente prima di riceverle.
Ad esempio, un sottoscrittore (subscriber) che registra una sottoscrizione per il prezzo di un'azione riceve immediatamente il prezzo pubblicato più di recente, senza dover attendere che questo
subisca delle modifiche e venga ripubblicato.
Se nel messaggio Pubblica come opzione di pubblicazione è specificato RetainPub, la pubblicazione viene conservata dal broker sostituendo qualsiasi pubblicazione conservata in precedenza per tale argomento.
Poiché un broker conserva solo una pubblicazione per ciascun
argomento e punto di sottoscrizione, la vecchia pubblicazione viene eliminata all'arrivo della nuova.
Nel decidere
se utilizzare le pubblicazioni conservate, tenere presente quanto riportato di seguito.
- Le pubblicazioni in uso contengono informazioni sullo stato o sull'evento?
Di solito, le informazioni sull'evento non vengono conservate, ma lo sono quelle
sullo stato. Tuttavia, se tutte le sottoscrizioni ad un argomento vengono poste prima che vengano
eseguite eventuali pubblicazioni su tale argomento e se non sono previste nuove sottoscrizioni,
non c'è alcuna necessità di conservare le pubblicazioni, anche relativamente alle informazioni sullo stato, in quanto
le pubblicazioni vengono distribuite a tutti i sottoscrittori (subscriber) non appena vengono
pubblicate.
Potrebbe anche non essere necessario conservare le pubblicazioni che contengono informazioni sullo stato se queste vengono pubblicate molto di frequente (ad esempio, ogni secondo). Con tale frequenza di pubblicazione, qualsiasi nuovo sottoscrittore (subscriber), o che sta eseguendo il ripristino in seguito ad un errore, riceve lo stato corrente non appena esegue la sottoscrizione.
- Si desidera ricevere le pubblicazioni solo su richiesta?
Se si utilizzano pubblicazioni conservate, i sottoscrittori (subscriber) possono eseguire la
registrazione utilizzando l'opzione PubOnReqOnly del messaggio Registra
sottoscrittore (subscriber). Ciò significa che il broker invia le pubblicazioni ad un sottoscrittore (subscriber) solo
quando questo richiede un aggiornamento. Il broker invia quindi al sottoscrittore (subscriber)
la pubblicazione conservata corrente che corrisponde alla sottoscrizione.
- Le pubblicazioni conservate possono essere unite con pubblicazioni
sullo stesso argomento non conservate?
Si sconsiglia di eseguire questa combinazione. Se si dispone
di una pubblicazione conservata e quindi se ne pubblica una non conservata sullo stesso argomento,
la pubblicazione conservata esistente viene conservata ancora. Non viene aggiornata
dalla pubblicazione non conservata. Se un sottoscrittore (subscriber) esegue una registrazione utilizzando l'opzione PubOnReqOnly del messaggio Registra sottoscrittore (subscriber), non può accedere ad eventuali pubblicazioni non conservate.
Il broker invia solo la pubblicazione conservata corrente in risposta ad una richiesta
di aggiornamento.
- E' possibile disporre di più di un'applicazione che pubblica le pubblicazioni conservate sullo stesso
argomento?
Si consiglia di non disporre di più di un'applicazione che pubblica le pubblicazioni conservate sullo stesso
argomento. Altrimenti, e se l'intervallo è quasi simultaneo, non è possibile determinare quale pubblicazione
viene conservata. Se gli autori (publisher) utilizzano diversi broker, su ciascuno di questi potrebbero essere presenti diverse pubblicazioni conservate sullo stesso argomento.
- Come esegue il ripristino da errore l'applicazione del sottoscrittore (subscriber)?
Se l'autore (publisher) non utilizza pubblicazioni conservate, l'applicazione del sottoscrittore (subscriber)
potrebbe aver necessità di memorizzare il relativo stato corrente in locale. Se l'autore (publisher)
utilizza pubblicazioni conservate, il sottoscrittore (subscriber) può richiedere un aggiornamento delle relative informazioni
sullo stato dopo un riavvio.
Il broker
continua ad inviare le pubblicazioni ad un sottoscrittore (subscriber) registrato anche se questo
non è in esecuzione. Ciò può creare una crescita del numero di messaggi nella coda del sottoscrittore (subscriber).
Tale crescita può essere evitata se il sottoscrittore (subscriber) esegue la registrazione utilizzando l'opzione PubOnReqOnly del messaggio
Registra sottoscrittore (subscriber). Il sottoscrittore (subscriber) deve quindi aggiornare periodicamente il relativo stato
richiedendo un aggiornamento o utilizzando una coda dinamica temporanea.
- Relativamente alle pubblicazioni conservate, quali sono le implicazioni delle prestazioni?
Il broker deve memorizzare le pubblicazioni conservate in un database. Ciò riduce
la velocità di trasmissione dei dati. Se le pubblicazioni sono di grandi dimensioni, è necessaria una considerevole quantità di spazio su disco per memorizzare la pubblicazione conservata di ciascun argomento. In
un ambiente con più broker, le pubblicazioni conservate vengono memorizzate da tutti gli altri
broker collegati che hanno una sottoscrizione corrispondente.
Utilizzare il campo Expiry del descrittore di
messaggi (MQMD) per impostare un intervallo di scadenza per una pubblicazione conservata.
Le applicazioni di verifica
di esempio fornite con WebSphere Message Broker includono il servizio
Risultati di calcio. Questo esempio utilizza le pubblicazioni conservate per registrare
il punteggio aggiornato di ciascun incontro di calcio di cui esegue il controllo. Il codice
di esempio illustra la programmazione richiesta per supportare questa opzione.
Non tutte le applicazioni possono pubblicare le pubblicazioni conservate e non a tutte le pubblicazioni
conservate è possibile
applicare date di scadenza. Nella tabella riportata di seguito sono presenti le applicazioni
che possono pubblicare pubblicazioni conservate e se tali pubblicazioni possono avere una data di
scadenza:
|
MQ |
SCADA |
JMS/IP |
Pubblicazioni conservate |
SI' |
SI' |
NO |
Data di scadenza |
SI' |
NO |
NO |
Le colonne nella tabella indicano tre tipi di
applicazioni. La prima riga indica se una pubblicazione può essere conservata
mentre la seconda indica se è possibile applicare alla pubblicazione una data di
scadenza.