重复消费问题的话,如果接触过MQ就说MQ的,没接触过就说一下设计方面的,原理都差不多。
比如通过数据库来实现:设计一张订单生成表和消费表,每生成一个订单,就给订单一个UUID什么的,保证订单唯一,然后消费者在消费这个订单的时候,先查一下订单消费表,若该订单id不存在,则消费成功,并把该订单的ID存在表中,若订单id存在,则不消费,然后给用户相关提示。
还可以利用Redis缓存:同样设计一个订单生成表,给每一个订单一个唯一ID,在消费该订单时,先查一下Redis缓存,若该订单的ID不在缓存中,则消费成功,并把该订单的ID Set 进Redis中进行缓存,并设置一个失效时间(比如5s),若在缓存中,则不进行消费,并给用户相应提示。