2016 - 2024

感恩一路有你

laravel队列消费方式 JAVA如何用队列实现并发?

浏览量:1200 时间:2021-03-16 14:53:37 作者:admin

JAVA如何用队列实现并发?

如果是为了争夺资源,按照先到先得的规则不作弊,那么一个相对简单的实现就是排队。无论请求的并发度有多高,如果用线程来服务用户,也就是说一个人请求资源,那么就启动一个线程,CPU总是按顺序执行线程,比如现在有三个人(passer-by-a,passer-by-B,passer-by-C)请求一个资源,服务器有三个线程为这三个人服务。假设这三个人在请求时没有足够的幸运及时得到CPU时间片,那么他们就等于公平竞争CPU资源,CPU选择运行线程的顺序是不确定的,如果选择运行路人C的线程,就把它放入队列。路人B、路人C等等,他们可能会奇怪为什么不及时处理,因为后续操作可能会很费时,而且线程需要很长时间,当有更多的人请求资源时,服务器可能会挂断

1。首先,上图显示了发送和使用消息的过程

2。首先,需要定义消息协议,如ActiveMQ、stomp、XMPP等。消息协议定义后,消息队列需要满足什么场景

是的,您需要保证消息的可靠性吗?如果需要的话,您需要使存储高度可用

您需要支持同步和异步消息

您需要确保消息的顺序

您需要支持延迟消息

有关详细信息,您可以参考许多开源实现功能。例如,rocketmq是高度可靠的,Kafka是高吞吐量的,但是它不是高度可靠的。

如何设计一个MQ消息队列?

库存被加载到缓存中,例如redis、基于redis的原子操作、库存扣减和库存验证。

下单成功后,发送成功的订单MQ,库存系统消耗MQ扣减库存。当然,消费者需要确保幂等。

乐观锁用于库存系统的数据库操作。

laravel队列消费方式 laravel异步队列 laravel高并发解决方案

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。