java 消息队列_JAVA-消息队列

本文介绍了消息队列在处理高并发请求、系统解耦及提高用户体验等方面的应用,并探讨了其工作原理,包括如何通过中间件如RabbitMQ实现分布式部署。

一.消息队列的作用

1.在某些时候,会突然有许多用户发出请求,就比如某宝搞活动,这时候,服务器就会同时处理复数的请求,可能会出现响应超时的问题,轻则服务器假死,重则直接宕机。而消息队列,可以在服务器接收到用户请求后,将这些请求加入消息队列,然后再一个一个处理。如果消息队列的长度超过限制,还可以把后来的用户请求丢掉,转入如出错,请刷新,或者404界面。

2.在做项目的时候,如果甲方爸爸对于一些用户信息的需求不停的变换,这时候,可以使用消息队列将每个功能变成独立的代码块,实现系统解耦,这样就不需要反复修改代码,而是打开,或者关闭一个消息队列。

3.对于大部分系统,都有记录用户日志的需求,来进行用户行为分析之类的操作,如果不使用消息队列,那么用户请求时,服务器接收请求,然后写入日志再响应请求,这就浪费了用户的一部分时间。这时候就可以先把请求写入消息队列,然后直接响应用户,无需等待日志处理和添加,用户可以有更好的交互体验。

二.消息队列的使用

因为消息队列的实现,一般只需要掌握中间件的使用即可,大部分中间件的使用方法和核心思路都差不多,可以举一反三。

1.大部分中间件都支持分布式部署,例如RabbitMQ,kafka,还有redis也提供轻量级的消息队列。消息队列的工作方式就像发快递,客户端将消息发送到交换器,交换器把消息分发到数个队列中,然后消费者(接收信息的一方)监听接收。

2.拿RabbitMQ来说,它使用起来很方便,部署起来也只要启动节点,link进入集群就行了,并且支持自动选主。RabbitMQ支持持久化,因为设计语言的关系,所以支持高并发。还有消息确认接收机制。

三.自定义消息队列

主要是使用了Queue。可分为双端队列:支持头尾插入和获取。阻塞队列:对队列中的元素进行操作,如果没有成功,会等待执行直到操作完成。非阻塞队列:和阻塞队列相对,操作会直接返回结果,不等待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值