消息中间件的概念
消息中间件最常用在异步处理请求、应用解耦以及流量削峰。
其中异步处理主要是降低系统的响应时间,将原来每一步相连的操作进行异步处理,实例如下。
应用解耦主要是使用在微服务架构中,将每一个独立的系统抽取成一个服务,进而他们共同去访问一个消息队列,降低应用之间的耦合度。
流量削峰的应用场景是秒杀业务的处理,主要的思想是生产者和消费者的关系,生产者生产指定数目的库存,速度最快的消费者将其消费完,然后消息队列中就全部清空,剩下的没有得到产品的消费者请求失败即秒杀失败。
消息服务中的两个重要概念
消息代理和目的地,消息代理即消息队列的服务器,目的地有两种形式,一是队列(queue)即点对点通信,消息只有唯一的发送者和接受者,意思就是服务器产出一个消息,只要有一个接受者将其接受,剩下的其他人则没有消息接受;二是发布订阅式,发送者发送消息到主题(topic),多个接受者(订阅者)监听(订阅)这个主题,那么就会在消息到达时同时接受消息。
消息队列的两种规范
一是JMS,JAVA消息服务,基于JVM消息代理,其中ActiveMQ是JMS的实现;二是AMQP,高级消息队列协议,兼容JMS,目前市面上比较火的RabbitMQ就是AMQP的实现。