Qualcuno può spiegare gruppi di conversazione nel broker di servizi?Sql Server Gruppi di conversazione di Service Broker
Attualmente sto utilizzando il broker di servizi per inviare messaggi da un server SQL a un altro. Sul server di invio, sto cercando di correlare i messaggi in modo che vengano elaborati in serie sul lato ricevente. In base alla documentazione, i gruppi di conversazioni sembrano essere perfetti per questo, ma sul server ricevente, i messaggi vengono assegnati a un gruppo di conversazioni diverso da quello specificato durante l'invio del messaggio.
ho cercare tutto il web e ho visto che questo comportamento sembra essere destinato (http://social.msdn.microsoft.com/forums/en-US/sqlservicebroker/thread/baf48074-6804-43ab-844a-cb28a6dce02b/), ma poi mi sono confuso circa l'utilità della sintassi da (http://msdn.microsoft.com/en-us/library/ms178624.aspx)
WAITFOR(
GET CONVERSATION GROUP @conversation_group_id FROM [dbo].[ReceiveQueue]
)
Se la conversazione gruppo non trova il messaggio dal mittente e i messaggi inviati con lo stesso ID del gruppo di conversazione non hanno lo stesso ID del gruppo di conversazione sul lato ricevente, qual è il punto del codice sopra?
Grazie. Questa è la migliore spiegazione che potrei trovare sul web. Forse sono solo io, ma la documentazione Microsoft MSDN su questa funzione sembra molto ambigua. Qualche suggerimento su come serializzare l'elaborazione dei messaggi sulla coda di ricezione? Sto inviando messaggi che possono potenzialmente aggiornare un singolo record sul lato ricevente. Questi messaggi provengono da fonti diverse e come tali non possono essere parte della stessa conversazione. Devo assicurarmi che i messaggi che riguardano l'uno dall'altro sul lato ricevente vengano elaborati in ordine e in serie. –
Il target può raggruppare le conversazioni usando MOVE CONVERSATION. Può quindi spostare qualsiasi "nuova" conversazione nel proprio gruppo.Un'altra alternativa è di invertire la finestra di dialogo initiaton: il 'back-end' avvia le finestre di dialogo (e quindi controlla il loro raggruppamento sul suo lato) e il 'front end' invia sul * target * endpoint delle finestre di dialogo. Se il back-end non è in grado di conoscere i nomi/le ubicazioni di arrivo, l'invio può essere attivato dal front-end inviando un messaggio con il significato 'iscriviti a me per favore a questo indirizzo'. La soluzione corretta dipende dalle specifiche del tuo scenario. Mandami un email. –
Sì, l'approccio per le conversazioni è quello che stiamo attualmente esaminando. La preoccupazione è che, poiché spostare la conversazione blocca il gruppo di conversazioni di destinazione e ricevere i messaggi dal loro gruppo di conversioni blocca il gruppo di conversazioni associato, potremmo entrare in una situazione di deadlock. Siamo nel mezzo di un POC che cerca di risolvere questa preoccupazione. Grazie per l'intuizione. –