Quartz.net и / или MSMQ? - PullRequest
       7

Quartz.net и / или MSMQ?

2 голосов
/ 16 марта 2011

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

Единственная проблема, связанная с этим, заключается в том, что он затем обходит функцию сбоя задачи Quartz.NET, которую я хотел бы использовать для обеспечения выполнения задачи.

Может кто-нибудь предложить способ использованиялибо Quartz.NET в одиночку все делал?или как использовать MSMQ, и при этом использовать функцию «сбой задачи» в Quartz.NET?(или каким-либо другим способом, о котором я могу не знать?)

Ответы [ 3 ]

1 голос
/ 16 марта 2011

Это очень похоже на концепцию саги в NServiceBus, которая построена поверх MSMQ.Вы отправляете работу на узлы, и они отвечают своей работой (или сбоями).Затем сага координирует, какие задачи должны произойти дальше.

http://docs.particular.net/nservicebus/sagas/

Одна из основных причин использования NServiceBus заключается в том, что она абстрагирует для вас большую часть инфраструктуры иВы сосредотачиваетесь на деловом поведении и событиях, соответствующих этому поведению.

0 голосов
/ 05 ноября 2012

Вопрос только указывает на то, что желательно распределить нагрузку на работу, а не передавать управление при асинхронном вызове другому обработчику задачи / процесса / сообщения.

В этом случае задание Quartz может отправлять сообщения 'task' в MSMQ, чтобы некоторые другие службы могли их получить. Затем он может ожидать ответные сообщения в другой очереди, прежде чем выйти из метода Execute. Это можно сделать путем опроса этой очереди. Получив сообщение об успехе или неудаче, он может выйти из метода Execute либо чисто, либо с помощью JobExecutionException.

.

Это решение не слишком элегантно. Механизм запроса / ответа и транспорт могут быть абстрагированы, например, WCF или NServiceBus, но тот факт, что вы неявно принимаете участие в дуплексной связи, означает, что она не очень подходит для MSMQ. Хотя это возможно (см. http://www.codeproject.com/Articles/41907/WCF-Duplex-MSMQ или http://docs.particular.net/samples/fullduplex/).. Возможно, вам лучше использовать серию веб-сервисов какого-либо рода, асинхронно вызывать их и ждать всех завершений.

0 голосов
/ 18 марта 2011

Вы можете запланировать другие задачи из задачи Quartz.Net. Это даст вам возможность использовать функцию сбоя задачи для всех вложенных вкладок, но вы не сможете применить это к основной задаче. По сути, это обеспечивает ту же функцию, которую вы хотели реализовать, без использования MSMQ.

...