Opzioni MQPMO (MQLONG)
Il campo Opzioni controlla l'operazione delle chiamate MQPUT e MQPUT1 .
Opzione ambito È possibile specificare una o nessuna delle opzioni MQPMO. Per specificare più di un'opzione, aggiungere i valori insieme (non aggiungere la stessa costante più di una volta) oppure combinare i valori utilizzando l'operazione OR bit per bit (se il linguaggio di programmazione supporta operazioni bit). Le combinazioni non valide vengono annotate; qualsiasi altra combinazione è valida.
- MQPMO_SCOPE_QMGR
- La pubblicazione viene inviata solo ai sottoscrittori che hanno sottoscritto questo gestore code. La pubblicazione non viene inoltrata ai gestori code di pubblicazione / sottoscrizione remoti che hanno effettuato una sottoscrizione a questo gestore code, che sovrascrive qualsiasi comportamento impostato utilizzando l'attributo dell'argomento PUBSCOPE.Nota: se non impostato, l'ambito della pubblicazione è determinato dall'attributo dell'argomento PUBSCOPE.
- MQPMO_SUPPRESS_REPLYTO
Tutte le informazioni specificate nei campi
ReplyToQeReplyToQMgrdi MQMD di questa pubblicazione non vengono trasmesse ai sottoscrittori. Se questa opzione viene utilizzata con un'opzione di report che richiede unReplyToQ, la chiamata non riesce con MQRC_MISSING_REPLY_TO_Q.- MQPMO_RETAIN
La pubblicazione inviata deve essere conservata dal gestore code. Questa conservazione consente a un sottoscrittore di richiedere una copia di questa pubblicazione dopo l'ora in cui è stata pubblicata, utilizzando la chiamata MQSUBRQ. Consente inoltre l'invio di una pubblicazione alle applicazioni che effettuano la loro sottoscrizione dopo l'ora in cui è stata effettuata la pubblicazione (a meno che non scelgano di non inviarla utilizzando l'opzione MQSO_NEW_PUBLICATIONS_ONLY). Se un'applicazione riceve una pubblicazione che è stata conservata, viene indicata dalla proprietà del messaggio MQIsRetained di tale pubblicazione.
È possibile conservare solo una pubblicazione su ciascun nodo della struttura ad albero degli argomenti. Pertanto, se esiste già una pubblicazione conservata per questo argomento, pubblicata da qualsiasi altra applicazione, viene sostituita con questa pubblicazione. È quindi preferibile evitare che più di un editore conservi i messaggi sullo stesso argomento.
Quando le pubblicazioni conservate vengono richieste da un sottoscrittore, la sottoscrizione utilizzata potrebbe contenere un carattere jolly nell'argomento, nel qual caso un numero di pubblicazioni conservate potrebbe corrispondere (su vari nodi nella struttura ad albero dell'argomento) e diverse pubblicazioni potrebbero essere inviate all'applicazione richiedente. Per ulteriori informazioni, consultare la descrizione della chiamata MQSUBRQ - Richiesta di sottoscrizione .
Per informazioni su come le pubblicazioni conservate interagiscono con i livelli di sottoscrizione, consultare Intercettazione delle pubblicazioni.
Se viene utilizzata questa opzione e la pubblicazione non può essere conservata, il messaggio non viene pubblicato e la chiamata ha esito negativo con MQRC_PUT_NOT_USED.
- MQPMO_NOT_OWN_SUBS
- Indica al gestore code che l'applicazione non desidera inviare alcuna delle sue pubblicazioni alle sottoscrizioni di cui è proprietaria. Le sottoscrizioni sono considerate di proprietà della stessa applicazione se gli handle di connessione sono gli stessi.
- MQPMO_WARN_IF_NO_SUBS_MATCHED
- Se nessuna sottoscrizione corrisponde alla pubblicazione, restituire un codice di completamento (
CompCode) di MQCC_WARNING e il codice motivo MQRC_NO_SUBS_MATCHED.Se MQRC_NO_SUBS_MATCHED viene restituito dall'operazione di inserimento, la pubblicazione non è stata consegnata ad alcuna sottoscrizione. Tuttavia, se l'opzione MQPMO_RETAIN viene specificata nell'operazione di inserimento, il messaggio viene conservato e consegnato a qualsiasi sottoscrizione corrispondente definita successivamente.
Una sottoscrizione sull'argomento corrisponde alla pubblicazione se si verifica una delle condizioni seguenti:- Il messaggio viene consegnato alla coda di sottoscrizione
- Il messaggio sarebbe stato recapitato alla coda di sottoscrizione, ma un problema con la coda significa che il messaggio non può essere inserito nella coda e di conseguenza è stato inserito nella coda di messaggi non recapitati o eliminato.
- È definita un'uscita di instradamento che sopprime la consegna del messaggio alla sottoscrizione
Una sottoscrizione sull'argomento non corrisponde alla pubblicazione se si verifica una delle condizioni riportate di seguito:- La sottoscrizione ha una stringa di selezione che non corrisponde alla pubblicazione
- La sottoscrizione ha specificato l'opzione MQSO_PUBLICATION_ON_REQUEST
- La pubblicazione non è stata consegnata perché l'opzione MQPMO_NOT_OWN_SUBS è stata specificata sull'operazione di inserimento e la sottoscrizione corrisponde all'identità del publisher
- MQPMO_SYNCPOINT
- La richiesta è di operare all'interno dei normali protocolli di unità di lavoro. Il messaggio non è visibile all'esterno dell'unità di lavoro fino a quando non viene eseguito il commit dell'unità di lavoro. Se viene eseguito il backout dell'unità di lavoro, il messaggio viene eliminato.
Se MQPMO_SYNCPOINT e MQPMO_NO_SYNCPOINT non vengono specificati, l'inclusione della richiesta di inserimento nei protocolli dell'unità di lavoro viene determinata dall'ambiente che esegue il gestore code e non dall'ambiente che esegue l'applicazione. Su z/OS®, la richiesta di inserimento è all'interno di un'unità di lavoro. In tutti gli altri ambienti, la richiesta di inserimento non si trova all'interno di un'unità di lavoro.
A causa di queste differenze, un'applicazione che si desidera trasferire non deve consentire l'impostazione predefinita di questa opzione; specificare esplicitamente MQPMO_SYNCPOINT o MQPMO_NO_SYNCPOINT.
Non specificare MQPMO_SYNCPOINT con MQPMO_NO_SYNCPOINT.
- MQPMO_NO_SYNCPOINT
- La richiesta è di operare al di fuori dei normali protocolli di unità di lavoro. Il messaggio è disponibile immediatamente e non può essere eliminato ripristinando un'unità di lavoro.
Se MQPMO_NO_SYNCPOINT e MQPMO_SYNCPOINT non vengono specificati, l'inclusione della richiesta di inserimento nei protocolli dell'unità di lavoro viene determinata dall'ambiente che esegue il gestore code e non dall'ambiente che esegue l'applicazione. Su z/OS, la richiesta di inserimento è all'interno di un'unità di lavoro. In tutti gli altri ambienti, la richiesta di inserimento non si trova all'interno di un'unità di lavoro.
A causa di queste differenze, un'applicazione che si desidera trasferire non deve consentire l'impostazione predefinita di questa opzione; specificare esplicitamente MQPMO_SYNCPOINT o MQPMO_NO_SYNCPOINT.
Non specificare MQPMO_NO_SYNCPOINT con MQPMO_SYNCPOINT.
- ID_MQPMO_NEW_MSG_
- Il gestore code sostituisce il contenuto del campo
MsgIdin MQMD con un nuovo ID messaggio. Questo identificativo del messaggio viene inviato con il messaggio e restituito all'applicazione all'output dalla chiamata MQPUT o MQPUT1 .L'opzione MQPMO_NEW_MSG_ID può essere specificata anche quando il messaggio viene inserito in un elenco di distribuzione; per i dettagli, consultare la descrizione del campo
MsgIdnella struttura MQPMR.L'utilizzo di questa opzione allevia l'applicazione della necessità di reimpostare il campo
MsgIdsu MQMI_NONE prima di ogni richiamo MQPUT o MQPUT1 . - ID_CORREL_NEW_MQPMO_
- Il gestore code sostituisce il contenuto del campo
CorrelIdin MQMD con un nuovo identificativo di correlazione. Questo identificativo di correlazione viene inviato con il messaggio e restituito all'applicazione all'output dalla chiamata MQPUT o MQPUT1 .L'opzione MQPMO_NEW_CORREL_ID può essere specificata anche quando il messaggio viene inserito in un elenco di distribuzione; per i dettagli, consultare la descrizione del campo
CorrelIdnella struttura MQPMR.MQPMO_NEW_CORREL_ID è utile nelle situazioni in cui l'applicazione richiede un identificativo di correlazione univoco.
- Messaggio fisico
- È l'unità di informazioni più piccola che è possibile inserire o rimuovere da una coda; spesso corrisponde alle informazioni specificate o richiamate in una singola chiamata MQPUT, MQPUT1o MQGET. Ogni messaggio fisico ha il proprio descrittore di messaggio (MQMD). Generalmente, i messaggi fisici sono distinti da valori differenti per l'identificativo del messaggio (campo
MsgIdin MQMD), sebbene ciò non venga applicato dal gestore code. - Messaggio logico
- Un messaggio logico è una singola unità di informazioni dell'applicazione solo per piattaforme non z/OS . In assenza di vincoli di sistema, un messaggio logico è uguale a un messaggio fisico. Ma quando i messaggi logici sono estremamente grandi, i vincoli di sistema potrebbero rendere consigliabile o necessario suddividere un messaggio logico in due o più messaggi fisici, denominati segmenti.
Un messaggio logico che è stato segmentato è costituito da due o più messaggi fisici che hanno lo stesso identificativo di gruppo non null (campo
GroupIdin MQMD) e lo stesso numero di sequenza del messaggio (campoMsgSeqNumberin MQMD). I segmenti sono distinti da valori differenti per l'offset del segmento (campoOffsetin MQMD), che fornisce l'offset dei dati nel messaggio fisico dall'inizio dei dati nel messaggio logico. Poiché ogni segmento è un messaggio fisico, i segmenti in un messaggio logico di solito hanno identificativi di messaggio differenti.Un messaggio logico che non è stato segmentato, ma per il quale la segmentazione è stata consentita dall'applicazione mittente, ha anche un identificativo di gruppo non null, sebbene in questo caso esista solo un messaggio fisico con tale identificativo di gruppo se il messaggio logico non appartiene a un gruppo di messaggi. I messaggi logici per i quali la segmentazione è stata inibita dall'applicazione di invio hanno un identificativo di gruppo null (MQGI_NONE), a meno che il messaggio logico non appartenga a un gruppo di messaggi.
- Gruppo di messaggi
- Un gruppo di messaggi è una serie di uno o più messaggi logici che hanno lo stesso identificativo di gruppo non null. I messaggi logici nel gruppo si distinguono per valori differenti per il numero di sequenza del messaggio, che è un numero intero compreso tra 1 e n, dove n è il numero di messaggi logici nel gruppo. Se uno o più messaggi logici sono segmentati, nel gruppo sono presenti più di n messaggi fisici.
- ORDER MQPMO_LOGICAL_
- Questa opzione indica al gestore code il modo in cui l'applicazione inserisce i messaggi in gruppi e segmenti di messaggi logici. Può essere specificato solo nella chiamata MQPUT; non è valido nella chiamata MQPUT1 .Se MQPMO_LOGICAL_ORDER è specificato, indica che l'applicazione utilizza le chiamate MQPUT successive per:
- Inserire i segmenti in ciascun segmento logico nell'ordine di offset crescente dei segmenti, a partire da 0, senza intervalli.
- Inserire tutti i segmenti in un unico messaggio logico prima di inserirli nel successivo messaggio logico.
- Inserire i messaggi logici in ciascun gruppo di messaggi nell'ordine crescente del numero di sequenza dei messaggi, a partire da 1, senza intervalli. IBM® MQ incrementa automaticamente il numero di sequenza del messaggio.
- Inserire tutti i messaggi logici in un unico gruppo di messaggi prima di inserirli nel successivo gruppo di messaggi.
Per informazioni dettagliate su MQPMO_LOGICAL_ORDER, consultare Ordine logico e fisico
- MQPMO_NO_CONTEXT
- L'identità e il contesto di origine sono impostati in modo da non indicare alcun contesto. Ciò significa che i campi di contesto in MQMD sono impostati su:
- Spazi vuoti per i campi di caratteri
- Valori null per i campi byte
- Zeri per campi numerici
- MQPMO_DEFAULT_CONTEXT
- Il messaggio deve avere informazioni di contesto predefinite associate ad esso, sia per l'identità che per l'origine. Il gestore code imposta i campi di contesto nel descrittore del messaggio nel modo seguente:Per ulteriori informazioni sul contesto del messaggio, consultare Contesto del messaggio.
Campo in MQMD Valore utilizzato UserIdentifierDeterminato dall'ambiente, se possibile; altrimenti, impostare su spazi vuoti. AccountingTokenDeterminato dall'ambiente, se possibile; altrimenti, impostare su MQACT_NONE. ApplIdentityDataImpostare su spazi vuoti. PutApplTypeDeterminato dall'ambiente. PutApplNameDeterminato dall'ambiente, se possibile; altrimenti, impostare su spazi vuoti. PutDateImpostare la data di inserimento del messaggio. PutTimeImpostare l'ora di inserimento del messaggio. ApplOriginDataImpostare su spazi vuoti. Questi sono i valori predefiniti e le azioni se non viene specificata alcuna opzione di contesto.
- MQPMO_PASS_IDENTITY_CONTEXT
- Il messaggio deve essere associato alle informazioni di contesto. Il contesto di identità viene preso dall'handle di coda specificato nel campo
Context. Le informazioni sul contesto di origine vengono create dal gestore code nello stesso modo in cui vengono generate per MQPMO_DEFAULT_CONTEXT (consultare la precedente tabella per i valori). Per ulteriori informazioni sul contesto del messaggio, consultare Contesto del messaggio.Per la chiamata MQPUT, la coda deve essere stata aperta con l'opzione MQOO_PASS_IDENTITY_CONTEXT (o un'opzione che la implica). Per la chiamata MQPUT1 , viene eseguito lo stesso controllo di autorizzazione della chiamata MQOPEN con l'opzione MQOO_PASS_IDENTITY_CONTEXT.
- MQPMO_PASS_ALL_CONTEXT
- Il messaggio deve essere associato alle informazioni di contesto. Il contesto viene preso dall'handle di coda specificato nel campo
Context. Per ulteriori informazioni sul contesto del messaggio, consultare Controllo delle informazioni sul contesto.Per la chiamata MQPUT, la coda deve essere stata aperta con l'opzione MQOO_PASS_ALL_CONTEXT (o un'opzione che la implica). Per la chiamata MQPUT1 , viene eseguito lo stesso controllo di autorizzazione della chiamata MQOPEN con l'opzione MQOO_PASS_ALL_CONTEXT.
- MQPMO_SET_IDENTITY_CONTEXT
- Il messaggio deve essere associato alle informazioni di contesto. L'applicazione specifica il contesto di identità nella struttura MQMD. Le informazioni sul contesto di origine vengono create dal gestore code nello stesso modo in cui vengono generate per MQPMO_DEFAULT_CONTEXT (consultare la precedente tabella per i valori). Per ulteriori informazioni sul contesto del messaggio, consultare Contesto del messaggio.
Per la chiamata MQPUT, la coda deve essere stata aperta con l'opzione MQOO_SET_IDENTITY_CONTEXT (o un'opzione che la implica). Per la chiamata MQPUT1 , viene eseguito lo stesso controllo di autorizzazione della chiamata MQOPEN con l'opzione MQOO_SET_IDENTITY_CONTEXT.
- MQPMO_SET_ALL_CONTEXT
- Il messaggio deve essere associato alle informazioni di contesto. L'applicazione specifica l'identità, l'origine e il contesto utente nella struttura MQMD. Per ulteriori informazioni sul contesto del messaggio, consultare Contesto del messaggio.
Per la chiamata MQPUT, la coda deve essere stata aperta con l'opzione MQOO_SET_ALL_CONTEXT. Per la chiamata MQPUT1 , viene eseguito lo stesso controllo di autorizzazione della chiamata MQOPEN con l'opzione MQOO_SET_ALL_CONTEXT.
È possibile specificare solo una delle opzioni MQPMO_ * _CONTEXT. Se non si specifica alcun valore, viene utilizzato MQPMO_DEFAULT_CONTEXT.
- MQPMO_MD_FOR_OUTPUT_ONLY
- Il parametro del descrittore del messaggio deve essere utilizzato solo per l'output per restituire il descrittore del messaggio inserito. I campi descrittore del messaggio associati ai campi
NewMsgHandle,OriginalMsgHandleo entrambi della struttura MQPMO devono essere utilizzati per l'input.Se non viene fornito un handle del messaggio valido, la chiamata ha esito negativo con il codice di errore MQRC_MD_ERROR.
- MQPMO_ASYNC_RESPONSE
- L'opzione MQPMO_ASYNC_RESPONSE richiede il completamento di un'operazione MQPUT o MQPUT1 senza che l'applicazione attenda il completamento della chiamata da parte del gestore code. L'utilizzo di questa opzione può migliorare le prestazioni della messaggistica, in particolare per le applicazioni che utilizzano i collegamenti client. Un'applicazione può controllare periodicamente, utilizzando il comando MQSTAT, se si è verificato un errore durante le chiamate asincrone precedenti.
- MQPMO_SYNC_RESPONSE
- La specifica di questo tipo di risposta di inserimento assicura che l'operazione MQPUT o MQPUT1 venga sempre emessa in modo sincrono. Se l'operazione di inserimento ha esito positivo, vengono completati tutti i campi in MQMD e MQPMO.
- MQPMO_RESPONSE_AS_Q_DEF
- Se questo valore viene specificato per una chiamata MQPUT, il tipo di risposta di inserimento utilizzato viene preso dal valore DEFPRESP specificato sulla coda quando è stato aperto per la prima volta dall'applicazione. Se un'applicazione client è connessa a un gestore code a un livello precedente a Versione 7.0, si comporta come se fosse specificato MQPMO_SYNC_RESPONSE.
- MQPMO_RESPONSE_AS_TOPIC_DEF
- MQPMO_RESPONSE_AS_TOPIC_DEF è un sinonimo di MQPMO_RESPONSE_AS_Q_DEF da utilizzare con gli oggetti argomento.
- MQPMO_ALTERNATE_USER_AUTHORITY
- MQPMO_ALTERNATE_USER_AUTHORITY indica che il campo
AlternateUserIddel parametroObjDescdella chiamata MQPUT1 contiene un identificativo utente che deve essere utilizzato per convalidare l'autorità di inserire i messaggi nella coda. La chiamata può avere esito positivo solo seAlternateUserIdè autorizzato ad aprire la coda con le opzioni specificate, a prescindere dal fatto che l'identificativo utente con cui l'applicazione è in esecuzione sia autorizzato a farlo. (Ciò non si applica alle opzioni di contesto specificate, tuttavia, che vengono sempre controllate rispetto all'identificativo utente con cui è in esecuzione l'applicazione.)Questa opzione è valida solo con la chiamata MQPUT1 .
- MQPMO_FAIL_IF_QUIESCING
- Questa opzione forza la chiamata MQPUT o MQPUT1 ad avere esito negativo se il gestore code è in stato di sospensione.
Su z/OS, questa opzione forza anche l'esito negativo della chiamata MQPUT o MQPUT1 se la connessione (per un'applicazione CICS® o IMS ) è in stato di sospensione.
La chiamata restituisce il codice di completamento MQCC_FAILED con codice motivo MQRC_Q_MGR_QUIESCING o MQRC_CONNECTION_QUIESCING.
- MQPMO_RESOLVE_LOCAL_Q
- Utilizzare questa opzione per riempire
ResolvedQNamenella struttura MQPMO con il nome della coda locale in cui viene inserito il messaggio eResolvedQMgrNamecon il nome del gestore code locale che ospita la coda locale. Per ulteriori informazioni relative a MQPMO_RESOLVE_LOCAL_Q, consultare l'argomento MQOO_RESOLVE_LOCAL_Q.Se si è autorizzati a inserire in una coda, si dispone dell'autorità richiesta per specificare questo indicatore nella chiamata MQPUT; non è necessaria alcuna autorizzazione speciale.
- MQPMO_NONE
- Utilizzare questo valore per indicare che non sono state specificate altre opzioni; tutte le opzioni assumono i propri valori predefiniti. MQPMO_NONE è definito per aiutare la documentazione del programma; non è previsto che questa opzione venga utilizzata con altre, ma poiché il suo valore è zero, tale utilizzo non può essere rilevato.
MQPMO_NONE è un campo di input. Il valore iniziale del campo Options è MQPMO_NONE.