Attesa messaggio ESB

Da wiki.maggioli.it.
Jump to navigation Jump to search

Questa attività permette di bloccare il flusso mettendolo in attesa di un determinato messaggio sul Bus di comunicazione interno.

Introduzione

Si faccia riferimento all'attività Pubblicazione messaggio ESB per una descrizione della struttura dei messaggi.

Parametri

I parametri di sono i seguenti:

  • message_class: descrive la tipologia di messaggio che si intende ricevere
  • value: tornerà in output il contenuto "valore" del messaggio ricevuto

message_class

E' possibile specificare una o più stringhe, che fungeranno da filtro di selezione del messaggio da ricevere. Specificare un filtro troppo "largo" rischia di far ricevere un messaggio differente da quello che ci si aspetta.

Il filtro lavora sulla dot notation della classe, pertanto scrivere "wkf" farà ricevere qualsiasi messaggio la cui classe inizia per "wkf", come ad esempio "wkf.class.message...". Non verranno ricevuti messaggi che iniziano, ad esempio, per "wkflow.class....." in quanto è la dot notation che funge da delimitatore.

Specificando un array di stringhe è possibile definire un filtro in "and" che restringe l'insieme dei messaggi fino ad ottenere esattamente quello che si sta cercando.

value

E' un array di stringhe, ricevuto nell'ordine in cui è stato trasmesso dal mittente. Il contenuto dev'essere di tipologia conosciuta quindi è necessario accordarsi con il mittente in tal senso.

Funzionamento

Quando il flusso giunge su questa attività si ferma in attesa di un messaggio come sopra specificato. Dal momento in cui il flusso si è messo in attesa, il primo messaggio che passa sul Bus che rispecchia le condizioni viene ricevuto ed il suo valore tornato in output.

Attenzione: I messaggi inviati prima che il flusso si metta in attesa oppure dopo che il flusso ha ricevuto un messaggio NON VERRANNO CONSIDERATI. Si tenga bene a mente questo, soprattutto se si intendono realizzare dei cicli che vanno in attesa di messaggi. Alcuni di essi potrebbero venire persi perchè il flusso non era in attesa nel momento in cui sono stati spediti.

Nota: La ricezione di un messaggio NON E' ESCLUSIVA. Questo significa che quando il flusso riceve un messaggio, anche altri flussi (o applicazioni) in attesa dello stesso messaggio lo riceveranno. Questo torna utile qualora fosse necessario sincronizzare un numero variabile di processi tra loro.