首页 > 代码库 > RabbitMQ学习笔记2-理解消息通信

RabbitMQ学习笔记2-理解消息通信

消息包含两部分:1、有效载荷(payload) - 你想要传输的数据。2、标签(lable) - 描述有效载荷的相关信息,包含具体的交换器、消息的接受兴趣方等。

rabbitmq的基础流程如下:

技术分享

RabbitMQ的客户端和服务端通过channel与RabbitMQ服务器进行通信。

Channel(信道):程序和RabbitMQ之间的连接是通过channel,channel是基于TCP协议之上的?,
一个TCP连接可以有多个channel,可以比喻成如下:一根大电缆里面有很多根小的电线,大电缆就是一个TCP连接,
而小电线就是channel了,而为什么要这么设计呢?因为系统创建和销毁TCP连接是很重量级的操作,
基于一个TCP上进行多个不冲突的通信操作可以大大增加效率。

 

AMQP的消息路由必须包含3个部分:交换器(Exchange)、队列(Queue)、绑定(Bind)

1、Queue(队列)用来存放消息的地方,等待消费者来获取。消费者可以通过以下2种方式从queue里接收消息。

⑴、通过AMQP的basic.consume命令订阅。这样会将channel置为接收模式,直到取消对该queue的订阅为止。订阅了消息后,消费者在消费(或者拒绝)最近接收的那条消息后,就能从队列中(有可用的)自动接收下一条信息。此订阅模式生产者把消息发布到queue后就会被消费消费者自动接收到

⑵、通过AMQP的basic.get命令获取下一条消息。该模式一次只获取一条信息,然后就取消了订阅,如果需要继续获取下一条需要再次发送此命令。注意:不应该在for循环里使用basic.get来替代basic.consume,这样会影响Rabbit的性能。

 

 

Exchange(交换机):消息的路由器,解析消息的标签(lable)

 

RabbitMQ学习笔记2-理解消息通信