Mensaje de Request Update

El mensaje de mandato de Request Update se envía desde un suscriptor a un intermediario para solicitar las publicaciones retenidas actuales para el tema y el punto de suscripción especificados que coinciden con el filtro (opcional) en cuestión.

Este mensaje se envía a SYSTEM.BROKER.CONTROL.QUEUE, la cola de control del intermediario. Para transferir un mensaje a esta cola, es necesario tener autorización, además de autorización de acceso al tema de la actualización de la petición; esto lo define el administrador del sistema del intermediario.

Normalmente, este mandato se utiliza si el suscriptor especificó la opción PubOnReqOnly al registrarse. Si el intermediario tiene alguna publicación retenida coincidente, ésta se envía al suscriptor. Si el intermediario no tiene ninguna publicación retenida coincidente, la petición falla con el código de retorno MQRCCF_NO_RETAINED_MSG. El peticionario deberá haber registrado previamente una suscripción con los mismos valores de Topic, SubPoint y Filter.

Propiedades

<Mandato> (MQPSC_COMMAND)
El valor es ReqUpdate (MQPSC_REQUEST_UPDATE). Esta propiedad debe especificarse.
<Tema> (MQPSC_TOPIC)
El valor es el tema que el suscriptor solicita; se permiten los comodines.

Esta propiedad debe especificarse, pero sólo puede aparecer una vez en este mensaje.

<SubPunto> (MQPSC_SUBSCRIPTION_POINT)
El valor es el punto de suscripción al que va adjunta la suscripción.

Si se omite esta propiedad, se utiliza el punto de suscripción por omisión.

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

La propiedad <Filter> deberá tener el mismo valor que la propiedad especificada en la suscripción original para la que el usuario solicita una actualización.

Si se omite esta propiedad, el filtrado de contenido no se lleva a cabo.

<RegOpc> (MQPSC_REGISTRATION_OPTION)
La propiedad de opciones de registro puede tomar los valores siguientes:
CorrelAsId  
(MQPSC_CORREL_ID_AS_IDENTITY)

El CorrelId del descriptor de mensaje (MQMD), que no debe ser cero, se utiliza al enviar publicaciones coincidentes a la cola de suscriptores.

None  
(MQPSC_NONE)

Todas las opciones toman los valores por omisión correspondientes. Esto tiene el mismo efecto que omitir la propiedad <RegOpt>. Si se especifican otras opciones al mismo tiempo, se omite None.

VariableUserId  
(MQPSC_VARIABLE_USER_ID)

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, el mandato falla con 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 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 se omite esta propiedad, el valor por omisión es que no se establezca ninguna opción de registro.

<NombGstColas> (MQPSC_Q_MGR_NAME)
El valor es el nombre del gestor de colas para la cola de suscriptores a la que el intermediario envía la publicación retenida coincidente.

Si se omite esta propiedad, el valor por omisión es el nombre de ReplyToMgr del descriptor de mensaje (MQMD). Si el nombre resultante está en blanco, toma como valor por omisión el QMgrName del intermediario.

<NombCola> (MQPSC_Q_NAME)
El valor es el nombre de la cola de suscriptores a la que el intermediario envía la publicación retenida coincidente.

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.

<SubNombre> (MQPSC_SUBSCRIPTION_NAME)
Se trata de un nombre dado a una suscripción determinada. Si se especifica en un mandato Request Update, el valor SubName precederá al resto de campos de identificador excepto al de ID de usuario, a menos que se establezca VariableUserId en la propia suscripción. Si no se establece VariableUserId, el mandato Request Update sólo se ejecuta correctamente si el ID de usuario del mensaje de mandato coincide con el de la suscripción. Si el ID de usuario del mensaje de mandato no coincide con el de la suscripción, el mandato falla con el código de retorno MQRCCF_DUPLICATE_IDENTITY.

Si se establece VariableUserId y el ID de usuario difiere del de la suscripción, el mandato se ejecuta correctamente si el ID de usuario del nuevo mensaje de mandato tiene autorización para examinar la cola de corriente de datos y transferir datos a la cola de suscriptores de la suscripción. De lo contrario, el mandato falla con el código de retorno MQRCCF_NOT_AUTHORIZED.

Si existe una suscripción que coincide con la identidad tradicional de este mandato pero no tiene ningún SubName, el mandato Request Update falla con el código de retorno MQRCCF_SUB_NAME_ERROR.

Si se intenta solicitar la actualización de una suscripción que tiene un SubName utilizando un mensaje de mandato que coincida con la identidad tradicional pero sin que haya un SubName especificado, el mandato se ejecuta correctamente.

Ejemplo

A continuación figura un ejemplo de NameValueData para un mensaje de mandato de Request Update. En la aplicación de ejemplo, el servicio de resultados utiliza este mensaje para solicitar las publicaciones retenidas que contienen las últimas puntuaciones para todos los equipos. La identidad del suscriptor, incluido CorrelID, se toma de los valores por omisión del MQMD.
 <psc>
  <Command>ReqUpdate</Command>
  <RegOpt>CorrelAsId</RegOpt>
  <Topic>Sport/Soccer/State/LatestScore/#</Topic>
 </psc>