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