Ricevere notifiche di query in più posizioni di ricezione da SQL usando BizTalk Server
Si consideri uno scenario in cui sono stati creati più percorsi di ricezione come parte di applicazioni BizTalk diverse configurate per ricevere notifiche di query per la stessa tabella (ad esempio Employee) nello stesso database. Se nella stessa tabella vengono inseriti un centinaio di record, tutti i percorsi di ricezione riceveranno il messaggio di notifica. Per ricevere in modo efficace notifiche in più posizioni di ricezione, è possibile chiamare le operazioni dall'applicazione BizTalk in modo che, se una notifica viene ricevuta da una posizione di ricezione, l'altra posizione di ricezione non riceve la stessa notifica. È quindi possibile bilanciare efficacemente il carico delle notifiche ricevute in più posizioni.
Le attività necessarie per configurare un'orchestrazione per bilanciare il carico delle notifiche di ricezione sono uguali a quella per la ricezione di notifiche di query in modo incrementale da SQL tramite BizTalk Server. In questo argomento vengono elencate solo le differenze tra i due approcci.
Load-Balancing notifiche di query in più posizioni di ricezione
Come nell'argomento Ricevere notifiche di query in modo incrementale da SQL usando BizTalk Server, è stata configurata l'esecuzione di un'istruzione UPDATE sui record per cui è già stata ricevuta una notifica. Per configurare il bilanciamento del carico, è possibile eseguire una stored procedure che elimina i record per cui è stata notificata la notifica. Si consideri ad esempio una stored procedure PROCESS_EMPLOYEE con la definizione seguente:
DECLARE @var int
SELECT TOP 1 @var = Employee_ID FROM Employee
SELECT * FROM Employee WHERE Employee_ID=@var
DELETE FROM Employee WHERE Employee_ID=@var
Quando si esegue questa stored procedure come parte dell'applicazione BizTalk, il record per il quale la notifica viene già ricevuta viene eliminata. L'altra posizione di ricezione riceve quindi una notifica per il record successivo.
Ecco i passaggi generali da eseguire per configurare il bilanciamento del carico per la ricezione delle notifiche.
Creare lo schema per la notifica (operazione in ingresso) e PROCESS_EMPLOYEE stored procedure (operazione in uscita).
Aggiungere un'orchestrazione e aggiungere tre messaggi per la ricezione di notifiche, l'esecuzione della stored procedure e la ricezione della risposta per la stored procedure.
Creare un'orchestrazione aggiungendo forme Send and Receive, Costruisci forma messaggio e porte. È possibile usare lo stesso codice di esempio per costruire un messaggio per richiamare la stored procedure PROCESS_EMPLOYEE. Si noti che durante l'esecuzione dell'operazione nella console di amministrazione di BizTalk Server, è necessario avere il messaggio di richiesta per la stored procedure PROCESS_EMPLOYEE nel percorso C:\TestLocation\MessageIn. A tale scopo, poiché il frammento di codice richiamato come parte dell'orchestrazione creata in Ricevere notifiche di query in modo incrementale da SQL usando BizTalk Server crea un messaggio di richiesta basato sul codice XML della richiesta presente in C:\TestLocation\MessageIn.
Compilare e distribuire l'applicazione. Per illustrare il bilanciamento del carico, è necessario distribuire questa orchestrazione almeno in due computer diversi in cui sono installati BizTalk Server e adattatori SQL.
Nella console di amministrazione di BizTalk Server in entrambi i computer specificare le proprietà di associazione seguenti per il percorso di ricezione WCF-Custom o WCF-SQL:
Binding, proprietà Valore InboundOperationType Impostare questa opzione su Notifica. NotificationStatement Impostare questo valore su:
SELECT Employee_ID, Name FROM dbo.Employee WHERE Status=0
Nota: Per le istruzioni di notifica, è sempre necessario specificare il nome della tabella insieme al nome dello schema. Ad esempio:dbo.Employee
.NotifyOnListenerStart Impostare questa opzione su True. Avviare l'applicazione BizTalk.
Per iniziare a ricevere notifiche, inserire un centinaio di record nella tabella EMPLOYEE. In questo modo, assicurarsi che il codice XML della richiesta per richiamare la stored procedure PROCESS_EMPLOYEE sia disponibile in C:\TestLocation\MessageIn.
Monitorare il percorso (in entrambi i computer) in cui l'applicazione BizTalk rimuoverà i messaggi di notifica. Si noterà che delle centinaia di record inseriti, una posizione riceve notifiche per alcuni record mentre l'altra posizione riceve una notifica per i record rimanenti. Insieme, entrambe le posizioni riceveranno una notifica per tutti i cento record.