Route

Si applica a:SQL ServerIstanza gestita di SQL di Azure

Service Broker usa i percorsi 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 usando le route. Quando il servizio risponde, SQL Server usa 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.

Un percorso è costituito da tre componenti di base:

  • Nome servizio
    Il nome del servizio per cui questo percorso specifica l'indirizzamento. Questo nome deve corrispondere esattamente al nome del servizio nel comando BEGIN DIALOG.

  • Identificatore dell'istanza broker
    Un identificatore univoco per un database specifico a cui 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
    Un indirizzo del computer effettivo, una parola chiave che limita il percorso al computer locale o una parola chiave che indica che il livello di trasporto deduce l'indirizzo dal nome del servizio. Un indirizzo di rete può essere l'indirizzo del broker che ospita il servizio oppure può essere l'indirizzo di un 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. I percorsi che non forniscono un nome di servizio corrispondono a un nome di servizio. I percorsi che non forniscono un identificatore di istanza broker corrispondono a qualsiasi identificatore di istanza del broker. 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. Tuttavia, non è garantito che altre conversazioni sullo stesso gruppo di conversazioni vengano instradate allo stesso database. Se un'applicazione richiede che i messaggi nel percorso delle conversazioni correlate vengano indirizzati allo stesso database, quando l'applicazione inizia una conversazione, dovrà fornire un identificatore di istanza broker.

Per impostazione predefinita, tutti i database utente contengono la route AutoCreatedLocal. Questo percorso corrisponde a qualsiasi nome di servizio e istanza di Service Broker e, tramite esso, viene specificato che il messaggio deve essere recapitato 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 sicurezza dalla modifica o dall'eliminazione della route AutoCreatedLocal.

Vedi anche