rabbitmq知识点

key:

  rabbitmq的消息会携带一个key(Routing Key),交换机和队列之间绑定也会指定一个key(Binding Key) , 通过这两个key的匹配可以确认消息的路由转发

Exchange(交换机):

  消息到达rabbitmq服务内部的第一站,交换机会根据路由关系将消息转发到不同的队列

  如果没有任何队列与交换机绑定,那消息到达交换机后,会被丢弃

交换机有四种类型:

  1. direct Exchange(直接交换机) -- Routing Key和Binding Key要完全匹配才会发送到对应队列
  2. Fanout Excange(扇出交换机)-- 不关系key,消息会发送给所有绑定的队列
  3. Topic Exchange(主题交换机) -- key可以包含分隔符”.”,单个通配符“*”,多个通配符“#”,例如“*.a”可以匹配“b.a”, “#.a”不仅可以匹配“b.a”,还可以匹配“c.b.a”, 因此转发的更加灵活
  4. Header Exchange – 转发规则不再依赖key,而是依据Arguments参数

交换机的属性设置:

  1. AMQP_PASSIVE  置1表示不存在抛出异常,默认0表示不存在则创建
  2. AMQP_DURABLE  置1表示交换机持久化,即rabbitmq服务器重启后该交换机会重新建立
  3. AMQP_AUTODELETE  置1表示当没有消费者时,服务器自动删除该交换机

 (Queue)队列:

       用来存放消息的队列,一个消费者从该队列中取走一个数据后,其他消费者只能消费    下一个数据。

       属性设置:

  1. AMQP_PASSIVE      true:判断是否存在, 不存在抛出异常 false: 不存在则创建
  2. AMQP_DURABLE      true:队列持久化, 即rabbitmq服务器重启后该队列会重新建立
  3. AMQP_AUTODELETE   true:当没有消费者时, 服务器自动删除该队列
  4. AMQP_EXCLUSIVE    true:专用队列,连接断开后就删除该队列

  参数设置:

  1. 消息个数上限:max-length
  2. 消息的总长度上限:max-length-bytes
  3. 消息的存活时间:message-ttl

消息持久化:

  1、需要先确认交换机和队列配置成持久化,否则rabbitmq故障重启后,消息也就随着队列的消失而丢失。

       2、消息的发送时指定delivery_mode= 2(1是非持久化)

  3、持久化消息会同时写入磁盘和内存(加快读取速度),非持久化消息会在内存不够用时,将消息写入磁盘(Rabbitmq重启之后就没有了)

posted @ 2023-08-11 16:57  ho966  阅读(29)  评论(0编辑  收藏  举报