The use of multiple workers allows for much higher throughput, but it also allows for race conditions during processing. When messages for the same user are sent to different workers, handling order can no longer be guaranteed. Therefore we have failed to fulfil our business rule. If we were able to ensure every message from the same user were sent to the same worker, the worker could ensure those messages are handled in order while the system as a whole would still benefit from the degree of parallelism. But how do we make this happen?
Hey Laravel friends! 1000s of Ruby developers know and love Honeybadger. We recently attended our first Laracon, though, and OMG, you are all awesome. Naturally, we're rebuilding Honeybadger from scratch, just for you. Learn more here (sponsored link)