Domanda

Sono uno sviluppatore web principiante seduto su un ambizioso progetto di applicazione web.

Quindi, dopo aver fatto alcune ricerche, ho scoperto SQL Service Broker. Sembra qualcosa che potrei usare, ma non ne sono sicuro. Dal momento che l'apprendimento richiede che qualcuno impieghi molto tempo, volevo essere sicuro che si adattasse alle mie esigenze.

Devo implementare un sistema in cui gli utenti del sito Web possano inviare testo al sito Web. Questo flusso di messaggi deve essere ridondante e gestito in modo FIFO, con dall'altra parte del flusso un altro gruppo di utenti che si occupa dei messaggi.

Ora, un messaggio che viene letto da uno di questi ultimi gruppi di utenti, dovrebbe essere bloccato in modo che nessun altro possa leggerlo contemporaneamente. L'utente può quindi decidere di gestire il messaggio o meno. Solo se decide di gestire il messaggio, può essere eliminato dalla coda. Se decide di non voler gestire il messaggio, il messaggio deve essere reinserito nella coda (alla fine della coda, o almeno con la massima priorità), in modo che un altro utente possa leggerlo e decidere .

È qualcosa che potrei implementare con SQL Service Broker? Sono sulla strada sbagliata?

Grazie!

È stato utile?

Soluzione

IMO, il miglior uso di Service Broker è per connettersi ad Applicazioni indipendenti in modo vagamente accoppiato. Quello che intendo con ciò è che i sistemi collegati in questo modo possono comunicare attraverso una serie di tipi di messaggi reciprocamente concordati. Questo a differenza di un'applicazione che manipola direttamente il database dell'altra, per esempio.

Da quello che hai detto, lo implementerei come una semplice tabella, ad esempio: creare una tabella di messaggi con un PK di identità, un flag di allocazione e le tue colonne personalizzate. Ogni volta che un operatore desidera recuperare l'ultimo messaggio, ottenere il valore PK più basso per cui Allocazione = 'N' e aggiornare Allocazione a 'Y'. Questo in una singola transazione. Quando / se l'operazione decide di riportare il messaggio in coda, imposta semplicemente AllocationFlag su 'N' e viceversa.

Questo è solo un esempio. Il database in questo caso fornisce coerenza, prestazioni di carichi pesanti, ecc.

Dietro le schermate tutti i dati che invii a SSB vengono archiviati e manipolati come tabelle, quindi non c'è motivo per cui sia necessariamente più veloce di una soluzione di database.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top