El mensaje de mandato de Register Subscriber lo envía un suscriptor a un intermediario, o bien otra aplicación de parte de dicho suscriptor, para indicar que desea suscribirse a uno o varios temas en un punto de suscripción. También puede especificarse un filtro de contenido de mensaje.
Evite anidar paréntesis a una profundidad superior a 6 en expresiones de filtro de publicación/suscripción. La utilización de una profundidad superior a ésta puede repercutir gravemente en el rendimiento. La degradación del rendimiento aumenta de manera exponencial con la profundidad de la anidación.
El mensaje se envía a SYSTEM.BROKER.CONTROL.QUEUE, que es la cola de control del intermediario. Para trasnferir un mensaje a esta cola, es necesario tener autorización, además de autorización de acceso (definida por el administrador del sistema del intermediario) al tema o a los temas de la suscripción.
Si el usuario tiene autorización sobre algunos de los temas, pero no todos ellos, sólo se registrarán los temas para los que tenga autorización; una respuesta de aviso indica los temas que no están registrados.
Consulte el apartado Mensaje de Broker Response para obtener información detallada acerca de los parámetros del descriptor de mensaje (MQMD), necesarios al enviar 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 al cerrarse la cola.
Esta propiedad es necesaria y puede repetirse opcionalmente para tantos temas como sea necesario.
Si se omite esta propiedad, se utiliza el punto de suscripción por omisión.
Si se omite esta propiedad, el filtrado de contenido no se lleva a cabo.
Si se especifica para una suscripción existente que coincida con la identidad tradicional de este mandato de suscripción de registro, pero sin ningún valor SubName actual, el SubName especificado en este mandato se agrega a la suscripción.
Si se especifica AddName, el campo SubName es obligatorio, de lo contrario se devuelve MQRCCF_REG_OPTIONS_ERROR.
El CorrelID del descriptor de mensaje (MQMD) se utiliza al enviar publicaciones coincidentes a la cola de suscriptores. El CorrelID no debe ser cero.
Si se especifica, se devuelven todos los atributos de la suscripción en el mensaje de respuesta, si el mandato se ejecuta correctamente.
FullResp sólo es válido cuando el mensaje de mandato hace referencia a una sola suscripción. Por lo tanto, en el mandato sólo se permite un tema; de lo contrario, el mandato falla con el código de retorno MQRCCF_REG_OPTIONS_ERROR.
El intermediario informa al suscriptor de que hay una publicación retenida cuando envía un mensaje de publicación en respuesta a un mensaje de mandato de Register Subscriber o Request Update. Para ello, el intermediario incluye la opción de publicación IsRetainedPub en el mensaje.
Esta opción indica que la SubIdentity especificada debe agregarse como miembro exclusivo del conjunto de identidades para la suscripción, y que no pueden agregarse otras identidades al conjunto.
Si la identidad ya se ha unido de forma 'compartida' y es la única entrada del conjunto, el conjunto se cambia a un bloqueo exclusivo mantenido mediante esta identidad. De lo contrario, si la suscripción tiene actualmente otras identidades en el conjunto de identidades (con acceso compartido) el mandato falla con el código de retorno MQRCCF_SUBSCRIPTION_IN_USE.
Esta opción indica que la SubIdentity especificada debe agregarse al conjunto de identidades para la suscripción.
Si la suscripción está bloqueada actualmente de forma exclusiva (mediante la opción JoinExcl), el mandato falla con el código de retorno MQRCCF_SUBSCRIPTION_LOCKED, a menos que la identidad que tiene bloqueada la suscripción sea la misma que la de este mensaje de mandato. En este caso el bloqueo se modifica automáticamente para pasar a ser un bloqueo compartido.
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 éste tenga también una suscripción global correspondiente.
Las publicaciones retenidas que existen en el momento de registrarse la suscripción no se envían al suscriptor; sólo se le envían las publicaciones nuevas.
Si un suscriptor vuelve a registrarse y cambia esta opción de manera que deje de estar establecida, se le puede volver a enviar una publicación que ya se le haya enviado.
Los atributos de una suscripción coincidente existente no se cambian.
Al crearse una suscripción, se omite esta opción. El resto de opciones especificadas se aplican a la nueva suscripción.
Si una SubIdentity tiene también especificadas una de las opciones de unión (JoinExcl o JoinShared), la identidad se agrega al conjunto de identidades independientemente de que NoAlter se haya especificado.
Todas las opciones de registro toman los valores por omisión correspondientes.
Si el suscriptor ya está registrado, sus opciones se restablecen a los valores por omisión correspondientes (tenga en cuenta que este hecho no tiene el mismo efecto que omitir la propiedad de opciones de registro), y la caducidad de la suscripción se actualiza a partir del MQMD del mensaje de Register Subscriber.
Si se especifican al mismo tiempo otras opciones de registro, se omite el valor None.
Las publicaciones que coinciden con esta suscripción se entregan al suscriptor como mensajes no permanentes.
Las publicaciones que coinciden con esta suscripción se entregan al suscriptor como mensajes permanentes.
Las publicaciones que coinciden con esta suscripción se entregan al suscriptor con la permanencia que especifica el publicador. Este es el comportamiento por omisión.
Las publicaciones que coinciden con esta suscripción se entregan al suscriptor con la permanencia especificada en la cola de suscriptores.
El intermediario no envía publicaciones al suscriptor, excepto cuando responde a un mensaje de mandato de Request Update.
Si se especifica, la identidad del suscriptor (cola, gestor de colas e IDCorrel) no se restringe a un solo ID de usuario. Esto difiere del comportamiento existente del intermediario que asocia el ID de usuario del mensaje de registro original con la identidad del suscriptor y, a partir de ese momento, evita que cualquier otro usuario utilice esa identidad. Si un nuevo suscriptor intenta utilizar la misma identidad, se devuelve el código de retorno MQRCCF_DUPLICATE_SUBSCRIPTION.
Esto permite que cualquier usuario pueda modificar la suscripción, o anular el registro de la misma, si dispone de la autorización adecuada. Por lo tanto, no hay necesidad de comprobar que el ID de usuario coincida con el ID del suscriptor original.
Para agregar esta opción a una suscripción existente, el mandato debe proceder del mismo ID de usuario que el de la suscripción original.
Si la suscripción del mandato Request Update tiene establecido el valor VariableUserId, deberá establecerse a la hora de la petición de actualización para indicar la suscripción a la que se hace referencia. De lo contrario, el ID de usuario del mandato Request Update se utilizará para identificar la suscripción. Este ID se alterará temporalmente, junto con los otros identificadores de suscriptor, si se especifica un nombre de suscripción.
Si un mensaje de mandato de Register Subscriber no tiene establecida esta opción y hace referencia a una suscripción existente que sí la tiene establecida, la opción se elimina de la suscripción y el ID de usuario de la suscripción queda fijo. Si ya existe un suscriptor que tiene la misma identidad (queue, qmgr y CorrelID) pero tiene asociado un ID de usuario distinto, el mandato falla con el código de retorno MQRCCF_DUPLICATE_IDENTITY, ya que sólo puede haber un ID de usuario asociado con una identidad de suscriptor.
Si se omite la propiedad de opciones de registro y el suscriptor ya está registrado, las opciones de registro del suscriptor no cambian y la caducidad de la suscripción se actualiza a partir del MQMD del mensaje de Register Subscriber.
Si el suscriptor todavía no está registrado, se crea una nueva suscripción y todas las opciones de registro toman los valores por omisión correspondientes.
Los valores por omisión son PersAsPub y no hay establecidas otras opciones.
Si se omite esta propiedad, el valor por omisión es el nombre del ReplyToMgr del descriptor de mensaje (MQMD). Si el nombre resultante está en blanco, toma como valor por omisión el QMgrName del intermediario.
Si se omite esta propiedad, el valor por omisión es el nombre de la ReplyToQ del descriptor de mensaje (MQMD), que en este caso no debe estar en blanco.
Si la cola es una cola dinámica temporal, debe especificarse una entrega de publicaciones no permanente NonPers) en la propiedad <RegOpc>.
Si la cola es una cola dinámica temporal, el intermediario anula el registro de la suscripción automáticamente al cerrarse la cola.
Si ya existe una suscripción con este SubName, los demás atributos de esta suscripción (Topic, QMgrName, QName, CorrelId, UserId, RegOpts, UserSubData y Expiry) se alteran temporalmente con los atributos (si se especifican), que se hayan pasado en el nuevo mensaje de mandato de Register Subscriber. No obstante, si se utiliza la propiedad SubName y no se especifica el campo QName, pero se especifica ReplyToQ en la cabecera MQMD, la cola de suscriptores cambia y pasa a ser la cola ReplyToQ.
Si una suscripción que coincide con la identidad tradicional de este mandato ya existe, pero no tiene la opción SubName, el mandato de registro falla con el código de retorno MQRCCF_DUPLICATE_SUBSCRIPTION, a menos que se especifique la opción AddName.
Si intenta alterar una suscripción existente con nombre utilizando otro mandato Register Subscriber que especifique el mismo SubName, y los valores de Topic, QMgrName, QName y CorrelId del nuevo mandato coinciden con otra suscripción existente que tenga o no definido un SubName, el mandato falla con el código de retorno MQRCCF_DUPLICATE_SUBSCRIPTION. Así se evita que dos nombres de suscripción hagan referencia a la misma suscripción.
Un mandato de suscripción que especifica la opción JoinShared o JoinExcl añade la SubIdentity al conjunto de identidades de la suscripción, si todavía no se encuentra ahí y si el conjunto de identidades existente permite dicha acción; es decir, ningún otro suscriptor se ha unido de forma exclusiva o el conjunto de identidades está vacío.
Una alteración de los atributos de la suscripción como resultado de un mandato Register Subscriber que tiene especificada una SubIdentity sólo se ejecuta correctamente si se trata del único miembro del conjunto de identidades para esta suscripción. De lo contrario, el mandato falla con el código de retorno MQRCCF_SUBSCRIPTION_IN_USE. Así se evita que los atributos de una suscripción cambien sin que lo sepan otros suscriptores interesados.
La longitud máxima de una SubIdentity se define mediante MQ_SUB_IDENTITY_LENGTH. Si la SubIdentity especificada sobrepasa este valor, el mandato falla con el código de retorno MQRCCF_SUB_IDENTITY_ERROR.
La opción SubUserData se devuelve en la información de metatema (MQCACF_REG_SUB_USER_DATA) para la suscripción, si la hay.
Si especifica varios valores de las opciones de registro NonPers, PersAsPub, PersAsQueue y Pers, sólo se utilizará el último de ellos. No se pueden combinar estas opciones en una suscripción individual.
<psc> <Command>RegSub</Command> <RegOpt>PubOnReqOnly</RegOpt> <RegOpt>CorrelAsId</RegOpt> <Topic>Sport/Soccer/State/LatestScore/#</Topic> </psc>
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
aq06990_ |