Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NServiceBus:saga与SQL persister的并发性是如何工作的?_C#_Sql Server_.net Core_Concurrency_Nservicebus - Fatal编程技术网

C# NServiceBus:saga与SQL persister的并发性是如何工作的?

C# NServiceBus:saga与SQL persister的并发性是如何工作的?,c#,sql-server,.net-core,concurrency,nservicebus,C#,Sql Server,.net Core,Concurrency,Nservicebus,我正在使用带有SQL持久性和MSSQL服务器的NServiceBus 我希望确保在高并发情况下不会在数据库中获取无效数据 从中我知道,自版本4.1.1以来,SQL持久化程序使用悲观并发。 但我不确定它到底是如何工作的,因为在“”和“”下只提到了乐观并发 是否每个saga实例一次只处理一条消息,而所有剩余的消息都在队列中等待saga处理 另外,是否可以将并发配置为使用乐观并发而不是SQL persister的悲观并发?乐观并发控制和悲观锁定都会导致saga实例只能处理1条消息 那么,是否可以使用以

我正在使用带有SQL持久性和MSSQL服务器的NServiceBus

我希望确保在高并发情况下不会在数据库中获取无效数据

从中我知道,自版本4.1.1以来,SQL持久化程序使用悲观并发。 但我不确定它到底是如何工作的,因为在“”和“”下只提到了乐观并发

是否每个saga实例一次只处理一条消息,而所有剩余的消息都在队列中等待saga处理


另外,是否可以将并发配置为使用乐观并发而不是SQL persister的悲观并发?

乐观并发控制和悲观锁定都会导致saga实例只能处理1条消息

那么,是否可以使用以下方式处理多条消息:

  • 乐观并发控制:第二个+写入程序将失败,消息将重试

  • 锁定:该锁定确保同一个saga实例上的多条消息将被延迟。有时,这可能会由于锁升级而导致死锁,然后重试消息

关于悲观与乐观,你不能选择。最新版本使用悲观锁定。见:

从版本4.1.1开始,不会发生冲突,因为持久性使用悲观锁定。悲观锁定是通过执行选择。。。用于更新或其方言特定的等效项

在版本4.1之前(包括版本4.1),SQL持久性在更新或删除saga数据时使用乐观并发控制