我需要关于我的WCF服务队列设计的建议。 所以,我有一个wcf服务和很多客户端。客户端生成消息并将它们放入队列以供我的服务进行处理。 服务处理它们的异步和客户端不需要将消息放入队列的回调或响应。WCF服务的队列实现
我的服务需要使队列中的消息出队以供多线程处理。但是,如果我的服务会停止或失败,或者服务器立即关闭 - 此服务必须重新处理消息,但这不会影响处理。
所以,我认为msmq队列的实现。 Msmq让我做出好的队列,但是如何实现这个需求:重新处理消息,那个消息没有被处理到最后?
可能有人会给我另一个下注的建议。 感谢您的帮助。
如果服务停止,消息应该保留在队列中并在再次启动时进行处理,这是不是发生了?如果是这样,您如何托管读取MSMQ的WCF进程? – 2011-04-13 12:16:48
但是服务是否可以从队列中取消消息并开始处理?同时,另一个处理线程从队列中取出另一个消息用于处理和启动进程。然后我们终止服务进程,重启后可以发现队列中的2个项目没有处理? – cyssima 2011-04-13 13:43:37
每个线程应该参与一个事务,所以这两个消息应该在那里。另一种方法是创建指向同一队列的多个进程,而不是拥有多个线程。这是“竞争消费者”模式,可以使用MSMQ 4。 – 2011-04-13 17:30:06