按钮单击.NET应用程序需要告诉外部服务从队列开始处理(msmq)

时间:2015-09-17 19:27:00

标签: c# asp.net web-services msmq msmq-wcf

我有一个用户将与之交互的asp.net webforms应用程序。当用户从站点中选择某些项目并单击按钮进行处理时。 webapp将为用户选择的每个项目向msmq添加消息。

我想弄清楚的部分:

如果第二个应用程序的工作是处理队列(msmq),那么应该使用哪种类型的应用程序。关键是第二个应用程序需要闲置,直到我的asp.net webapp告诉它单击“进程”按钮,然后它将继续,检查队列并处理它。我不希望它每分钟都经常检查一次队列,只是在命令检查队列时。

Windows服务,Web服务,Web API?我目前有一个Windows服务,每隔30秒检查一次队列。如何使其按需工作而不是不断检查?

这里的重写略有不同:

  1. 用户在.NET应用程序中并选择项目,然后单击“处理”。

  2. .Net应用程序将需要处理的项目添加到队列(msmq)。

  3. .NET应用程序将告知另一个应用程序,即单击了进程按钮,它应该开始处理队列。处理完队列后,其他应用程序应该返回某种空闲模式。

  4. 这里最重要的是我不希望它在计时器上检查队列中是否每分钟都有物品。这会耗尽24/7的资源。

    也许我不熟悉msmq的某些功能。有没有办法让msmq告诉我的服务它已收到队列中的消息,继续处理它们。而不是我的.net应用程序与服务交谈?

1 个答案:

答案 0 :(得分:1)

您可以使用现有的Windows服务。但是,为什么不在每30秒左右检查一次队列,为什么不在只有消息到达时响应的队列中添加一个监听器。请查看下面的代码段。

// graphicsView derived from QGraphicsView 
graphicsView->backgroundBrush().transform().translate(moveX, moveY);