Mensaje de registro de suscriptor

El mensaje de mandato de registro de suscriptor lo envía un suscriptor a un intermediario o lo envía otra aplicación en nombre de un suscriptor para indicar que desea suscribirse a uno o más temas en un punto de suscripción. También ha de especificarse un filtro de contenido de mensaje.

En las expresiones de filtro de publicación/suscripción, la anidación de paréntesis produce una disminución exponencial del rendimiento. En la práctica, evite anidar paréntesis a un nivel de profundidad superior a 6.

El mensaje se envía a SYSTEM.BROKER.CONTROL.QUEUE, que es la cola de control del intermediario. En la suscripción, se necesita autorización para colocar un mensaje en esta cola, además de autorización de acceso (establecida por el administrador del sistema del intermediario) al tema o temas.

Si el usuario tiene autorización sobre algunos temas, pero no todos, únicamente se registrarán aquellos para los que tenga autorización; una respuesta de aviso indica los temas que no se han registrado.

Consulte el apartado Mensaje de respuesta de intermediario para obtener detalles de los parámetros del descriptor de mensaje (MQMD) necesarios cuando se envía un mensaje de mandato al intermediario.

Si la cola es una cola dinámica temporal, el intermediario anula el registro de la suscripción automáticamente cuando se cierra la cola.

Propiedades

<Command> (MQPSC_COMMAND)
El valor es RegSub (MQPSC_REGISTER_SUBSCRIBER). Esta propiedad ha de especificarse.
<Topic> (MQPSC_TOPIC)
El tema para el cual el suscriptor desea recibir publicaciones. Pueden especificarse caracteres comodín como parte del tema.

Esta propiedad ha de especificarse y puede repetirse, opcionalmente, para tantos temas como se desee.

<SubPoint> (MQPSC_SUBSCRIPTION_POINT)
Este valor es el punto de suscripción al que está unida la suscripción.

Si se omite esta propiedad, el valor por omisión es el punto de suscripción utilizado.

<Filter> (MQPSC_FILTER)
El valor es una expresión SQL que se utiliza como filtro en el contenido de los mensajes de publicación. Si una publicación sobre el tema especificado coincide con el filtro, se envía al suscriptor.

Si se omite esta propiedad, no se produce ningún filtrado del contenido.

<RegOpt> (MQPSC_REGISTRATION_OPTION)
La propiedad de opciones de registro puede tener uno de los siguientes valores:
AddName  
(MQPSC_ADD_NAME)

Cuando se especifica para una suscripción existente que coincida con la identidad tradicional de este mandato de registro de suscripción, pero sin ningún valor actual de SubName, el SubName especificado en este mandato se añade a la suscripción.

Si se especifica AddName, el campo SubName es obligatorio, de lo contrario se devuelve MQRCCF_REG_OPTIONS_ERROR.

CorrelAsId  
(MQPSC_CORREL_ID_AS_IDENTITY)

El CorrelId del descriptor de mensaje (MQMD) se utiliza cuando se envían publicaciones coincidentes a la cola de suscriptores. El CorrelId no ha de ser cero.

FullResp  
(MQPSC_FULL_RESPONSE)

Cuando se han especificado, todos los atributos de la suscripción se devuelven en el mensaje de respuesta si el mandato no falla.

FullResp sólo es válido cuando el mensaje de mandato se refiere a una sola suscripción. Por lo tanto, en el mandato se permite únicamente un tema; de lo contrario, el mandato devuelve el código de retorno MQRCCF_REG_OPTIONS_ERROR.

InformIfRet  
(MQPSC_INFORM_IF_RETAINED)

El intermediario informa al suscriptor si una publicación queda retenida cuando envía un mensaje de publicación en respuesta a un mensaje de mandato de registro de suscriptor o de petición de actualización. El intermediario realiza esta operación incluyendo la opción IsRetainedPub en el mensaje.

JoinExcl  
(MQPSC_JOIN_EXCLUSIVE)

Esta opción indica que la SubIdentity especificada ha de añadirse como miembro exclusivo del debe añadirse como miembro exclusivo del conjunto de identidades para la suscripción y no se puede añadir al conjunto ninguna otra identidad-

Si la identidad ya se ha unido como 'compartida' y es la única entrada del conjunto, éste cambia por un bloqueo exclusivo mantenido por la identidad. De lo contrario, si la suscripción tiene actualmente otras identidades en el conjunto de identidades (con acceso compartido), el mandato no se ejecuta correctamente y devuelve el código de retorno MQRCCF_SUBSCRIPTION_IN_USE.

JoinShared  
(MQPSC_JOIN_SHARED)

Esta opción indica que la SubIdentity especificada ha de añadirse al conjunto de identidades para la suscripción.

Si actualmente la identidad está bloqueada exclusivamente (utilizando la opción JoinExcl), el mandato no se ejecuta correctamente y devuelve el código de retorno MQRCCF_SUBSCRIPTION_LOCKED, a menos que la identidad que tiene bloqueada la suscripción sea la misma que la del pulgadas. En ese caso el bloqueo se modifica automáticamente y pasa a ser un bloqueo compartido.

Local  
(MQPSC_LOCAL)

La suscripción es local y no se distribuye a otros intermediarios de la red. Las publicaciones realizadas en otros intermediarios no se entregan a este suscriptor, a menos que también tenga una suscripción global correspondiente.

NewPubsOnly  
(MQPSC_NEW_PUBS_ONLY)

Las publicaciones retenidas que ya existen cuando se registra la suscripción no se envían al suscriptor; únicamente se envían las publicaciones nuevas.

Si un suscriptor efectúa un nuevo registro y cambia esta opción para que ya no esté establecida, es posible que una publicación que ya se haya enviado vuelva a enviarse.

NoAlter  
(MQPSC_NO_ALTER)

Los atributos de una publicación coincidente ya existente no cambian.

Cuando se crea una suscripción, esta opción se ignora. Todas las demás opciones se aplican a la nueva suscripción.

Si una SubIdentity también tiene especificada una de las opciones de unión (JoinExcl o JoinShared), la identidad se añade al conjunto de identidades independientemente de si se ha especificado NoAlter.

None  
(MQPSC_NONE)

Todas las opciones de registro toman sus valores por omisión.

Si el suscriptor ya está registrado, sus opciones recuperan sus valores por omisión (tenga en cuenta que esto no tiene el mismo efecto que omitir la propiedad de opciones de registro) y la caducidad de la suscripción se actualiza desde el MQMD del mensaje de registro de suscriptor.

Si se especifican otras opciones de registro simultáneamente, se ignora None.

NonPers  
(MQPSC_NON_PERSISTENT)

Las publicaciones que coinciden con esta suscripción se entregan al suscriptor como mensajes no persistentes.

Pers  
(MQPSC_PERSISTENT)

Las publicaciones que coinciden con esta suscripción se entregan al suscriptor como mensajes persistentes.

PersAsPub  
(MQPSC_PERSISTENT_AS_PUBLISH)

Las publicaciones que coinciden con esta suscripción se entregan al suscriptor con la persistencia especificada por el publicador. Éste es el comportamiento por omisión.

PersAsQueue  
(MQPSC_PERSISTENT_AS_Q)

Las publicaciones que coinciden con esta suscripción se entregan al suscriptor con la persistencia especificada en la cola de suscriptores.

PubOnReqOnly  
(MQPSC_PUB_ON_REQUEST_ONLY)

El intermediario no envía publicaciones al suscriptor, excepto en respuesta a un mensaje de mandato de petición de actualización.

VariableUserId  
(MQPSC_VARIABLE_USER_ID)

Cuando se especifica la identidad del suscriptor (cola, gestor de colas e id de correlación), no está limitada a un solo ID de usuario. Esto difiere del comportamiento existente del intermediario que asocia el ID de usuario del mensaje de registro original a la identidad del suscriptor y que, a partir de ese momento, impide que ningún otro usuario utilice dicha identidad. Si un nuevo suscriptor intenta utilizar la misma identidad, se devuelve el código de retorno MQRCCF_DUPLICATE_SUBSCRIPTION.

Esto permite a cualquier usuario modificar la suscripción o anular su registro, si el usuario tiene la autorización adecuada. Por lo tanto, no es necesario comprobar si el ID de usuario es el del suscriptor original.

Para añadir esta opción a una suscripción existente, el mandato ha de proceder del mismo ID de usuario que la suscripción original propiamente dicha.

Si la suscripción del mandato de petición de actualización tiene establecido VariableUserId, esto ha de establecerse en el momento de solicitar la petición de actualización para indicar a qué suscripción se refiere. De lo contrario, se utiliza el ID de usuario del mandato de petición de actualización para identificar la suscripción. Esto queda anulado, junto con los demás identificadores de suscriptor, si se facilita un nombre de suscripción.

Si un mensaje de mandato de registro de suscriptor que no tenga establecida esta opción hace referencia a una suscripción existente que tenga establecida esta opción, la opción se elimina de dicha suscripción y el ID de usuario queda fijado. Si ya existe un suscriptor que tenga la misma identidad (cola, gestor de colas e id de correlación) pero con un ID de usuario distinto asociado al mismo, el mandato no se ejecuta correctamente y devuelve el código de retorno MQRCCF_DUPLICATE_IDENTITY debido a que sólo puede haber un ID de usuario asociado a cada identidad de suscriptor.

Si la propiedad de opciones de registro se omite y el suscriptor ya está registrado, sus opciones de registro no cambian y la caducidad de la suscripción se actualiza desde el MQMD del mensaje de registro de suscriptor.

Si el suscriptor no se ha registrado aún, se creará una nueva suscripción en la que todas las opciones de registro adoptarán sus valores por omisión.

Los valores por omisión son PersAsPub y ninguna otra opción establecida.

<QMgrName> (MQPSC_Q_MGR_NAME)
El valor es el nombre del gestor de colas para la cola de suscriptores al que el intermediario envía las publicaciones coincidentes.

Si se omite esta propiedad, el valor por omisión es el nombre del gestor de la cola de respuestas (ReplyToQMgr) que hay en el descriptor del mensaje (MQMD). Si el nombre resultante está en blanco, se adopta por omisión el nombre del gestor de colas (QMgrName) del intermediario.

<QName> (MQPSC_Q_NAME)
El valor es el nombre de la cola de suscriptores a la que el intermediario envía las publicaciones coincidentes.

Si se omite esta propiedad, el valor por omisión es el nombre de la cola de respuestas (ReplyToQ) en el descriptor del mensaje (MQMD), que no ha de estar en blanco en este caso.

Si la cola es una cola dinámica temporal, ha de especificarse la entrega de publicaciones no persistente (NonPers) en la propiedad <RegOpt>.

Si la cola es una cola dinámica temporal, el intermediario anula el registro de la suscripción automáticamente cuando se cierra la cola.

<SubName> (MQPSC_SUBSCRIPTION_NAME)
Este es el nombre que se da a una suscripción en particular. Pude utilizarse en vez del gestor de colas, la cola y el id de correlación para referirse a una suscripción.

Si ya existe una suscripción con ese SubName, todos los demás atributos de la suscripción (Topic, QMgrName, QName, CorrelId, UserId, RegOpts, UserSubData y Expiry) se sustituyen por los atributos, si se han especificado, que se pasan en el nuevo mensaje de mandato de registro de suscriptor. No obstante si se utiliza SubName sin haber especificado ningún campo de QName y en la cabecera del MQMD se ha especificado una ReplyToQ, la cola de suscriptores cambiará para ser la ReplyToQ.

Si existe una suscripción que coincide con la identidad tradicional de este mandato, pero no tiene ningún SubName, el mandato de registro no se ejecuta correctamente y devuelve el código de retorno MQRCCF_DUPLICATE_SUBSCRIPTION, a menos que se haya especificado la opción AddName.

Si se intenta modificar una suscripción con nombre existente utilizando otro mandato de registro de suscriptor que especifique el mismo SubName y los valores de Topic, QMgrName, QName y CorrelId del nuevo mandato coinciden con una suscripción distinta existente, con o sin un SubName definido, el mandato no se ejecuta correctamente y devuelve el código de retorno MQRCCF_DUPLICATE_SUBSCRIPTION. De este modo se evita que dos nombres de suscripción se refieran a la misma suscripción.

<SubIdentity> (MQPSC_SUBSCRIPTION_IDENTITY)
Esta serie de caracteres se utiliza para representar una aplicación que tenga interés en una suscripción. Es una serie de caracteres de longitud variable, cuya longitud máxima es de 64 caracteres y que es opcional. El intermediario mantiene un conjunto de identidades de suscriptores para cada suscripción. Cada suscripción puede permitir que su conjunto de identidades contenga únicamente una identidad, o un número ilimitado de identidades (vea las opciones JoinShared y JoinExcl).

Un mandato de suscripción que especifique la opción JoinShared o JoinExcl añade la SubIdentity al conjunto de identidades de la suscripción, si no se encuentra ya en él y si el conjunto de identidades existente permite esta acción; es decir, si ningún otro suscriptor se ha unido de forma exclusiva o si el conjunto de identidades está vacío.

Cualquier modificación de los atributos de la suscripción como resultado de un mandato de registro de suscriptor en el que se ha especificado una SubIdentity, sólo se ejecuta correctamente si va a ser el único miembro del conjunto de identidades para esta suscripción. De lo contrario, el mandato no se ejecuta correctamente y devuelve el código de retorno MQRCCF_SUBSCRIPTION_IN_USE. Esto evita que los atributos de una suscripción se modifiquen sin que otros suscriptores tengan constancia de ello.

Si especifica una serie de caracteres que tenga más de 64 caracteres, el mandato no se ejecuta correctamente y se devuelve el código de retorno MQRCCF_SUB_IDENTITY_ERROR.

<SubUserData> (MQPSC_SUBSCRIPTION_USER_DATA)
Esta es una serie de caracteres de longitud variable. El valor lo almacena el intermediario con la suscripción, pero no influye en la entrega de la publicación al suscriptor. El valor puede modificarse anulando el registro de la misma suscripción con un valor nuevo. Este atributo se ha concebido para que lo utilice la aplicación.

Los SubUserData se devuelven en la información del Metatopic (MQCACF_REG_SUB_USER_DATA) de una suscripción, si existen,

Si especifica más de uno de los valores de opción de registro NonPers, PersAsPub, PersAsQueue y Pers, únicamente se utilizará el último. Estas opciones no se pueden combinar en una suscripción individual.

Ejemplo

Este es un ejemplo de NameValueData para un mensaje de mandato de registro de suscriptor. En la aplicación de ejemplo, el servicio de resultados utiliza este mensaje para registrar una suscripción a los temas que contengan los últimos resultados de todos los partidos, con la opción 'Publish on Request Only' establecida. La identidad del suscriptor, incluido el CorrelId, se toma de los valores por omisión del MQMD.
 <psc>
  <Command>RegSub</Command>
  <RegOpt>PubOnReqOnly</RegOpt>
  <RegOpt>CorrelAsId</RegOpt>
  <Topic>Sport/Soccer/State/LatestScore/#</Topic>
 </psc>
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
aq06990_