2010-11-30 4 views
12

У меня есть распределенная система, в которой будут 1 сервер обработки SQL Server, 1-n и 1-й поставщик данных (аппаратные устройства по всей сети). Предоставляемые данные потребуют обработки до перехода в структуру реляционной БД - выполняются серверами обработки (в качестве кодов служб Windows - .net для анализа данных, их обработки и вставки в реляционную структуру.)
Для обработки потенциальная нагрузка и не замедлить поставщиков данных, я хочу реализовать очередь, но я не уверен, что хочу добавить сложность сервера MSMQ в микс. Есть ли хорошая альтернатива MSMQ, например, использование DB (плоской таблицы) в качестве очереди? Предоставляет ли .NET любую готовую поддержку для очередей БД, или есть еще один вариант для надежной очереди?
Благодаря- MSMQ или не MSMQ? (или таблица SQL в качестве очереди)

EDIT: (29 ноября, 11:30 PM)
звучит как SQL Service Broker (SSB) может сделать трюк.
http://www.netframeworkdev.com/windows-communication-foundation/service-broker-vs-msmq-as-reliable-queueing-mechanism-63981.shtml

EDIT: (30 ноября, 7:45 AM)
Найдено еще одно очень полезное ссылку на эту тему:
http://social.msdn.microsoft.com/Forums/en-US/sqlservicebroker/thread/52687510-0852-44f3-bfcd-83610d1c1b9a
Я также глядя в размер макс/мин данных, которые будет поставляться. Из верхней части головы кто-нибудь знает максимальный размер, размещенный MSMQ и/или SSB?
MSMQ: 4MB размер сообщения
SSB: 2GB размер сообщения

EDIT: (30 ноября, 8; 15am)
Великий сравнение MSMQ & SSB здесь:
Good Strategy for Message Queuing?

ответ

4

Я хотел бы использовать MSMQ, он не добавляет такой сложности, и так легко создавать резервные копии сообщений, поэтому обработка может продолжаться даже после перезапуска системы. Вы можете использовать что-то вроде SSB.

+2

Особенно использование транзакт MSMQ. – Steven 2010-11-30 08:10:59

2

Из двух вариантов MSMQ на самом деле более упрощен. Если вам нужна возможность переориентировать работу, или агенты обработки выбирают только определенные типы заданий в очереди, тогда вы не можете использовать MSMQ. Если вам не нужны какие-либо из этих колоколов и свисток, то MSMQ - это торт для использования с .NET.

+1

Вы можете выполнять итерацию через очередь MSMQ только для обработки некоторых сообщений: `MessageQueue.CreateCursor`, а затем использовать перегрузки« Peek »и« Receive », которые берут курсор. – Richard 2010-11-30 16:59:53

Смежные вопросы