Route
Service Broker utilizza le route per determinare la destinazione di recapito dei messaggi. Quando un servizio invia un messaggio durante una conversazione, SQL Server individua il servizio destinatario del messaggio utilizzando le route. Quando il servizio risponde, SQL Server utilizza nuovamente le route per individuare il servizio di origine. Per impostazione predefinita, ogni database contiene una route in base alla quale i messaggi per i servizi privi di una route esplicita vengono recapitati all'interno dell'istanza di SQL Server.
I componenti di base di una route sono tre:
Nome servizio
Nome del servizio per il quale la route specifica l'indirizzamento. Il nome deve corrispondere esattamente a Service Name nel comando BEGIN DIALOG.Identificatore dell'istanza di Service Broker
Identificatore univoco per il database specifico al quale inviare i messaggi. Corrisponde alla colonna service_broker_guid nella riga della tabella sys.databases per il database al quale la route punta.Indirizzo di rete
Indirizzo effettivo di un computer, parola chiave che limita la route al computer locale o parola chiave che indica che il livello trasporto rileva l'indirizzo dal nome del servizio. Un indirizzo di rete può essere costituito dall'indirizzo dell'istanza di Service Broker che ospita il servizio o dall'indirizzo di un'istanza di Service Broker di inoltro.
Per determinare la route per una conversazione, SQL Server confronta il nome del servizio e l'identificatore dell'istanza di Service Broker specificati nell'istruzione BEGIN DIALOG CONVERSATION con il nome del servizio e l'identificatore dell'istanza di Service Broker specificati nella route. Le route per le quali non è specificato alcun nome di servizio possono utilizzare qualsiasi nome di servizio. Le route per le quali non è specificato un identificatore dell'istanza di Service Broker specifico possono utilizzare qualsiasi identificatore. Quando più route corrispondono a una conversazione, SQL Server ne seleziona una come descritto in Routing di Service Broker.
Dopo l'acknowledgement del primo messaggio da parte della destinazione, SQL Server garantisce l'esecuzione del routing di tutti i messaggi successivi della conversazione allo stesso database. Per altre conversazioni dello stesso gruppo, tuttavia, non viene necessariamente eseguito il routing allo stesso database. Se per un'applicazione è necessario eseguire il routing dei messaggi delle conversazioni correlate allo stesso database, l'applicazione deve specificare l'identificatore dell'istanza di Service Broker all'inizio della conversazione.
Per impostazione predefinita, tutti i database utente contengono la route AutoCreatedLocal. Questa route può utilizzare qualsiasi nome di servizio e qualsiasi istanza di Service Broker e specifica il recapito dei messaggi all'interno dell'istanza corrente. Per gli scenari semplici, nei quali sia l'initiator che la destinazione della conversazione si trovano nella stessa istanza di SQL Server, non sono necessarie route aggiuntive. La creazione di una route per ogni servizio, tuttavia, consente una migliore protezione dalla modifica o dall'eliminazione della route AutoCreatedLocal.
Vedere anche