我有以下结构: ArchitectureAMQP/RabbitMQ的 - 如何避免竞争条件
- 有输入源的固定数量。每个输入源都是等效的。
- AMQP经纪人。我在使用RabbitMQ。
- 目前,有2个消费者。同样,每个消费者都是相同的。
输入源正在发送要处理的命令。这些命令由经纪人转发,并由两位消费者中的一位提取。
我需要以下行为:
- 如果一个输入源发送多个命令,所有命令必须被顺序地处理。也就是说,在2个命令的示例中,当消费者2同时处理命令2时,消费者1正在处理命令1的是不允许。
- 但是,可以同时处理源自两个不同输入源的两个命令。
是否可以用AMQP/RabbitMQ强制执行此行为?
我不太确定这是否解决了我的问题。这可以防止消费者同时收到多条消息。然而,我可能在这里是错的,这并不妨碍另一位消费者收到来自第一位消费者目前正在处理的来自同一输入源的消息? – TheRabbitHopper
这取决于你作为'broker'的意思,你把所有的信息放在同一个队列中吗? – Gabriele
所有消息放在同一队列中。我应该为每个输入源创建一个队列吗?这意味着每个消费者都在倾听所有队列? – TheRabbitHopper