RabbitMq中的事件交换规则

问题描述

我有一个社交网络游戏。在这个游戏中,每个玩家所做的任何动作都可以获得一定的奖励分数。所有动作都将发布到json中的Rabbit Mq,例如{"action": "register","player_id": 10,"action_id": 100}

我想创建10个并行工作器以使用并继续执行此操作。我有一个严格的条件,即玩家的所有事件都必须在同一队列中。这意味着我无法并行处理播放器事件。

将事件分配到并行队列的正确方法是什么?

我已经尝试添加基于player_id % queues_count(部门的其余部分)的主题,例如event_to_queue_9event_to_queue_2等。在这种情况下,我有两个或三个溢出的队列,而其他队列为空。有解决我问题的更好方法吗?

解决方法

如果您不想从客户端提供分片的路由密钥(我认为这不是最佳选择),则可能需要看看RabbitMQ Consistent Hash Exchange