Condividi tramite


Creazione di code di Service Broker

Una coda contiene messaggi in arrivo per un servizio. Per semplificare l'elaborazione, le applicazioni creano in genere una coda per ogni servizio anziché utilizzare la stessa coda per più servizi.

Se per una coda si imposta l'opzione di memorizzazione, dopo l'elaborazione i messaggi verranno memorizzati. Poiché la memorizzazione riduce le prestazioni delle applicazioni, specificarla solo se l'applicazione deve accedere in modo persistente ai messaggi esattamente come stati inviati e ricevuti. Per ulteriori informazioni sulla memorizzazione dei messaggi, vedere Memorizzazione dei messaggi.

Per le applicazioni che non utilizzano l'attivazione interna, non specificare una clausola di attivazione nella definizione della coda.

Per le applicazioni che utilizzano l'attivazione interna, nella definizione della coda sono inclusi il nome della stored procedure, il numero massimo di lettori per avviare SQL Server e il nome dell'entità di database da rappresentare prima di avviare la stored procedure.

Il nome di una coda non è incluso nel formato di rete di un messaggio. Poiché le code sono oggetti di proprietà dello schema, i relativi nomi seguono le convenzioni di denominazione di SQL Server. Per ulteriori informazioni sulla denominazione, vedere Denominazione di oggetti di Service Broker.

Attivazione della stored procedure

Una coda può essere associata a una stored procedure. Quando nella coda sono presenti messaggi da elaborare, la stored procedure viene attivata in SQL Server. Questo processo di attivazione automatica consente di dimensionare dinamicamente un'applicazione di Service Broker in base al carico di elaborazione corrente dell'applicazione stessa. Ogni stored procedure attivata da Service Broker viene eseguita in un thread separato. Quando una coda specifica una stored procedure, in Service Broker vengono avviate le nuove istanze della stored procedure in base alla necessità, fino al numero massimo di istanze specificato per la coda.

Una stored procedure attivata elabora in genere uno o più messaggi e restituisce una risposta al servizio che ha originato i messaggi. Quando i messaggi arrivano più velocemente rispetto all'elaborazione eseguita dalla stored procedure, Service Broker avvia un'altra istanza della stored procedure fino al numero massimo definito dalla coda. Una stored procedure attivata termina in genere quando non trova più messaggi disponibili nella coda per un certo periodo di tempo.

L'utilizzo di stored procedure di attivazione costituisce un metodo comune per progettare applicazioni di Service Broker. Altri tipi di progettazioni potrebbero soddisfare meglio le esigenze di un'applicazione specifica. Qualsiasi applicazione in grado di eseguire batch Transact-SQL in SQL Server può inviare e ricevere messaggi. I messaggi possono inoltre essere elaborati da qualsiasi stored procedure, indipendentemente dal fatto che la stored procedure sia attivata da SQL Server, avviata da SQL Server Agent, eseguita da un'applicazione esterna oppure eseguita in modo interattivo da uno strumento quale SQL Server Management Studio o SQL Server Express Management Studio.