Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server
Istanza gestita di SQL di Azure
Per la maggior parte degli scenari, le applicazioni di Service Broker usano percorsi configurati da un amministratore. In alcuni casi, potrebbe essere necessario configurare in modo dinamico i percorsi. In questo caso, si implementa un servizio di avviso di configurazione broker.
Panoramica del routing dinamico
In SQL Server non è disponibile una soluzione predefinita per la creazione dinamica di tabelle di routing. SQL Server, tuttavia, consente agli sviluppatori la creazione di applicazioni dotate di funzionalità di routing dinamico.
Quando Service Broker non è in grado di individuare una route per una conversazione, cerca nella tabella di routing un servizio denominato SQL/ServiceBroker/BrokerConfiguration. Se esiste una voce per tale servizio, Service Broker crea una nuova conversazione a tale servizio e invia un messaggio sulla conversazione che richiede la creazione di un percorso. Al termine della conversazione con il servizio BrokerConfiguration Service Broker tenta nuovamente di eseguire il routing del messaggio. Se non esiste alcun percorso in quel punto, Service Broker contrassegna tutti i messaggi per la conversazione come DELAYED. Dopo un periodo di timeout, Service Broker richiede nuovamente una route al servizio BrokerConfiguration.
Creazione del servizio di avviso di configurazione broker
Per creare un servizio per il routing dinamico, creare un servizio denominato SQL/ServiceBroker/BrokerConfiguration in grado di accettare conversazioni basate sul contratto https://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice
. Si crea quindi un percorso al servizio nella tabella di routing per il database che userà il routing dinamico.
Le richieste per le route usano il tipo di messaggio https://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice/MissingRoute
. Il messaggio è in formato XML e contiene il nome del servizio per cui le informazioni di pianificazione percorso devono essere disponibili.
Il messaggio seguente, ad esempio, rappresenta una richiesta di route per il servizio https://Adventure-Works.com/Elsewhere:
<MissingRoute xmlns="https://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice/MissingRoute">
<SERVICE_NAME>https://Adventure-Works.com/Elsewhere</SERVICE_NAME>
</MissingRoute>
Per altre informazioni, vedere Servizio di avviso di configurazione di Service Broker.
Implementazione del routing dinamico
La maggior parte delle attività coinvolte nell'implementazione del routing dinamico determina l'indirizzo per il nome del servizio. Si usa qualsiasi tecnica appropriata per l'applicazione.
Le responsabilità dell'applicazione per il servizio avviso di configurazione broker sono semplici. L'applicazione legge un messaggio MissingRoute dalla coda. Se l'applicazione può determinare l'indirizzo per il servizio, crea un percorso per il servizio e quindi termina la conversazione. Il modo in cui l'applicazione determina l'indirizzo dipende dalle esigenze specifiche dell'ambiente. Ad esempio, l'applicazione può consultare un servizio esterno, eseguire una query in un altro database o produrre un percorso a un Service Broker configurato per l'inoltro dei messaggi. Tuttavia, se l'applicazione non riesce a determinare l'indirizzo per il servizio, termina la conversazione con un errore.
Si noti che, in entrambi i casi, l'applicazione che implementa il servizio avviso di configurazione broker termina la conversazione. Service Broker invia un messaggio MissingRoute alla volta per un servizio specifico, indipendentemente dal numero di conversazioni destinate al servizio. Per le richieste al servizio di configurazione broker, inoltre, Service Broker usa il timeout più esteso possibile. Pertanto, se il servizio di configurazione broker non termina la conversazione, Service Broker non crea una nuova richiesta per il servizio. Se il servizio di configurazione broker non ha creato un percorso o la durata del percorso creato scade, i messaggi al servizio rimarranno ritardati fino alla scadenza della durata della conversazione.