如何等待来自 .NET 客户端应用程序的 SQL Server 表中出现新行?
背景:我想建立一个基于表格的消息队列。我不想使用 Service Broker,因为我希望消息是结构化的和强类型的。使用普通表我也可以与其他表建立关系。
如何等待来自 .NET 客户端应用程序的 SQL Server 表中出现新行?
背景:我想建立一个基于表格的消息队列。我不想使用 Service Broker,因为我希望消息是结构化的和强类型的。使用普通表我也可以与其他表建立关系。
通常的方法是使用轮询,但如果您确实需要即时事件,您可以使用SqlDependency
该类在查询结果更改时获取事件。
您需要投票或获得通知。
轮询将要求客户端使用谓词或 for 定期查询表count(*)
。这可能不是一个很好的解决方案。
将触发器放在表中并向客户端中的侦听器发送消息可能是一个便宜但有用的通知系统。
在我们的应用程序中,我们使用 System.Threading.Timer 来轮询数据库表。一旦有新消息可用,它就会被处理。如果处理成功,则从 DB 中删除消息。