首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Quartz.net和/或MSMQ?

Quartz.net和/或MSMQ?
EN

Stack Overflow用户
提问于 2011-03-16 05:16:39
回答 3查看 1.2K关注 0票数 2

我正在写一个需要在特定时间运行任务的应用程序,所以我计划使用Quartz.NET。然而,需要运行的任务有多个步骤,其中一些步骤可能会有点密集,所以我在考虑使用MSMQ之类的东西来对任务的每个部分进行排队,并使用较小的专注于分散负载的子任务,而不是一个位任务。

这样做的唯一问题是,它会绕过Quartz.NET失败任务特性,我想用它来确保任务完成。

有没有人能建议一种单独使用Quartz.NET来做任何事情的方法?或者如何在使用MSMQ的同时,仍然能够使用Quartz.NET的“任务失败”功能?(或者其他我可能不知道的方式?)

EN

回答 3

Stack Overflow用户

发布于 2011-03-16 07:01:33

这听起来很像建立在MSMQ之上的NServiceBus内部的传奇概念。您将工作分派到节点,然后节点返回它们的工作(或失败)。然后,这个传奇协调下一步应该发生的任务。

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

将NServiceBus用于此目的的主要原因之一是,它为您抽象了许多基础设施,并使您专注于业务行为以及与该行为相对应的事件。

票数 1
EN

Stack Overflow用户

发布于 2011-03-18 06:52:46

您可以从Quartz.Net任务中计划其他任务。这将使您能够对所有子选项卡使用任务失败功能,但您不能将此功能应用于主任务。这本质上提供了您想要实现的相同功能,而不必使用MSMQ。

票数 0
EN

Stack Overflow用户

发布于 2012-11-05 06:08:48

这个问题只指定分散工作负载是可取的,而不是在异步调用中将控制移交给另一个任务/进程/消息处理程序。

在这种情况下,Quartz作业可能会将“任务”消息推送到MSMQ上,以便其他一些服务拾取。然后,它可以在退出Execute方法之前等待另一个队列上的“响应”消息。它可以通过轮询队列来做到这一点。一旦它收到了成功或失败的消息,它就可以直接退出Execute方法,或者抛出JobExecutionException

这个解决方案并不是很优雅。请求/响应机制和传输可以被抽象出来,例如通过WCF或NServiceBus,但是你隐含地追求的基本上是双工通信的事实意味着它不太适合MSMQ。不过,这是可能的(参见http://www.codeproject.com/Articles/41907/WCF-Duplex-MSMQhttp://docs.particular.net/samples/fullduplex/)。您可能会更好地使用某种类型的一系列web服务,异步地调用它们并等待所有的完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5318181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档