El mensaje de mandato de Deregister Subscriber se envía a un intermediario desde un suscriptor, o a otra aplicación de parte de un suscriptor, para indicar que el suscriptor ya no desea recibir mensajes que coincidan con los parámetros establecidos.
Este mensaje se envía a SYSTEM.BROKER.CONTROL.QUEUE, la cola de control del intermediario. Para transferir un mensaje a esta cola, el usuario debe tener la autorización necesaria.
Consulte el apartado Configuración de MQMD en los mensajes de mandatos enviados al intermediario para obtener información detallada acerca de los parámetros del descriptor de mensaje (MQMD), necesarios al enviar un mensaje de mandato al intermediario.
El registro de una suscripción individual puede anularse especificando los valores de tema, punto de suscripción y filtro correspondientes de la suscripción original. Si no se ha especificado alguno de los valores (es decir, se tomaron los valores por omisión) en la suscripción original, dicho valor deberá omitirse al anularse el registro de la suscripción.
Los registros de todas las suscripciones de un suscriptor o un grupo de suscriptores pueden anularse utilizando la opción DeregAll. Por ejemplo, si se especifica DeregAll así como un punto de suscripción (pero no el tema ni el filtro), se anularán los registros de todas las suscripciones del suscriptor del punto de suscripción especificado, independientemente del tema y el filtro. Se permite cualquier combinación de tema, filtro y punto de suscripción; si se especifican estas tres cosas, sólo podrá podrá coincidir una suscripción y la opción DeregAll se omitirá.
El mensaje debe enviarlo el suscriptor que haya registrado la suscripción; para confirmar que se trata de dicho suscriptor, es necesario comprobar el ID de usuario del suscriptor.
Los registros de las suscripciones también puede anularlos un administrador del sistema. No obstante, las suscripciones registradas con una cola dinámica temporal están asociadas con la cola, no sólo con el nombre de la cola. Si se suprime la cola, de forma explícita o debido a la desconexión de la aplicación del gestor de colas, ya no será posible utilizar el mandato Deregister Subscriber para anular el registro de las suscripciones de dicha cola. Para anular el registro de las suscripciones puede utilizarse el área de trabajo y el intermediario las eliminará automáticamente la próxima vez que haga coincidir una publicación con la suscripción o la próxima vez que rearranque. En circunstancias normales, las aplicaciones deben anular el registro de sus suscripciones antes de suprimir la cola o de desconectarse del gestor de colas.
Si un suscriptor envía un mensaje para anular el registro de una suscripción y recibe un mensaje de respuesta que indica que su petición se ha procesado correctamente, es posible que algunas publicaciones lleguen todavía a la cola de suscriptores si el intermediario las estaba procesando al mismo tiempo en que se anuló el registro de la suscripción. Si no se eliminan los mensajes de la cola, puede producirse una acumulación de mensajes sin procesar en la cola de suscriptores. Si la aplicación ejecuta un bucle que incluye una llamada MQGET con el CorrelId adecuado después de un período de desactivación, estos mensajes se quitan de la cola. Si utiliza el protocolo SCADA Device, dispone de una opción de inicio y final limpio. Esto significa que los mensajes se eliminan para el cliente.
De forma similar, si el suscriptor utiliza una cola dinámica permanente y anula el registro de la cola y la cierra con la opción MQCO_DELETE_PURGE en una llamada MQCLOSE, es posible que la cola no está vacía. Si todavía hay publicaciones de intermediario pendientes de confirmación al suprimir la cola, la llamada MQCLOSE emite un código de retorno MQRC_Q_NOT_EMPTY. La aplicación puede evitar este problema entrando en un período de suspensión y emitiendo de nuevo la llamada MQCLOSE de vez en cuando.
Esta propiedad debe especificarse.
Opcionalmente, esta propiedad puede repetirse si va a anularse el registro de varios temas. Puede omitirse si se especifica DeregAll en la propiedad <RegOpc>.
Los temas especificados pueden ser un subconjunto de los temas registrados si el suscriptor desea retener suscripciones para otros temas. Los comodines están permitidos, pero la serie de caracteres de un tema que contenga comodines debe coincidir exactamente con la serie de caracteres correspondiente especificada en el mensaje de mandato de Register Subscriber.
Tenga en cuenta que no puede especificar explícitamente el punto de suscripción por omisión. Por lo tanto, no es posible anular el registro de todas las suscripciones de este punto de suscripción únicamente; es necesario especificar los temas.
Si SubIdentity está en el conjunto de identidades de la suscripción, se eliminará del conjunto. Si debido a ello el conjunto de identidades se queda vacío, la suscripción de elimina del intermediario a menos que se especifique LeaveOnly como un valor de la propiedad RegOpc. Si el conjunto de identidades todavía contiene otras identidades, la suscripción no se elimina del intermediario y el flujo de publicaciones no se interrumpe.
Si se especifica SubIdentity pero la SubIdentity no está en el conjunto de identidades de la suscripción, el mandato Deregister Subscribe falla con el código de retorno MQRCCF_SUB_IDENTITY_ERROR.
Opcionalmente, esta propiedad puede repetirse si va a anularse el registro de varios filtros. Puede omitirse si se especifica un <Tema> o si se especifica DeregAll en <RegOpc>.
Los filtros especificados pueden ser un subconjunto de los temas registrados si el suscriptor desea retener suscripciones para otros filtros.
Deben anularse los registros de todas las suscripciones coincidentes registradas para este suscriptor.
El CorrelId del descriptor de mensaje (MQMD), que no debe ser cero, se utiliza para identificar al suscriptor. Debe coincidir con el CorrelId utilizado en la suscripción original.
Si se especifica FullResp, todos los atributos de la suscripción se devuelven en el mensaje de respuesta si el mandato no falla.
Si se especifica FullResp, DeregAll no se permite en el mandato Deregister Subscriber. Tampoco es posible especificar varios temas. El mandato falla con el código de retorno MQRCCF_REG_OPTIONS_ERROR, en ambos casos.
Si se especifica este valor con SubIdentity, que es en el conjunto de identidades de la suscripción, la SubIdentity se elimina del conjunto de identidades de la suscripción. La suscripción no se elimina del intermediario, aunque el conjunto de identidades resultante esté vacío. Si el valor SubIdentity no se encuentra en el conjunto de identidades, el mandato falla con el código de retorno MQRCCF_SUB_IDENTITY_ERROR.
Si se especifica LeaveOnly sin ningún valor SubIdentity, el mandato falla con el código de retorno MQRCCF_REG_OPTIONS_ERROR.
Si no se especifica LeaveOnly ni ninguna SubIdentity, la suscripción se eliminará independientemente del contenido del conjunto de identidades de la suscripción.
Todas las opciones toman los valores por omisión correspondientes. Esto tiene el mismo efecto que omitir la propiedad de opciones de registro. Si se especifican otras opciones al mismo tiempo, se omite None.
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.
Cualquier usuario puede modificar o anular el registro de la suscripción si dispone de la autorización adecuada, con lo que se evita comprobar que el ID de usuario coincida con el ID de usuario 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 cuyo registro debe anularse tiene establecido el valor VariableUserId, éste debe establecerse a la hora de anulación del registro para indicar la suscripción cuyo registro va a anularse. De lo contrario, el ID de usuario del mandato Deregister Subscriber se utiliza 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.
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 nombre del gestor de colas del intermediario.
Si se omite esta propiedad, el valor por omisión es el nombre de la ReplyToQ del descriptor de mensaje (MQMD), que no debe estar en blanco.
Si existe una suscripción que coincide con la identidad tradicional de este mandato pero no tiene ningún SubName, el mandato Deregister Subscriber falla con el código de retorno MQRCCF_SUB_NAME_ERROR. Si se intenta anular el registro 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.
La opción SubUserData se devuelve en la información de metatema (MQCACF_REG_SUB_USER_DATA) para una suscripción, si la hay.
<psc> <Command>DeregSub</Command> <RegOpt>CorrelAsId</RegOpt> <Topic>Sport/Soccer/State/LatestScore/#</Topic> </psc>
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
aq06970_ |