C# 使用sql service broker,如果目标应用程序崩溃会发生什么情况?

C# 使用sql service broker,如果目标应用程序崩溃会发生什么情况?,c#,sql-server-2008-r2,entity-framework-5,.net-4.5,service-broker,C#,Sql Server 2008 R2,Entity Framework 5,.net 4.5,Service Broker,当目标应用程序没有响应、停止并重新启动时,它将如何获取发送给它的消息?当它重新联机时,它们会自动再次发送吗 您将如何使用EF和C#实现这一点?教程在哪里 Service Broker从SQL Server发送到SQL Server。所使用的协议对崩溃具有完全的恢复能力,消息将保留在发送方的sys.transmission\u队列中,直到被目标方确认,并且目标方仅在将消息提交到目标服务队列后才予以确认。SQL Server还处理与瞬时故障相关的一切:无响应目标、网络分区、服务/修补中断。所有这些都

当目标应用程序没有响应、停止并重新启动时,它将如何获取发送给它的消息?当它重新联机时,它们会自动再次发送吗


您将如何使用EF和C#实现这一点?教程在哪里

Service Broker从SQL Server发送到SQL Server。所使用的协议对崩溃具有完全的恢复能力,消息将保留在发送方的
sys.transmission\u队列中
,直到被目标方确认,并且目标方仅在将消息提交到目标服务队列后才予以确认。SQL Server还处理与瞬时故障相关的一切:无响应目标、网络分区、服务/修补中断。所有这些都是由SQL Server本身处理的,因为它保证了一次交付

现在,如果您的应用程序崩溃,即在处理RECEIVE语句时发生的情况非常简单:您在数据库事务上下文中通过T-SQL与ServiceBroker交互。如果应用程序崩溃,ACID数据库事务的正常行为就会启动:由于事务没有提交,它将被回滚,并且应用程序将有机会在重新启动后再次处理消息


因此,从应用程序的角度来看,您只与数据库、队列和表以及数据库事务上下文中的所有对象进行交互。您的问题与“如果应用程序崩溃,INSERT会发生什么情况?”相同。

感谢您的解释,c语言中关于如何实现这一点(最好使用实体框架)的一些代码示例在哪里?