Pergunta

Eu sou um desenvolvedor web começando sentado em um projeto de aplicativo web ambicioso.

Assim, depois de ter feito algumas pesquisas, descobri sobre SQL Service Broker. Parece que algo que eu poderia usar, mas eu não tenho certeza. Desde a aprendizagem que requer alguém para colocar em muito tempo, eu queria ter certeza de que ele iria se encaixar minhas necessidades.

Eu preciso implementar um sistema onde os usuários do site podem enviar texto para o site. Este fluxo de mensagens tem de ser redundante e tratadas de forma FIFO, com na outra extremidade do fluxo de um outro grupo de usuários que lidam com as mensagens.

Agora, a mensagem que está sendo lido por um deste último grupo de usuários, deve ser bloqueado para que mais ninguém pode lê-lo ao mesmo tempo. O usuário pode então decidir para lidar com a mensagem ou não. Só se ele decidir para lidar com a mensagem pode ser excluída da fila. Se ele decidir que não querem lidar com a mensagem, a mensagem deve ser colocado de volta na fila (no final da fila, ou pelo menos com a prioridade mais alta), para que outro usuário pode lê-lo e decidir .

Isto é algo que eu seria capaz de implementar com SQL Service Broker? Am I no caminho errado?

Obrigado!

Foi útil?

Solução

IMO, o melhor uso do Service Broker é para conectar a aplicativos independentes de uma forma de baixo acoplamento. O que quero dizer com isto é que os sistemas amarradas desta forma podem se comunicar através de um conjunto de tipos de mensagens mutuamente acordados. Isto em contraste com um pedido de manipular directamente da base de dados do outro, por exemplo.

Pelo que você disse, eu iria implementá-lo como uma tabela simples, por exemplo: Criar uma tabela mensagem com um PK identidade, uma bandeira Atribuição e suas colunas personalizadas. Sempre que um operador quer buscar a última mensagem, obter o menor valor de PK para o qual Allocation = 'N' e atualização Alocação de 'Y'. Isso em uma única transação. Quando / se a operação decide voltar a mensagem para a fila, basta configurar sua AllocationFlag para 'N' e sua volta.

Este é apenas um exemplo. O banco de dados, neste caso, está fornecendo-lhe consistência, o desempenho carga pesada, etc.

Por trás das telas de todos os dados que você enviar para SSB é armazenado e manipulados como mesas, por isso não há razão para que ele seja necessariamente mais rápido do que uma solução de banco de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top