RabbitMq小结

基本概念:

Amqp:一种协议,是消息队列在应用层的一种统一的协议,可以规范消息队列的通信方式。
JMS:JAVA的一套API,用于不同程序之间的异步通信。
RabbitMq:AMQP协议下的一种产品,简单快捷。

基本原理

RabbitMq小结

  • Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue。
  • Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑。
  • Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的消费方。
  • Producer:消息生产者,即生产方客户端,生产方客户端将消息发送到MQ。
  • Consumer:消息消费者,即消费方客户端,接收MQ转发的消息。

工作模式

work quenes:
这种模式下我们不需要绑定交换机,默认交换机与队列绑定,一个队列绑定一个或者多个消费者。当生产者发送一条消息,只有一个消费者会去消费这个消息,不同的消费者使用轮询的方式去依次消费消息。
RabbitMq小结

Publish/Subscibe
这种模式下我们需要让生产者绑定指定交换机,交换机和多个队列分别绑定,一个队列绑定一个消费者。当生产者发送一条消息,每一个消费者都回去消费这些消息。

RabbitMq小结

Routing
这种模式和Publish/Subscirbe类似,都是我们需要让生产者绑定指定交换机,交换机和多个队列分别绑定,一个队列绑定一个消费者。不过交换机和队列绑定的时候,我们需要声明绑定的RoutingKey。当生产者发送一条消息时,需要指定RoutiingKey,这个时候,所有与这个RoutingKey相等的队列都可以接收这条消息。

RabbitMq小结

topics
和Routing类似,不过声明的RoutingKey可以用带通配符的字符串表示,*代表一个字符,#代表一个或多个字符。当生产者发送一条消息时,需要指定RoutiingKey,这个时候,所有RoutingKey和topics匹配成功的队列都可以接收到这条消息。

RabbitMq小结

Header
header模式与routing不同的地方在于,header模式取消routingkey,使用header中的 key/value(键值对)匹配队列

RPC
RPC即客户端远程调用服务端的方法 ,使用MQ可以实现RPC的异步调用,基于Direct交换机实现。

RabbitMq小结