C#服务中的持久队列

C#服务中的持久队列,c#,sql,service,network-programming,message-queue,C#,Sql,Service,Network Programming,Message Queue,我需要在我的C#服务中实现一个持久队列。它从外部源轮询数据。在收到一个数据单元后,应将其发送至服务器。如果发送失败,它应以队列方式将数据写入磁盘,并尝试每隔一段时间重新发送数据,但也应继续轮询数据,从而不断填充队列。我需要将其保存到磁盘,因为网络可能会出现故障,同时服务器可能会关闭。导致服务重新启动,从而删除内存中的队列。(当然,在重新启动期间不会进行轮询,但之前网络故障期间的数据将丢失) 我现在通过在SQLCE中实现一个队列解决了这个问题。轮询数据后,它直接将其写入sql ce数据库,然后另一

我需要在我的C#服务中实现一个持久队列。它从外部源轮询数据。在收到一个数据单元后,应将其发送至服务器。如果发送失败,它应以队列方式将数据写入磁盘,并尝试每隔一段时间重新发送数据,但也应继续轮询数据,从而不断填充队列。我需要将其保存到磁盘,因为网络可能会出现故障,同时服务器可能会关闭。导致服务重新启动,从而删除内存中的队列。(当然,在重新启动期间不会进行轮询,但之前网络故障期间的数据将丢失)

我现在通过在SQLCE中实现一个队列解决了这个问题。轮询数据后,它直接将其写入sql ce数据库,然后另一个线程读取(peek)数据库并尝试发送数据。如果消息成功发送,消息将退出队列。我觉得这个解决方案很重,效率不高


有没有人有类似的场景和如何更好地实现它的技巧?

你考虑过了吗?你可以使用<代码> RabByMQ 。有一个很好的C#库:我不想安装任何“其他”软件。我需要能够包括在我的服务,这是可能的吗?这些工具会比SQL CE更快吗?你考虑过了吗?你可以使用<代码> RabByMQ 。有一个很好的C#库:我不想安装任何“其他”软件。我需要能够包括在我的服务,这是可能的吗?这些工具会比Sql CE更快吗?