RabbitMQ(一):简介和基本概念

一、简介

RabbitMQ是一个消息代理,可以将其视为邮局,它接受和转发消息。

RabbitMQ和邮局之间的主要区别在于它不处理纸张,而是接受、存储、转发二进制blob数据 - 消息。

二、队列

队列是RabbitMQ中的邮箱的名称。

消息流经RabbitMQ和应用程序,但它们只能存储在队列中。

队列仅由主机的存储器&磁盘限制约束,它本质上是一个大的消息缓冲器。

许多生产者可以发送到一个队列的消息,并且许多消费者可以尝试从一个队列接收数据。

三、基本概念

  • ConnectionFactory(连接工厂): 生产Connection的的工厂

  • Connection(连接):是RabbitMQ的socket的长链接,它封装了socket协议相关部分逻辑

  • Channel(频道|信道): 是建立在Connection连接之上的一种轻量级的连接,我们大部分的业务操作是在Channel这个接口中完成的,(如果把Connection比作一条光纤电缆的话,那么Channel信道就比作成光纤电缆中的其中一束光纤。一个Connection上可以创建任意数量的Channel)

    • 声明队列:queueDeclare、
    • 声明交换机:exchangeDeclare、
    • 队列的绑定:queueBind、
    • 消息的发布:basicPublish、
    • 消息的消费:basicConsume等。
  • Producer(生产者):生产消息

  • Consumer(消费者):消费消息Exchange(交换机):生产者会将消息发送到交换机,然后交换机通过路由策略(规则)将消息路由到匹配的队列中去

    • 消费者只需关注队列即可,不需要关注交换机和路由键,
    • 消费者可以通过basicConsume(订阅模式可以从队列中一直持续的自动的接收消息)
    • 或者basicGet(先订阅消息,然后获取单条消息,再然后取消订阅,也就是说basicGet一次只能获取一条消息,如果还想再获取下一条还要再次调用basicGet)来从队列中获取消息
  • Routing Key(路由键):一个String值,用于定义路由规则,Queue(队列):用于存储消息的容器,可以看成一个有序的数组,生产者生产的消息会发送到交换机中,最终交换机将消息存储到某个或某些队列中,(消息的持久化是将消息写入rabbitMQ自带的数据库中)。

    • 在队列绑定的时候需要指定路由键,
    • 在生产者发布消息的时候需要指定路由键,
    • 在消费的时候只需关注队列即可,不需要关注交换机和路由键(不理解)(消费前必须指定指定队列,声明
    • 在消息确认机制中,自动回复队列应答时需要(待定
    • 当消息的路由键和队列绑定的路由键匹配时,消息就会发送到该队列(条件)。
  • Binding(绑定): Binding并不是一个概念,而是一种操作,(RabbitMQ中通过绑定,以路由键作为桥梁将Exchange与Queue关联起来,这样RabbitMQ就知道如何正确地将消息路由到指定的队列了

    • (Exchange—>Routing Key—>Queue),通过queueBind方法将Exchange、Routing Key、Queue绑定起来
  • vhost(虚拟主机): RabbitMQ 通过虚拟主机(virtual host)来分发消息,

    • 拥有自己独立的权限控制,不同的vhost之间是隔离的,单独的。
    • vhost是权限控制的基本单位,用户只能访问与之绑定的vhost,默认vhost:”/” ,默认用户”guest” 密码“guest”,来访问默认的vhost。

四、理解

  下图说明了生产者将消息发送到交换机中,然后又路由到指定的队列中 

 

这里写图片描述

这里写图片描述

猜你喜欢

转载自www.cnblogs.com/zhxb/p/9370022.html