Messaggio Annulla registrazione sottoscrittore (subscriber)

Il messaggio di comando Annulla registrazione sottoscrittore (subscriber) viene inviato ad un broker da un sottoscrittore (subscriber) o a un'altra applicazione di quest'ultimo, per indicare che non desidera ricevere più messaggi corrispondenti ai parametri forniti.

Questo messaggio viene inviato a SYSTEM.BROKER.CONTROL.QUEUE, la coda di controllo del broker. L'utente deve disporre dell'autorizzazione necessaria per inserire un messaggio in tale coda.

Per informazioni dettagliate sui parametri del descrittore di messaggi (MQMD), necessari quando si invia un messaggio di comando al broker, fare riferimento a Impostazioni MQMD nei messaggi di comando al broker.

E' possibile annullare una singola sottoscrizione specificando l'argomento corrispondente, il punto di sottoscrizione ed i valori di filtro della sottoscrizione di origine. Se, nella sottoscrizione di origine non vengono specificati dei valori (ovvero, vengono assunti i valori predefiniti), questi devono essere omessi in fase di annullamento della sottoscrizione.

E' possibile annullare tutte le sottoscrizioni relative ad uno o più sottoscrittori (subscriber), utilizzando l'opzione DeregAll. Ad esempio, se è specificata l'opzione DeregAll insieme ad un punto di sottoscrizione (ma non è specificato nessun argomento o filtro), vengono annullate tutte le sottoscrizioni relative ad un sottoscrittore (subscriber) sul punto di sottoscrizione specificato, indipendentemente dall'argomento e dal filtro. E' consentita qualsiasi combinazione di argomento, filtro e punto di sottoscrizione; se tutti questi tre elementi sono specificati, può corrispondere solo una sottoscrizione e l'opzione DeregAll viene ignorata.

Il messaggio deve essere inviato dal sottoscrittore (subscriber) che ha registrato la sottoscrizione; ciò è confermato verificando l'ID utente del sottoscrittore (subscriber).

Anche un amministratore del sistema può annullare la registrazione delle sottoscrizioni. Tuttavia, le sottoscrizioni registrate con una coda dinamica temporanea sono associate alla coda, non al nome della coda. Se la coda viene eliminata, esplicitamente o dallo scollegamento dell'applicazione dal gestore code, non è più possibile utilizzare il comando Annulla registrazione sottoscrittore (subscriber) per annullare la registrazione dei sottoscrittori (subscriber) per tale coda. E' possibile annullare le sottoscrizioni utilizzando il workbench, queste vengono eliminate automaticamente dal broker la volta successiva in cui rileva una corrispondenza tra una pubblicazione e la sottoscrizione o la volta successiva il cui il broker viene riavviato. In circostanze normali, le applicazioni devono annullare la registrazione delle relative sottoscrizioni prima di eliminare la coda o nello scollegamento dal gestore code.

Se un sottoscrittore (subscriber) invia un messaggio per annullare la registrazione di una sottoscrizione e riceve un messaggio che indica che ciò è stato eseguito con esito positivo, alcune pubblicazioni potrebbero comunque raggiungere la coda del sottoscrittore (subscriber) se queste sono state elaborate dal broker contemporaneamente all'annullamento della registrazione della sottoscrizione. Se i messaggi non vengono eliminati dalla coda, potrebbe riscontrarsi un accumulo di messaggi non elaborati sulla coda del sottoscrittore (subscriber). Se l'applicazione esegue un loop che include una chiamata MQGET con l'appropriato CorrelId dopo una certa pausa, questi messaggi vengono eliminati dalla coda. Se si sta utilizzando il protocollo di unità SCADA è presente un'opzione di ripulitura di avvio e la fine. Ciò significa che i messaggi vengono eliminati per il client.

In modo simile, se il sottoscrittore (subscriber) utilizza una coda dinamica permanente, annulla la registrazione e chiude la coda con l'opzione MQCO_DELETE_PURGE su una chiamata MQCLOSE, la coda potrebbe non essere vuota. Se, quando la coda viene eliminata, il broker non ha ancora eseguito il commit di alcune pubblicazioni, la chiamata MQCLOSE emette il codice di ritorno MQRC_Q_NOT_EMPTY. L'applicazione può evitare questo problema ponendosi in pausa e immettendo nuovamente la chiamata MQCLOSE di tanto in tanto.

Proprietà

<Command> (MQPSC_COMMAND)
Il valore è DeregSub (MQPSC_DEREGISTER_SUBSCRIBER).

Questa proprietà deve essere specificata.

<Topic> (MQPSC_TOPIC)
Il valore è una stringa che contiene l'argomento di cui deve essere annullata la registrazione.

Nell'eventualità debba essere annullata la registrazione di più argomenti, è possibile ripetere questa proprietà. Può essere omessa se DeregAll è specificato in <RegOpt>.

Gli argomenti specificati possono essere una serie secondaria di quelli registrati, se il sottoscrittore (subscriber) desidera conservare le sottoscrizioni per altri argomenti. E' consentito l'uso dei caratteri wildcard, ma una stringa di argomento che contiene tali caratteri deve corrispondere esattamente alla relativa stringa specificata nel messaggio di comando Registra sottoscrittore (subscriber).

<SubPoint> (MQPSC_SUBSCRIPTION_POINT)
Il valore è una stringa che specifica il punto di sottoscrizione da cui deve essere staccata la sottoscrizione.
Non è possibile ripetere questa proprietà. Può essere omessa se è specificato <Topic> o se DeregAll è specificato in <RegOpt>. Se si omette questa proprietà, si verifica quanto riportato di seguito:
  • Se non viene specificato DeregAll, dal punto di sottoscrizione predefinito viene annullata la registrazione delle sottoscrizioni corrispondenti alla proprietà <Topic> (e, se presente, alla proprietà <Filter>).
  • Se DeregAll viene specificato, da tutti i punti di sottoscrizione viene annullata la registrazione di tutte le sottoscrizioni (corrispondenti alle proprietà <Topic> e <Filter>, se presenti).

Tenere presente che non è possibile specificare esplicitamente il punto di sottoscrizione predefinito. Non è possibile, quindi, annullare le registrazioni di tutte le sottoscrizioni solo da questo punto di sottoscrizione; è necessario specificare gli argomenti.

<SubIdentity> (MQPSC_SUBSCRIPTION_IDENTITY)
Questa è una stringa a lunghezza variabile, la cui lunghezza massima è di 64 caratteri. Viene utilizzata per rappresentare un'applicazione con un interesse in una sottoscrizione. Il broker conserva una serie di identità di sottoscrittore (subscriber) per ciascuna sottoscrizione. Ogni sottoscrizione può fare in modo che la relativa serie di identità ne contenga solo una oppure un numero illimitato.

Se SubIdentity si trova nella serie di identità relativa alla sottoscrizione, viene eliminata dalla serie. Se, come conseguenza di ciò, la serie di identità rimane vuota, la sottoscrizione viene eliminata dal broker, a meno che non si specifica LeaveOnly come un valore della proprietà RegOpt. Se la serie di identità ne contiene ancora delle altre, allora la sottoscrizione non viene eliminata dal broker e il flusso della pubblicazione non viene interrotto.

Se SubIdentity è specificata, ma non è presente nella serie di identità relativa alla sottoscrizione, il comando Annulla registrazione sottoscrittore (subscriber) ha esito negativo e viene restituito il codice di ritorno MQRCCF_SUB_IDENTITY_ERROR.

<Filter> (MQPSC_FILTER)
Il valore è una stringa che specifica il filtro di cui deve essere annullata la registrazione. Deve corrispondere completamente, compreso maiuscolo/minuscolo e gli eventuali spazi, ad un filtro di sottoscrizione che è stato registrato in precedenza.

Nell'eventualità debba essere annullata la registrazione di più filtri, è possibile ripetere questa proprietà. Può essere omessa se è specificato <Topic> o se DeregAll è specificato in <RegOpt>.

I filtri specificati possono essere una serie secondaria di quelli registrati se il sottoscrittore (subscriber) desidera conservare le sottoscrizioni per altri filtri.

<RegOpt> (MQPSC_REGISTRATION_OPTION)
La proprietà delle opzioni di registrazione può assumere i seguenti valori:
DeregAll  
(MQPSC_DEREGISTER_ALL)

Devono essere annullate tutte le sottoscrizioni corrispondenti registrate per questo sottoscrittore (subscriber).

Se si specifica DeregAll:
  • È possibile omettere <Topic>, <SubPoint> e <Filter>.
  • È possibile ripetere, se necessario, <Topic> e <Filter>.
  • <SubPoint> non deve essere ripetuto.
Se non si specifica DeregAll:
  • È necessario indicare <Topic> e può essere ripetuto se necessario.
  • È possibile omettere <SubPoint> e <Filter>.
  • <SubPoint> non deve essere ripetuto.
  • È possibile ripetere <Filter>, se necessario.
CorrelAsId  
(MQPSC_CORREL_ID_AS_IDENTITY)

Il CorrelId presente nel descrittore di messaggi (MQMD), che non deve essere zero, viene utilizzato per individuare il sottoscrittore (subscriber). Deve corrispondere a quanto utilizzato nella sottoscrizione di origine per CorrelId.

FullResp  
()

Quando si specifica FullResp, tutti gli attributi della sottoscrizione vengono restituiti nel messaggio di risposta, se il comando non ha esito negativo.

Quando si specifica FullResp, non è consentito l'uso di DeregAll nel comando Annulla registrazione sottoscrittore (subscriber). Non è possibile inoltre specificare più argomenti. In entrambi i casi, il comando ha esito negativo con il codice di ritorno MQRCCF_REG_OPTIONS_ERROR.

LeaveOnly  
(MQPSC_LEAVE_ONLY)

Quando specificata con una SubIdentity presente nella serie di identità per la sottoscrizione, SubIdentity viene eliminata dalla serie di identità per la sottoscrizione. La sottoscrizione non viene eliminata dal broker, anche se la serie di identità risultante è vuota. Se il valore SubIdentity non è nella serie di identità, il comando non ha esito positivo e viene restituito il codice di ritorno MQRCCF_SUB_IDENTITY_ERROR.

Se LeaveOnly viene specificata senza SubIdentity, il comando ha esito negativo e viene restituito il codice di ritorno MQRCCF_REG_OPTIONS_ERROR.

Se non sono specificate sia LeaveOnly che SubIdentity, la sottoscrizione viene eliminata indipendentemente dal contenuto della serie di identità per la sottoscrizione.

None  
(MQPSC_NONE)

Tutte le opzioni assumono i relativi valori predefiniti. Ciò ha lo stesso effetto di omettere la proprietà delle opzioni di registrazione. Se sono specificate altre opzioni in contemporanea, None viene ignorato.

VariableUserId  
(MQPSC_VARIABLE_USER_ID)

Quando specificata, l'identità del sottoscrittore (subscriber), coda, gestore code e correlid, non è limitata ad un solo ID utente. Ciò differisce dal comportamento esistente del broker che associa l'ID utente del messaggio di registrazione di origine con l'identità del sottoscrittore (subscriber) in modo da impedire l'utilizzo di tale identità da parte di qualsiasi altro utente. Se un nuovo sottoscrittore (subscriber) tenta di utilizzare la stessa identità, viene restituito il codice di ritorno MQRCCF_DUPLICATE_SUBSCRIPTION.

Qualsiasi utente può modificare o annullare la registrazione della sottoscrizione se in possesso dell'autorizzazione appropriata, evitando la verifica esistente della corrispondenza tra l'ID utente e quello del sottoscrittore (subscriber) di origine.

Per aggiungere questa opzione ad una sottoscrizione esistente il comando deve provenire dallo stesso ID utente della sottoscrizione di origine.

Se per la sottoscrizione di cui deve essere annullata la registrazione è impostato VariableUserId, l'impostazione deve essere eseguita in fase di annullamento della registrazione per indicare di quale sottoscrizione si tratta. Altrimenti, l'ID utente del comando Annulla registrazione sottoscrittore (subscriber) viene utilizzato per individuare la sottoscrizione. Questo viene sovrascritto, insieme agli altri identificativi del sottoscrittore (subscriber), se viene fornito un nome di sottoscrizione.

Se questa proprietà è omessa, il valore predefinito è che non viene impostata alcuna opzione di registrazione.

<QMgrName> (MQPSC_Q_MGR_NAME)
Il valore è il nome del gestore code per la coda del sottoscrittore (subscriber). Deve corrispondere a quanto utilizzato nella sottoscrizione di origine per QMgrName.

Se questa proprietà è omessa, il valore predefinito è il nome ReplyToQMgr nel descrittore di messaggi (MQMD). Se il nome risultante è vuoto, viene assunto come valore predefinito il nome del gestore code del broker.

<QName> (MQPSC_Q_NAME)
Il valore è il nome della coda del sottoscrittore (subscriber). Deve corrispondere a quanto utilizzato nella sottoscrizione di origine per QName.

Se questa proprietà è omessa, il valore predefinito è il nome ReplyToQ nel descrittore di messaggi (MQMD), che non deve essere vuoto.

<SubName> (MQPSC_SUBSCRIPTION_NAME)
Se si specifica SubName su un comando Annulla registrazione sottoscrittore (subscriber) il valore SubName ha la precedenza su tutti gli altri campi di identificativo, ad eccezione dell'ID utente, a meno che VariableUserId non sia impostato sulla sottoscrizione stessa. Se non è impostato VariableUserId, il comando Annulla registrazione sottoscrittore (subscriber) ha esito positivo solo se l'ID utente del messaggio di comando corrisponde a quello di sottoscrizione; altrimenti, il comando ha esito negativo e viene restituito il codice di ritorno MQRCCF_DUPLICATE_IDENTITY.

Se esiste una sottoscrizione che corrisponde all'identità tradizionale di questo comando, ma non è presente alcun SubName, il comando Annulla registrazione sottoscrittore (subscriber) ha esito negativo e viene restituito il codice di ritorno MQRCCF_SUB_NAME_ERROR. Se si tenta di annullare la registrazione di una sottoscrizione di SubName utilizzando un messaggio di comandi che corrisponde all'identità tradizionale, ma non è specificato alcun SubName, il comando ha esito positivo.

<SubUserData> (MQPSC_SUBSCRIPTION_USER_DATA)
Questa è una stringa di testo a lunghezza variabile. Il valore viene memorizzato dal broker con la sottoscrizione, ma non ha alcun effetto sul rilascio della pubblicazione al sottoscrittore (subscriber). Il valore può essere modificato con un nuovo valore eseguendo la nuova registrazione sulla stessa sottoscrizione. Questo attributo è presente per essere utilizzato dall'applicazione.

SubUserData viene restituito nelle informazioni meta-argomento (MQCACF_REG_SUB_USER_DATA) relative ad una sottoscrizione, se presente.

Esempio

Di seguito è riportato un esempio di NameValueData per un messaggio di comando Annulla registrazione sottoscrittore (subscriber). In questo esempio, l'applicazione annulla la registrazione della relativa sottoscrizione agli argomenti che contengono il punteggio aggiornato di tutti gli incontri. L'identità del sottoscrittore (subscriber), comprendente CorrelId, deriva dai valori predefiniti presenti in MQMD.
 <psc>
  <Command>DeregSub</Command>
  <RegOpt>CorrelAsId</RegOpt>
  <Topic>Sport/Soccer/State/LatestScore/#</Topic>
 </psc>
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
aq06970_