2010-11-30 15 views
12

Tengo un sistema distribuido en el que habrá 1 SQL Server, 1-n servidores de procesamiento y 1-n proveedores de datos (dispositivos de hardware en toda la red). Los datos que se suministran requerirán procesamiento antes de entrar en la estructura de base de datos relacional, realizada por los servidores de procesamiento (como servicios de Windows - código .net para analizar los datos, procesarlos e insertarlos en la estructura relacional).
Para manejar la carga potencial y no ralentizar a los proveedores de datos, quiero implementar una cola, pero no estoy seguro de querer agregar la complejidad de un servidor MSMQ a la mezcla. ¿Existe una buena alternativa a MSMQ, como usar la base de datos (una tabla plana) como cola? ¿.NET brinda soporte inmediato para colas de DB o existe otra opción para hacer colas confiables?
Graciasa MSMQ o no a MSMQ? (o SQL Table como la cola)

EDIT: (Nov 29, 23:30)
suena como SQL Service Broker (SSB) puede hacer el truco.
http://www.netframeworkdev.com/windows-communication-foundation/service-broker-vs-msmq-as-reliable-queueing-mechanism-63981.shtml

EDIT: (30 de noviembre, 7:45 am)
encontrado otro enlace muy útil sobre este tema:
http://social.msdn.microsoft.com/Forums/en-US/sqlservicebroker/thread/52687510-0852-44f3-bfcd-83610d1c1b9a
También estoy buscando en el tamaño máximo/mínimo de los datos que será suministrado. Por encima de su cabeza, ¿alguien sabe el tamaño máximo acomodado por MSMQ y/o SSB?
MSMQ: 4 MB de tamaño del mensaje
SSB: 2 GB de tamaño del mensaje

EDIT: (Nov 30, 8; 15 am)
gran comparación entre MSMQ & SSB aquí:
Good Strategy for Message Queuing?

Respuesta

4

me gustaría utilizar MSMQ, no agrega tanta complejidad, y es tan fácil hacer una copia de seguridad de los mensajes, por lo que el procesamiento puede continuar incluso después de que se reinicie el sistema. Podría usar algo como SSB.

+2

Especialmente utilice MSMQ transaccional. – Steven

2

De las dos opciones, MSMQ es en realidad la más simple. Si necesita la capacidad de volver a priorizar el trabajo, o si los agentes de procesamiento solo eligen ciertos tipos de trabajos en cola, entonces no puede usar MSMQ. Si no necesita ninguno de esos sonidos, MSMQ es ideal para usar con .NET.

+1

Puede iterar a través de una cola de MSMQ solo procesando algunos mensajes: 'MessageQueue.CreateCursor', y luego usar las sobrecargas' Peek' y 'Receive' que toman un cursor. – Richard

+1

Será mejor que tenga colas separadas para cada tipo de mensaje si desea seleccionar y seleccionar ciertos tipos de mensajes para procesar. –

+0

@Richard es la "priorización de prioridades" que realmente no se puede hacer. – StingyJack