我需要创建一个可以按配置的时间间隔处理排队请求的服务。例如,访问网络并从网站获取财务数据,要求我们将请求限制为每秒一次。我是 WCF 新手,不确定 (1) WCF 与 MSMQ 是否是实现此功能的正确选择?(2) 如果是的话,执行间隔的最佳机制是什么?一个线程等待?一个计时器(不知道它是如何工作的)。

有帮助吗?

解决方案

有什么内置到WCF,将允许你明确地处理这个问题,所以你仍旧需要自己做所有的工作。

当你的服务无疑能够处理来自MSMQ的请求,在WCF的MSMQ听众会挑选和处理消息尽快;你无法将它们配置为处理邮件每隔X秒只(你可以捏造事实给出合适的工具,但在我看来,它不会是所有的伟大)。

如果一个选择处理请求之间的延迟是不很短,是使用一个中间队列保持未决请求。也就是说,不管发送请求真正把它们写入到队列中没有人直接听(队列A),而在differet队列(队列B)您的WCF服务侦听。然后,有别的东西(可能是那样简单,从任务调度的脚本运行)运行一次每X秒/分钟/不管和移动仅1个消息从队列A到队列B,从而引发实际的WCF服务运行。

其他提示

WCF 和 MSMQ 是一个很棒的团队!绝对值得一看。

WCF 未提供开箱即用的部分是“每 x 秒检查一次”。这里最好的方法是将 WCF 服务托管在 Windows NT 服务中,并在 NT 服务中设置一个计时器,每 x 秒检查一次 MSMQ 队列。真的,实施起来应该不会太难。美的是:您可以非常轻松地在 NT 服务中自行托管 WCF 服务 - 只需几行代码,您就可以完全控制发生的情况和时间。请参阅 MSDN 文档 如何在托管应用程序中托管 WCF 服务 了解详情。

资源:

或者你可以只使用一个窗口服务消耗的消息来代替。如果你不使用消耗的消息,只要它张贴的WCF功能,那么你可能没有理由首先使用WCF

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top