Alcuni argomenti degli eventi supportano gli eventi di blocco. Il comportamento di una sottoscrizione di estendibilità dipende dal fatto che l'argomento supporti o meno questi tipi di evento e da come viene configurata la sottoscrizione.
Le sottoscrizioni di estendibilità di Cloud Assembly possono utilizzare due tipi di argomenti di evento , ovvero gli argomenti relativi agli eventi non di blocco e gli argomenti relativi agli eventi di blocco. Il tipo di argomento dell'evento definisce il comportamento della sottoscrizione di estendibilità.
Argomenti relativi agli eventi non di blocco
Gli argomenti degli eventi non di blocco consentono di creare solo sottoscrizioni non di blocco. Le sottoscrizioni non di blocco vengono attivate in modo asincrono e non è possibile fare affidamento sull'ordine in cui vengono attivate.
Argomenti relativi agli eventi di blocco
Alcuni argomenti degli eventi supportano il blocco. Se una sottoscrizione è contrassegnata come di blocco, tutti i messaggi che soddisfano le condizioni impostate non vengono ricevuti da altre sottoscrizioni con condizioni corrispondenti finché non viene eseguito l'elemento eseguibile della sottoscrizione di blocco.
Le sottoscrizioni di blocco vengono eseguite in ordine di priorità. Il valore di priorità più alto è 0 (zero). Se sono presenti più sottoscrizioni di blocco per lo stesso argomento di evento con lo stesso livello di priorità, le sottoscrizioni vengono eseguite in ordine alfabetico inverso in base al nome della sottoscrizione. Una volta elaborate tutte le sottoscrizioni di blocco, il messaggio viene inviato contemporaneamente a tutte le sottoscrizioni non di blocco. Poiché le sottoscrizioni di blocco vengono eseguite in modo sincrono, il payload dell'evento modificato include l'evento aggiornato quando vengono notificate le sottoscrizioni successive.
È possibile utilizzare gli argomenti relativi agli eventi di blocco per gestire più sottoscrizioni che dipendono l'una dall'altra.
È ad esempio possibile che siano presenti due sottoscrizioni al workflow di provisioning in cui la seconda sottoscrizione dipende dai risultati della prima sottoscrizione. La prima sottoscrizione modifica una proprietà durante il provisioning, mentre la seconda sottoscrizione registra la nuova proprietà, ad esempio il nome di una macchina, in un file system. Alla sottoscrizione ChangeProperty viene assegnata la priorità 0, mentre a RecordProperty viene assegnata la priorità 1, perché la seconda sottoscrizione utilizza i risultati della prima sottoscrizione. Quando viene effettuato il provisioning di una macchina, viene avviata l'esecuzione della sottoscrizione ChangeProperty. Poiché le condizioni della sottoscrizione RecordProperty si basano su una condizione di post-provisioning, un evento attiva la sottoscrizione RecordProperty. Tuttavia, poiché il workflow di ChangeProperty è un workflow di blocco, l'evento viene ricevuto solo dopo che il workflow è stato completato. Quando viene modificato il nome della macchina e viene completata la prima sottoscrizione al workflow, viene eseguita la seconda sottoscrizione al workflow e il nome della macchina viene registrato nel file system.
Elemento eseguibile di ripristino
Per gli argomenti relativi agli eventi di blocco, è possibile aggiungere un elemento eseguibile di ripristino alla sottoscrizione. L'elemento eseguibile di ripristino in una sottoscrizione viene eseguito se l'elemento eseguibile primario non riesce. Ad esempio, è possibile creare una sottoscrizione al workflow in cui l'elemento eseguibile primario sia un workflow che crea record in un sistema CMDB come ServiceNow. Anche se la sottoscrizione al workflow non riesce, è possibile che nel sistema CMDB vengano creati alcuni record. In questo scenario, è possibile utilizzare un elemento eseguibile di ripristino per rimuovere i record lasciati nel sistema CMDB dall'elemento eseguibile non riuscito.
Per i casi d'uso che includono più sottoscrizioni che dipendono l'una dall'altra, è possibile aggiungere una proprietà ebs.recover.continuation all'elemento eseguibile di ripristino. Con questa proprietà, è possibile specificare se il servizio di estendibilità deve continuare con la sottoscrizione successiva nella catena, nel caso in cui la sottoscrizione corrente non riesca.