<< 关于消息队列(Message Queue)的介绍 >>
所谓的Message Queue就是主要是应用于应用程序与应用程序之间的通信方法,Message Queue是典型的生产者-消费模型的一个典型代表,其中一端往消息队列中不断地写入消息,另一段可以读取或者是订阅消息。
<<消息队列的特点(Message Queue)>>
(1)队列管理器
队列管理器是MQ系统中最上层的一个概念,由它为我们提供基于队列的消息服务。
(2)消息
在消息队列中,可以将应用程序由MQ传输的数据定义为消息,在此可以定义消息内容以及对消息进行相应的处理
(3)队列
队列是消息的存储地,所有的消息产生之后都会放置到队列中,直到被应用程序处理为止。
队列消息的处理有如下几种方式。
1)程序A形成对消息队列系统的调用,此调用告知消息队列系统,消息准备好了投向B。
2)消息队列系统发送此消息到程序B驻留处的系统,并将它放到程序B的队列中。
3)适当时间后,程序B从它的队列中读此消息,并处理此信息。
(4)通道
通道是消息队列系统中管理器之间传递消息的通道,它是建立在物理的网络连接上的。目前而言,通道有三种类型,分别为消息通道、MQI通道、以及Cluster通道。消息通道是用于在MQ的服务器和服务器之间传输消息的,需要强调指出的是,该通道是单向的,它又有发送(sender), 接收(receive), 请求者(requestor), 服务者(server)等不同类型,供用户在不同情况下使用。MQI通道是MQ Client和MQ Server之间通讯和传输消息用的,与消息通道不同,它的传输是双向的。集群(Cluster)通道是位于同一个MQ 群集内部的队列管理器之间通讯使用的。
<<常用的消息队列系统>>
常用的消息队列系统有rabbitMq,rocketMq,Redis,ZeroMq,Kafka/Jafka等,目前而言,由于对消息队列的理解有限,并且仅仅用过Redis数据库。Redis的链表List可以用来做链表,高并发的特性非常适合做分布式的并行消息传递。因此能更好支持消息队列的模式,并且最新的redis支持了生产消费模式,以及发布订阅模式,这两种方式能够用来做消息队列。
---生产消费模式
会让一个或者多个客户端监听消息队列,一旦消息到达,消费者马上消费,谁先抢到算谁的,如果队列里没有消息,则消费者继续监听。
使用redis的brpop方式做队列。
---发布订阅模式
是一个或多个客户端订阅消息频道,只要发布者发布消息,所有订阅者都能收到消息,订阅者都是平等的。
使用redis的pubsub功能,订阅者订阅频道,发布者发布消息到频道了,频道就是一个消息队列。