【发布时间】:2012-03-30 22:29:01
【问题描述】:
我需要为 WCF 服务请求实现排队机制。该服务将由客户端以单向方式调用。这些请求消息应存储在 SQL Server 数据库中,并且 Windows 服务将消息排入队列。处理请求的时间是可配置的。如果处理消息时发生错误,则需要重试最多 100 次,如果仍然失败则需要终止。
还应该有一种机制来监控一天的交易数量和失败的数量。
问题
如果我使用 MSMQ,客户端可能会在不知道服务端点的情况下将消息转发到队列。但我使用 SQL Server 来存储请求消息。客户端如何将请求发送到 SQL Server?
解决方案可行吗?我们是否有任何文章/书籍解释了如何实现上述内容?
在这种情况下,防止服务和客户端进入故障状态的步骤是什么?
将传入消息存储到数据库的最佳方法是什么?
实现重试机制的最佳方法是什么?任何东西已经存在,所以我不必重新发明轮子?
是否有任何书籍/文章解释了这种实现?
注意事项
- 消息的内容将是复杂的 XML。例如,员工的差旅费用项目或员工列表。
阅读
【问题讨论】:
-
很难理解你想做什么。您的客户正在调用服务,但也将请求放入 SQL 中?这没有多大意义。请求肯定会被服务消费。
-
Hey Lijo 最好使用 SQL“Servive Broker”,它可以很好地满足您的要求。我使用“ServiceBroker”解决了类似的情况。msdn.microsoft.com/en-us/library/ms166043(v=sql.90).aspx
标签: c# asp.net .net sql-server wcf