我正在设计一个系统,供多个用户将他们的请求排队到 Web 服务,该服务接受诸如创建新条目、更改条目、请求数据等请求。我们将使用的许多 Web 服务调用将分层数据作为参数(旨在匹配 c# 对象结构的层次结构),而其他诸如请求允许的条目类型列表的请求则不需要参数。队列是必要的,因为 Web 服务有 5 秒左右的限制要求,并且多个用户只能使用一个 Web 服务登录。
xml 从 Web 服务返回的数据最终会返回,由我们自己的服务器应用程序解析,并插入到某种类型的响应表中,以便用户应用程序可以知道请求已收到并获取返回的任何数据。
基本图片是
用户应用程序(多个用户)--> 服务请求队列 <--> 服务器应用程序 <--> 网络服务
和类似的回复
用户应用(多用户)<--服务响应队列<-->服务器应用<-->web服务
我正在自己创建用户应用程序和服务器应用程序,并试图了解如何设计将使用 sql server 的服务请求队列和响应队列,并试图弄清楚这些队列将拥有多少表请求和响应以分层形式出现(根据请求返回不同的层次结构类型),两者都是非分层形式。
此类对象由外部 Web 服务 API 指定。用户以该对象结构的不同相关形式发送不同类型的请求,这些请求将存储在队列系统/队列中,然后由服务器应用程序提取以进行出列以满足 Web 服务的节流要求。服务器应用程序也可能会取消不相关的请求,例如,如果时间过长并且它怀疑有错误或不相关的请求,或者如果用户应用程序未与来自 Web 服务的数据流同步。
任何人有任何用于此目的的简单示例多用户 sql 服务器队列?有没有关于这个主题的好书?还是网络教程?似乎有必要限制任何网络服务的多个用户......
早在 2008-2009 年,我就将其作为一个项目来完成,这是一个每天需要处理 100 万次以上呼叫的 Web 服务(计费)。我使用 SQL Server 表作为队列,并将该项目的经验提炼到文章Using Tables as Queues中。坚持我在那里制定的规则,特别是不要试图在你的桌子上添加任何口哨和铃铛,只将它用作队列。在负载下,我发现一个关键问题是批量出队(在一个数据库操作中出列 100 个 Web 服务调用请求)并在应用程序中处理调度(将出队请求放入内存列表中,让 Web 调用处理程序接手工作从此列表中)。执行 Web 服务调用异步是至关重要的。此外,您必须阅读有关
ServicePointManager.DefaultConnectionLimit
.您是否考虑过使用 SQL Server 内置的“ Service Broker ”功能?它旨在帮助开发人员实现异步排队系统。