轨道交通消息消费顺序
Masstransit message consumption order
我有一个发布端点 'P' 和两个消费者 'A'、'B'。
当'P'发布消息'1''2''3'时,我预计消费者会以'123'的顺序消费消息。但实际上消费顺序可能是'132','312'等等。
我已经配置了与并发相关的设置但是它不起作用
concurrency settings
问题:是否有配置可以阻止 'B' 在 'A' 成功使用消息之前获取消息?
谢谢
无法保证按顺序处理消息,应不惜一切代价避免。
队列中的消息是先进先出的,但是当您有多个具有预取设置的消费者时,每个消费者 A 和 B 将从队列中拉出 x 条消息,并根据需要多长时间来处理它们,消费者 A 可以在消费者 B 完成之前返回更多消息,并且乱序处理消息是常见的情况。
消息重试也可能导致消息处理顺序混乱。
也就是说,如果您确实需要这样做,使用并发限制为 1 的单个使用者集将按顺序处理消息,但会以吞吐量为代价。
我有一个发布端点 'P' 和两个消费者 'A'、'B'。
当'P'发布消息'1''2''3'时,我预计消费者会以'123'的顺序消费消息。但实际上消费顺序可能是'132','312'等等。
我已经配置了与并发相关的设置但是它不起作用
concurrency settings
问题:是否有配置可以阻止 'B' 在 'A' 成功使用消息之前获取消息?
谢谢
无法保证按顺序处理消息,应不惜一切代价避免。
队列中的消息是先进先出的,但是当您有多个具有预取设置的消费者时,每个消费者 A 和 B 将从队列中拉出 x 条消息,并根据需要多长时间来处理它们,消费者 A 可以在消费者 B 完成之前返回更多消息,并且乱序处理消息是常见的情况。
消息重试也可能导致消息处理顺序混乱。
也就是说,如果您确实需要这样做,使用并发限制为 1 的单个使用者集将按顺序处理消息,但会以吞吐量为代价。