
回复
有一批量的数据,可以按照一个固定的 key 分组并发,但是要保证组内并行的处理。 比如:商城中,不同的用户可以并发下单,但是一个用户只能进行顺序的下单。在全局并发的场景下保证局部有序,保证最小事务单元操作的原子性。
针对上面的场景我们可以通过 KeyAffinityExecutor (KeyAffinityExecutor 是一个可以按照指定的Key亲和顺序消费的执行器) 来解决这个问题,我们下面一起来了解下 KeyAffinityExecutor 。
输出结果如下:
结论:对于 acccountId = 1 有三条数据都是在同一个线程下面执行,线程ID:测试-0 所以可以保证局部有序。
总结,这里其实我们也可以通过只有一个线程的线程数组实现,来实现按照唯一key,进行 hash 路由。
https://github.com/PhantomThief/more-lambdas-java
文章转载自公众号:运维开发故事