【RabbitMQ】生产者,消费者,信道,队列,交换器和绑定

  了解消息通信中的一些重点概念对于深化对RabbitMQ的理解有重要的意义;下面从生产者,消费者,信道,队列,交换器和绑定,来介绍他们在消息通信过程中的角色和作用;


生产者:

  创建消息,然后发布到代理服务器(RabbitMQ)


消费者:

连接到代理服务器(RabbitMQ)上,并订阅到队列上。不会知道谁是消息的生产者


整个过程:

生产者创建消息,消费者接收消息。

  消息:包括有效载荷与标签

    有效载荷:要传输的数据

    标签:描述有效载荷,并且RabbitMQ使用标签决定谁将获得消息的拷贝;


信道:

  生产者和消费者与代理服务器之间的通信必须建立一个信道。

为什么会有,作用?

  连接到RabbitMQ,才能消费或者发布消息,信道是建立在“”真实“”TCP连接内的虚拟连接。AMQP命令都是通过信道发送出去的。


TCP连接和信道的关系

  在应用程序与代理服务器之间创建一个TCP连接,TCP一旦打开,就会创建AMQP信道

  电缆相当于TCP,信道是一条独立光纤束,一条TCP连接上创建多少条信道是没有限制的。


为什么不使用TCP连接发送AMQP命令
  1.创建和销毁TCP会话,开销大
  2.如果使用TCP,每个线程连接到RabbitMQ,都要创建连接,造成浪费和性能瓶颈
  3.使用一个TCP连接,能够满足性能,并且保证线程私密性。效果更好。


队列:

  AMQP消息路由必须三部分:交换器,队列,绑定

  生产者把消息发布到交换器,消息最后到达队列,被消费者接收,绑定决定了消息如何从路由器路由到特定的队列。


队列是消息通信的基础模块

  1.为消息提供了处所,消息在此等待消费

  2.对负载均衡来说,队列是绝佳方案,让RabbitMQ循环的方式均匀分配消息。

  3.队列是Rabbit中消息的最后终点(除非消息进入“”黑洞“”)

  



交换器和绑定

  消费者从队列中获取消息,但是消息是如何到达队列的呢?

  将消息投递到队列时,通过把消息发送给交换器来完成。根据确定的规则,RabbitMQ会决定消息投递到那个队列。这个规则叫路由键(routing key),队列通过路由键绑定到交换器。当把消息发送发送到代理服务器时,消息将拥有一个路由键,RabbitMQ会将其和绑定使用的路由键进行匹配。匹配成功,消息会投递到队列,不匹配则进入黑洞

  

  使用交换机和绑定完成解耦,对于发送消息给服务器的一方来说,不需要关系服务器另一端的逻辑。服务器会根据路由键将消息从交换器路由到队列。

  在AMQP中定义类4种类型的交换器:direct,fanout,topic和header。header交换器与其他3个不同,它允许匹配AMQP消息的header而不是路由键,不常用;


消息队列的使用过程大概如下:

  (1)客户端连接到消息队列服务器,打开一个channel。

  (2)客户端声明一个exchange,并设置相关属性。

  (3)客户端声明一个queue,并设置相关属性。

  (4)客户端使用routing key,在exchange和queue之间建立好绑定关系。

  (5)客户端投递消息到exchange。

  (6)exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。


  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
RabbitMQ是一个开源的消息中间件,它实现了高效的消息传递机制,可以在分布式系统中进行消息的发布和订阅。生产者消费者模式是一种常见的消息通信模式,其中生产者负责发送消息,消费者负责接收和处理消息。 在RabbitMQ中,生产者消费者之间通过交换机(Exchange)和队列(Queue)进行通信。生产者将消息发送到交换机交换机根据指定的路由规则将消息路由到一个或多个队列中,消费者队列中接收消息并进行处理。 在单机模式下,RabbitMQ生产者消费者都运行在同一台机器上。以下是单机模式下RabbitMQ生产者消费者的基本步骤: 1. 安装RabbitMQ:首先需要在机器上安装RabbitMQ服务。 2. 创建连接:生产者消费者都需要创建与RabbitMQ服务器的连接。连接包括主机名、端口号、用户名和密码等信息。 3. 创建通道:连接成功后,生产者消费者都需要创建一个通道。通道是进行消息传递的通道,可以在同一个连接上创建多个通道。 4. 声明交换机生产者需要声明一个交换机,用于将消息发送到指定的队列交换机有不同的类型,如直连交换机、主题交换机、扇形交换机等。 5. 声明队列消费者需要声明一个队列,用于接收生产者发送的消息。队列可以绑定交换机上,以便接收特定类型的消息。 6. 发布消息:生产者通过通道将消息发送到交换机,指定消息的路由键和其他属性。 7. 消费消息:消费者通过通道从队列中接收消息,并进行处理。可以设置回调函数来处理接收到的消息。 8. 关闭连接:当生产者消费者完成任务后,需要关闭与RabbitMQ服务器的连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值