Alguns tópicos de eventos oferecem suporte para eventos de bloqueio. O comportamento de uma assinatura de extensibilidade depende se o tópico oferece suporte ou não a esses tipos de eventos e de como você configura a assinatura.
As assinaturas de extensibilidade do Cloud Assembly podem usar dois tipos amplos de tópicos de evento: tópicos de eventos sem bloqueio e tópicos de eventos de bloqueio. O tipo de tópico de evento define o comportamento da assinatura de extensibilidade.
Tópicos de eventos sem bloqueio
Tópicos de eventos sem bloqueio permitem apenas a criação de assinaturas sem bloqueio. Assinaturas sem bloqueio são disparadas de forma assíncrona, e você não pode depender da ordem em que as assinaturas são disparadas.
Bloqueio de tópicos de evento
Alguns tópicos de eventos oferecem suporte para bloqueio. Se uma assinatura estiver marcada como uma assinatura com bloqueio, nenhuma das mensagens que atenderem às condições definidas serão recebidas por outras assinaturas com condições correspondentes até que o item executável da assinatura com bloqueio seja executado.
Assinaturas com bloqueio são executadas por ordem de prioridade. O valor de prioridade mais alto é 0 (zero). Se houver mais de uma assinatura com bloqueio para o mesmo tópico de evento com o mesmo nível de prioridade, as assinaturas serão executadas em ordem alfabética inversa com base no nome da assinatura. Após o processamento de todas as assinaturas com bloqueio, a mensagem será enviada a todas as assinaturas sem bloqueio ao mesmo tempo. Como as assinaturas com bloqueio são executadas de forma sincronizada, a carga de eventos alterados inclui o evento atualizado quando as assinaturas subsequentes são notificadas.
Você pode usar tópicos de eventos com bloqueio para gerenciar várias assinaturas que são dependentes umas das outras.
Por exemplo, é possível ter duas assinaturas de fluxo de trabalho de provisionamento, nas quais a segunda assinatura depende dos resultados da primeira. A primeira assinatura altera uma propriedade durante o provisionamento, enquanto a segunda registra a nova propriedade, como um nome de máquina, em um sistema de arquivos. A assinatura de ChangeProperty é priorizada como 0, enquanto a assinatura de RecordProperty é priorizada como 1, pois a segunda assinatura usa os resultados da primeira. Quando uma máquina for provisionada, a assinatura de ChangeProperty começa a ser executada. Como as condições da assinatura de RecordProperty são baseadas em uma condição pós-provisionamento, um evento dispara a assinatura de RecordProperty. No entanto, como o fluxo de trabalho ChangeProperty é um fluxo de trabalho com bloqueio, o evento apenas será recebido quando ele for finalizado. Quando o nome da máquina for alterado e a primeira assinatura de fluxo de trabalho for finalizada, a segunda assinatura de fluxo de trabalho será executada e registrará o nome da máquina no sistema de arquivos.
Item Executável de Recuperação
Para tópicos de eventos com bloqueio, você pode adicionar um item executável de recuperação à assinatura. O item executável de recuperação em uma assinatura será executado se o item executável primário falhar. Por exemplo, você pode criar uma assinatura de fluxo de trabalho na qual o item executável primário é um fluxo de trabalho que cria registros em um sistema CMDB, como o ServiceNow. Mesmo que a assinatura de fluxo de trabalho falhe, alguns registros podem ser criados no sistema CMDB. Nesse cenário, um item executável de recuperação pode ser usado para limpar os registros deixados no sistema CMDB pelo item executável com falha.
Para casos de uso que incluem várias assinaturas dependentes umas das outras, você pode adicionar uma propriedade ebs.recover.continuation ao item executável de recuperação. Com essa propriedade, você pode direcionar se o serviço de extensibilidade deve continuar com a próxima assinatura na sua cadeia caso a assinatura atual falhe.