Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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
Sql server С;使用RabbitMQ和SQL Server的竞争性流程_Sql Server_Architecture_Rabbitmq - Fatal编程技术网

Sql server С;使用RabbitMQ和SQL Server的竞争性流程

Sql server С;使用RabbitMQ和SQL Server的竞争性流程,sql-server,architecture,rabbitmq,Sql Server,Architecture,Rabbitmq,我有一个分布式系统,那里有订单受理服务。 传入订单将同时发送给所有执行人,但只有一个执行人可以接受此订单。为此,我使用RabbitMQ和SQL server 当两名执行人试图同时接受订单时,如何处理? 当然我可以在SQL Server中设置事务隔离,但是Rabbit呢 我知道,这个问题非常广泛,但我想知道如何处理这个问题?RabbitMQ的默认行为应该是将消息发送给单个消费者。我能想到的获得您行为的唯一方法是,如果您已配置而不是 RabbitMQ的默认行为应该是将消息发送给单个使用者。我能想到的

我有一个分布式系统,那里有订单受理服务。 传入订单将同时发送给所有执行人,但只有一个执行人可以接受此订单。为此,我使用RabbitMQ和SQL server

当两名执行人试图同时接受订单时,如何处理? 当然我可以在SQL Server中设置事务隔离,但是Rabbit呢


我知道,这个问题非常广泛,但我想知道如何处理这个问题?

RabbitMQ的默认行为应该是将消息发送给单个消费者。我能想到的获得您行为的唯一方法是,如果您已配置而不是

RabbitMQ的默认行为应该是将消息发送给单个使用者。我能想到的获得您行为的唯一方法是,如果您已配置而不是

当两名执行人试图同时接受订单时,如何处理? 当然我可以在SQL Server中设置事务隔离,但是Rabbit呢

让SQL Server保证最多有一个“执行者”可以接受订单

您可以让多个会话运行如下查询:

update orders
set state = 'ACCEPTED' 
output inserted.id, inserted.state 
where id=@ID and state ='NEW'
只有一个会成功更新订单并返回一行

当两名执行人试图同时接受订单时,如何处理? 当然我可以在SQL Server中设置事务隔离,但是Rabbit呢

让SQL Server保证最多有一个“执行者”可以接受订单

您可以让多个会话运行如下查询:

update orders
set state = 'ACCEPTED' 
output inserted.id, inserted.state 
where id=@ID and state ='NEW'

只有一个会成功更新订单并返回一行

然而,在您的内容和标记中,您的标题是MySQL,您引用的是SQL Server。你到底在用什么。请适当更新您的帖子和标签,或主题,因为这会让用户感到困惑。完成,抱歉,这是一个常见的问题。您的标题说MySQL,但是,在您的内容和标签中,您引用的是SQL Server。你到底在用什么。请适当更新您的帖子和标签,或主题,因为这会让用户感到困惑。完成,抱歉,这是常见问题,或者此人是否正在使用
fanout
交换。无论哪种方式,RMQ都应按预期使用。或者,如果此人使用的是
fanout
交换。无论哪种方式,RMQ都应按预期使用。