rabbitmq的特点

5 篇文章 0 订阅
1 篇文章 0 订阅

名词解释:

  • Producer:生产者,由生产者来发消息
  • Message:消息,由payload和label组成,
  • payload:消息传输的数据
  • label:exchange的名字,作为tag
  • Exchanges:Producer发送消息的时候会发到这里,然后Exchange再根据与queue绑定的规则分发消息到queue里
  • Bindings: exchange和queue之间的规则,确定是否要把消息发到queue里
  • queue:这个是消息最终存储的地方,有Consumer进行消费,消费之后queue的这个消息就被删除掉了
  • Consumer:数据的接收方,consumer从queue中拿到数据
  • Connection:Producer和Consumer都是通过TCP连接到RabbitMQ Server的,
  • Channels:它建立在上述的TCP连接中。数据流动都是在Channel中进行的。也就是说,一般情况是程序起始建立TCP连接,第二步就是建立这个Channel。目的是保持长连接,减少tcp创建的性能损耗
  • Subscribe:订阅,有Consumer对某个queue进行消费
  • acknowledged(ack):确认,由Consumer将消息消费完毕后给server的回执确认,Server确认后会把消息从queue中删除
  • Direct:Exchange的一种类型,如果 routing key 匹配, 那么Message就会被传递到相应的queue中。其实在queue创建时,它会自动的以queue的名字作为routing key来绑定那个exchange
  • Fanout: Exchange的一种类型,所有与exchange关联的queue都会被传递
  • Topic: Exchange的一种类型,按照routingkey规则匹配的queue
    • routing key为一个句点号“. ”分隔的字符串(我们将被句点号“. ”分隔开的每一段独立的字符串称为一个单词),如“aa.bb.cc”
    • binding key与routing key一样也是句点号“. ”分隔的字符串
    • binding key中可以存在两种特殊字符“”与“#”,用于做模糊匹配,其中“”用于匹配一个单词,“#”用于匹配多个单词(可以是零个)
  • Virtual hosts:对exchange和queue进行分组,类似mysql数据库的概念,可以对hosts进行权限的分配
  • user:可以创建用户,并且给用户配置对vhosts的权限
  • 权限:分为读,写,管理

分发机制

  • 默认机制
    • 第n个消息发送给第n个consumer,无论是否这些consumer的消息是否ack了
    • 这样有可能导致负载不均衡,有些很忙,有些比较闲
  • 公平机制
    • prefetch_count,使用这个配置,但consumer消费能力达到prefetch_count时不再推送消息(有prefetch_count个消息没有ack)

高可用方案

  • 镜像+haproxy

扩展

  • 序列化方案
    • fastjson
    • ProtoBuf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值