首页 > 其他分享 >rabbitmq知识点

rabbitmq知识点

时间:2023-08-11 17:14:15浏览次数:34  
标签:知识点 AMQP 队列 rabbitmq 交换机 消息 key

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重启之后就没有了)

标签:知识点,AMQP,队列,rabbitmq,交换机,消息,key
From: https://www.cnblogs.com/ho966/p/17623444.html

相关文章

  • selenium常用知识点
    selenium知识点selenium截屏全屏截屏:截屏的是可视区域driver.save_screenshot('baidu1.png')部分截屏:指定元素截屏image=driver.find_element(By.XPATH,'//*[@id="app"]/div/div/div[2]/div[3]/div[2]/form/div[3]/div/div/div/div/img')time.sleep(3)#dri......
  • 每日一个软考知识点之【CRC校验】
    CRC校验的原理(此图引用自知乎)发送方可以通过一定的算法生成校验位,然后接收方通过相同的算法验证一边,确保数据的真实性完整性。 几个重要的概念POLY:可以多项式表达,也可以用2进制或者16进制来表达,比如说多项式为G(x)=x^5+x^3+x+1,用二进制显示就是101011,用十六进制......
  • RabbitMq介绍(RabbitMq第一篇)
    RabbitMq就是消息队列一、什么是消息队列消息队列(MessageQueue)是一种用于在应用程序之间传递消息的通信方式,消息队列允许应用程序异步地发送和接受消息,并且不需要直接连接到对方。消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌......
  • C/C++基础知识点
    C和C++的区别C++是C的超集,C是面向过程化的结构性语言,而C++是面向对象的编程语言C语言更偏向于底层,使用较为灵活,可移植性强,而C++更偏向于上层,可扩展性强,对于大型项目往往使用C++C++在C语言的基础上提出了STL标准模板库,函数模板等特性static关键字的作用隐藏,凡事变量前添加s......
  • RabbitMQ面试题大全含答案
    rabbitmq的使用场景有哪些?①.跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通讯方式。②.多个应用之间的耦合,由于消息是平台无关和语言无关的,而且语义上也不再是函数调用,因此更适合作为多个应用之间的松......
  • MYSQL数据库知识点
    CONCAT()函数的使用方法--双列合并SELECTCONCAT(id,'@',number2)FROMtable1--多列合并SELECTCONCAT(id,'AA',number,'B',number2)FROMtable1table1的数据以及拼接后的效果  DATE_FORMAT()时间格式化函数 ......
  • 复习消息队列之RabbitMQ
    概念:RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。对比:RabbitMQ对......
  • 记rabbitmq崩溃随笔
    之前一直以为MQ是个很简单的东西,部署好后,知道怎么样用就好了。不就是生产者-消费者之间的消息传递嘛,还有几种消息模式,延时队列插件啥的,都会用就好。直到在这家公司,自建的RabbitMQ稳定性一直很差,消费者老是起不来,偶尔又遇到幽灵队列的情况。终于,上周这个MQ终于顶不住了,又一开始排......
  • RabbitMQ总结
    1、为什么要使用MQ1、流量消峰举个例子:如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以......
  • MySQL中的锁知识点总结
    MVCC和加锁是解决并发事务带来的一致性问题的两种方式。共享锁简称为S锁,独占锁简称为X锁。S锁与S锁兼容;X锁与S锁不兼容,与X锁也不兼容。事务利用MVCC进行的读取操作成为一致性读,在读取记录前加锁的读取操作称为锁定读。InnoDB有两种语法来进行锁定读:select..lockinsharemode......