Pytanie do MSMQ czy nie do MSMQ? (lub Tabela SQL jako kolejka)


Posiadam system rozproszony, w którym będzie 1 serwer SQL, 1-n serwerów przetwarzania i 1-n dostawców danych (urządzenia sprzętowe w sieci). Dostarczane dane będą wymagać przetworzenia przed wejściem do relacyjnej struktury DB - wykonywanej przez serwery przetwarzania (jako usługi systemu Windows - kod .net w celu analizowania danych, przetwarzania i wstawiania ich do struktury relacyjnej).
Aby obsłużyć potencjalne obciążenie i nie spowolnić dostawców danych, chcę zaimplementować kolejkę, ale nie jestem pewien, czy chcę dodać złożoność serwera MSMQ do miksu. Czy istnieje dobra alternatywa dla MSMQ, taka jak użycie DB (płaskiego stołu) jako kolejki? Czy .NET zapewnia natychmiastową obsługę kolejek DB lub czy istnieje inna opcja niezawodnego kolejkowania?
Dzięki

EDYCJA: (29 listopada, godzina 23.30)
brzmi jak SQL Service Broker (SSB) może zrobić lewy.
http://www.netframeworkdev.com/windows-communication-foundation/service-broker-vs-msmq-as-reliable-queueing-mechanism-63981.shtml

EDYCJA: (30 listopada, 7:45)
Znaleziono inny bardzo przydatny link na ten temat:
http://social.msdn.microsoft.com/Forums/en-US/sqlservicebroker/thread/52687510-0852-44f3-bfcd-83610d1c1b9a
Zajmuję się także rozmiarem maksymalnych / minimalnych danych, które zostaną dostarczone. Ktoś z góry zna maksymalny rozmiar obsługiwany przez MSMQ i / lub SSB?
MSMQ: rozmiar wiadomości 4 MB
SSB: rozmiar wiadomości 2 GB

EDYCJA: (30 nov, 8; 15am)
Doskonałe porównanie MSMQ i SSB tutaj:
Dobra strategia dla kolejkowania wiadomości?


12
2017-11-30 06:59


pochodzenie




Odpowiedzi:


Korzystałbym z MSMQ, nie dodaje on zbyt dużo komplikacji i jest tak łatwy do tworzenia kopii zapasowych wiadomości, więc przetwarzanie może być kontynuowane nawet po ponownym uruchomieniu systemu. Możesz użyć czegoś takiego jak SSB.


4
2017-11-30 07:43



Szczególnie korzystaj z transakcyjnego MSMQ. - Steven


Spośród dwóch opcji, MSMQ jest w rzeczywistości bardziej uproszczony. Jeśli potrzebujesz możliwości ponownego nadania priorytetu pracy lub masz agentów przetwarzających tylko wybrane typy zadań w kolejce, nie możesz użyć MSMQ. Jeśli nie potrzebujesz żadnego z tych dzwonków i gwizdów, to MSMQ jest ciastem do użycia z .NET.


2
2017-11-30 16:15



Można iterować za pośrednictwem kolejki MSMQ przetwarzając tylko niektóre wiadomości: MessageQueue.CreateCursor, a następnie użyj Peek i Receive przeciążenia, które pobierają kursor. - Richard
Lepiej mieć oddzielne kolejki dla każdego typu komunikatu, jeśli chcesz wybrać i wybrać określone typy wiadomości do przetworzenia. - Trevor Pilley
@Richard to "ponowne ustalenie priorytetu", którego tak naprawdę nie można zrobić. - StingyJack