Algunos temas de eventos admiten eventos de bloqueo. El comportamiento de una suscripción de extensibilidad depende de si el tema es compatible con estos tipos de eventos y de cómo se configura la suscripción.
Las suscripciones de extensibilidad de Cloud Assembly pueden utilizar dos tipos amplios de temas de eventos: temas de eventos de no bloqueo y de bloqueo. El tipo de tema de evento define el comportamiento de la suscripción de extensibilidad.
Temas de eventos de no bloqueo
Los temas de eventos que no bloqueo solo permiten crear suscripciones de no bloqueo. Las suscripciones de no bloqueo se activan de forma asíncrona y no se puede confiar en el orden en el que se activan.
Temas de eventos de bloqueo
Algunos temas de eventos admiten bloqueo. Si una suscripción está marcada como de bloqueo, ninguna otra suscripción con condiciones coincidentes recibirá ninguno de los mensajes que cumplen con las condiciones establecidas hasta que se ejecute el elemento ejecutable de la suscripción de bloqueo.
Las suscripciones de bloqueo se ejecutan siguiendo un orden de prioridad. El valor de prioridad más alto es 0 (cero). Si tiene más de una suscripción de bloqueo para el mismo tema de evento con el mismo nivel de prioridad, las suscripciones se ejecutan en orden alfabético inverso según el nombre de la suscripción. Después de que se procesen todas las suscripciones de bloqueo, el mensaje se envía a todas las suscripciones de no bloqueo al mismo tiempo. Debido a que las suscripciones de bloqueo se ejecutan de forma sincrónica, la carga útil del evento modificada incluye el evento actualizado cuando se notifican las suscripciones posteriores.
Puede utilizar temas de eventos de bloqueo para administrar varias suscripciones que tengan dependencia mutua.
Por ejemplo, puede tener dos suscripciones de flujo de trabajo de aprovisionamiento en las que la segunda suscripción dependa de los resultados de la primera. La primera suscripción cambia una propiedad durante el aprovisionamiento y la segunda registra la nueva propiedad, como un nombre de máquina, en un sistema de archivos. La suscripción ChangeProperty tiene prioridad 0 y RecordProperty, prioridad 1, porque la segunda suscripción utiliza los resultados de la primera. Cuando una máquina se aprovisiona, la suscripción ChangeProperty empieza a ejecutarse. Debido a que las condiciones de la suscripción RecordProperty se basan en una condición posterior al aprovisionamiento, un evento activa la suscripción RecordProperty. Sin embargo, debido a que el flujo de trabajo de ChangeProperty es un flujo de trabajo de bloqueo, el evento no se recibe hasta que finalice. Cuando se cambia el nombre de la máquina y la suscripción del primer flujo de trabajo finaliza, se ejecuta la suscripción del segundo flujo de trabajo, y se registra el nombre en el sistema de archivos.
Elemento ejecutable de recuperación
Para los temas de eventos de bloqueo, puede agregar a la suscripción un elemento ejecutable de recuperación. El elemento ejecutable de recuperación en una suscripción se ejecuta si se produce un error en el elemento ejecutable principal. Por ejemplo, puede crear una suscripción de flujo de trabajo en la que el elemento ejecutable principal sea un flujo de trabajo que cree registros en un sistema CMDB, como ServiceNow. Incluso si se produce un error en la suscripción del flujo de trabajo, se pueden crear algunos registros en el sistema CMDB. En este escenario, se puede utilizar un elemento ejecutable de recuperación para limpiar los registros que deja en el sistema CMDB el elemento ejecutable con errores.
Para casos prácticos que incluyen varias suscripciones que dependen entre sí, puede agregar una propiedad ebs.recover.continuation al elemento ejecutable de recuperación. Con esta propiedad, puede indicar si el servicio de extensibilidad debe continuar con la siguiente suscripción de la cadena en caso de que se produzca un error en la suscripción actual.