1.初识rabbitmq

2019-07-25  本文已影响0人  指尖架构141319

1.简介

AMQP:
是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开 发语言等条件的限制。目标是实现一种在全行业广泛使用的标准消息中间件技术,以便降低企业和系统集成的开销,并且向大众提供工业级的集成服务。
RabbitMQ实现AMQP:

  • 生产者:消息的创建者,发送到 rabbitmq;
  • 消费者:连接到 rabbitmq,订阅到队列上,消费消息,持续订阅(basicConsumer)和单条订阅(basicGet).
  • 消息:包含有效载荷和标签,有效载荷指要传输的数据,标签描述了有效载荷,并且 rabbitmq 用它来决定谁获得消息,消费者只能拿到有效载荷, 并不知道生产者是谁。
  • 交换器:生产者配置
  • 路由键、绑定:生产者和消费者都配置路由键,生产者绑定路由键和交换器,消费者绑定路由键、队列、交换器
  • 队列:消费者配置(可能是多个消费者消费同一个交换器)
image.png
image.png

2.消息中间件优点

3.消息中间件与RPC区别

4.消息中间件比较

image.png

5.rabbit消息确认

消费者收到的每一条消息都【必须】进行确认(自动确认和自行确认)。

  • 如果消息达到无人订阅的队列会怎么办?
    消息会一直在队列中等待,RabbitMq 默认队列是无限长度的。
  • 多个消费者订阅到同一队列怎么办?
    消息以循环的方式发送给消费者,每个消息只会发送给一个消费者。
  • 消息路由到了不存在的队列怎么办?
    一般情况下,凉拌,RabbitMq 会忽略,当这个消息不存在,也就是这消息丢了。

6.虚拟主机

虚拟消息服务器,vhost,本质上就是一个 mini 版的 mq 服务器,有自己的队列、交换器和绑定,最重要的,自己的权限机制。Vhost 提供了逻辑上的 分离,可以将众多客户端进行区分,又可以避免队列和交换器的命名冲突。Vhost 必须在连接时指定,rabbitmq 包含缺省 vhost:“/”,通过缺省用户和 口令 guest 进行访问。

7.交换机类型

共有四种 direct,fanout,topic,headers,其种 headers(几乎和 direct 一样)不实用,可以忽略。

路由键完全匹配,消息被投递到对应的队列, direct 交换器是默认交换器。声明一个队列时,会自动绑定到默认交换器,并且以队列名称作为路由 键:channel->basic_public($msg,’’,’queue-name’)


image.png
上一篇 下一篇

猜你喜欢

热点阅读