Pregunta

Soy un desarrollador web principiante sentado en un ambicioso proyecto de aplicación web.

Entonces, después de investigar un poco, descubrí SQL Service Broker. Parece algo que podría usar, pero no estoy seguro. Dado que aprenderlo requiere que alguien dedique mucho tiempo, quería estar seguro de que satisfaría mis necesidades.

Necesito implementar un sistema donde los usuarios del sitio web puedan enviar texto al sitio web. Esta secuencia de mensajes debe ser redundante y tratarse de manera FIFO, con el otro extremo de la secuencia otro grupo de usuarios que se ocupa de los mensajes.

Ahora, un mensaje que está siendo leído por uno de este último grupo de usuarios debe bloquearse para que nadie más pueda leerlo al mismo tiempo. El usuario puede decidir manejar el mensaje o no. Solo si decide ocuparse del mensaje, se puede eliminar de la cola. Si decide que no quiere tratar el mensaje, el mensaje debe volver a colocarse en la cola (al final de la cola, o al menos con la prioridad más alta), para que otro usuario pueda leerlo y decidir .

¿Es esto algo que podría implementar con SQL Service Broker? ¿Estoy en el camino equivocado?

¡Gracias!

¿Fue útil?

Solución

En mi opinión, el mejor uso de Service Broker es para conectarse a una aplicación independiente de una manera flexible. Lo que quiero decir con eso es que los sistemas vinculados de esta manera pueden comunicarse a través de un conjunto de tipos de mensajes mutuamente acordados. Esto en contraste con una aplicación que manipula directamente la base de datos de la otra, por ejemplo.

Por lo que ha dicho, lo implementaría como una tabla simple, por ejemplo: Crear una tabla de mensajes con una PK de identidad, un indicador de asignación y sus columnas personalizadas. Siempre que un operador desee obtener el último mensaje, obtenga el valor PK más bajo para el que Allocation = 'N' y actualice Allocation a 'Y'. Esto en una sola transacción. Cuando / si la operación decide devolver el mensaje a la cola, simplemente configure su AllocationFlag en 'N' y su parte posterior.

Esto es solo un ejemplo. La base de datos en este caso le proporciona consistencia, rendimiento de carga pesada, etc.

Detrás de las pantallas, todos los datos que envía a SSB se almacenan y manipulan como tablas, por lo que no hay razón para que sea necesariamente más rápido que una solución de base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top