java 消息队列_JAVA-消息队列

一.消息队列的作用

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

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

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

二.消息队列的使用

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

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

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

三.自定义消息队列

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

你可能感兴趣的:(java,消息队列)