RabbitMQ知识点(一)

  1. 什么是 RabbitMQ?
    RabbitMQ是一款开源的,Erlang编写的,消息中间件;
    最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦。
    可以用它来:解耦、异步、削峰。
  2. rabbitmq 的使用场景
    (1)服务间异步通信
    (2)顺序消费
    (3)定时任务
    (4)请求削峰
  3. RabbitMQ 基本概念
    Broker: 简单来说就是消息队列服务器实体。
    Exchange: 消息交换机,它指定消息按什么规则,路由到哪个队列。
    Queue: 消息队列载体,每个消息都会被投入到一个或多个队列。
    Binding: 绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
    Routing Key: 路由关键字,exchange根据这个关键字进行消息投递。
    VHost: vhost 可以理解为虚拟 broker ,即 mini-RabbitMQ server。其内部均含有独立的queue、exchange 和 binding 等,
    但最最重要的是,其拥有独立的权限系统,可以做到 vhost 范围的用户控制。当然,从 RabbitMQ 的全局角度,
    vhost 可以作为不同权限隔离的手段(一个典型的例子就是不同的应用可以跑在不同的 vhost 中)。
    Producer: 消息生产者,就是投递消息的程序。
    Consumer: 消息消费者,就是接受消息的程序。
    Channel: 消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务由
    Exchange、Queue、RoutingKey三个才能决定一个从Exchange到Queue的唯一的线路。
  4. RabbitMQ的工作模式
    simple模式(即最简单的收发模式)
    (1)消息产生消息,将消息放入队列
    (2)消息的消费者(consumer) 监听消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中
    删除(隐患 消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失,这里可以设置
    成手动的ack,但如果设置成手动ack,处理完后要及时发送ack消息给队列,否则会造成内存溢出)。
    work工作模式(资源的竞争)
    (1)消息产生者将消息放入队列消费者可以有多个,消费者1,消费者2同时监听同一个队列,消息被消费。
    C1 C2共同争抢当前的消息队列内容,谁先拿到谁负责消费消息(隐患:高并发情况下,默认会产生某
    一个消息被多个消费者共同使用,可以设置一个开关(syncronize) 保证一条消息只能被一个消费者使用)。
    publish/subscribe发布订阅(共享资源)
    (1)每个消费者监听自己的队列;
    (2)生产者将消息发给broker,由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收到消息。
    routing路由模式
    (1)消息生产者将消息发送给交换机按照路由判断,路由是字符串(info) 当前产生的消息携带路由字符
    (对象的方法),交换机根据路由的key,只能匹配上路由key对应的消息队列,对应的消费者才能消费消息;
    (2)根据业务功能定义路由字符串
    (3)从系统的代码逻辑中获取对应的功能字符串,将消息任务扔到对应的队列中。
    (4)业务场景:error 通知;EXCEPTION;错误通知的功能;传统意义的错误通知;客户通知;利用key路由,可
    以将程序中的错误封装成消息传入到消息队列中,开发者可以自定义消费者,实时接收错误;
    topic 主题模式(路由模式的一种)
    (1)星号井号代表通配符
    (2)星号代表多个单词,井号代表一个单词
    (3)路由功能添加模糊匹配
    (4)消息产生者产生消息,把消息交给交换机
    (5)交换机根据key的规则模糊匹配到对应的队列,由队列的监听消费者接收消息消费
    (在我的理解看来就是routing查询的一种模糊匹配,就类似sql的模糊查询方式)
  5. 如何保证RabbitMQ消息的顺序性?
    拆分多个 queue(消息队列),每个 queue(消息队列) 一个 consumer(消费者),就是多一些 queue(消息队列)而已,确实是麻烦点;
    或者就一个 queue (消息队列)但是对应一个 consumer(消费者),然后这个 consumer(消费者)内部用内存队列做排队,
    然后分发给底层不同的 worker 来处理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RabbitMQ是一种消息队列(MQ)系统,它具有多个相关概念和模式。其中一些重要的知识点包括: 1. RabbitMQ的四大概念:生产者、消费者、交换机和队列,它们一起构成了消息传递的基本组成部分。 2. RabbitMQ的六种模式:简单模式、工作模式、轮询分发、消息应答、自动应答和手动应答。 3. RabbitMQ持久化消息:可以将消息持久化到磁盘上,以防止消息在RabbitMQ发生故障时丢失。 4. 死信队列:当消息因某些原因无法被消费时,可以将其发送到死信队列中进行处理。 5. 延迟队列:可以设置消息的延迟时间,使其在一定时间后被消费。 6. 发布确认:可以通过发布确认机制来确保消息被成功发送到RabbitMQ。 7. RabbitMQ集群:可以通过搭建集群来实现高可用性和负载均衡。 8. 幂等性:消息的幂等性指的是多次处理同一消息不会产生副作用。 9. 优先级队列:可以为消息设置优先级,以确保高优先级的消息能够更快地被消费。 10. 惰性队列:惰性队列指的是只有在需要时才会被创建。 这些是RabbitMQ的一些重要知识点,它们可以帮助我们更好地理解和应用RabbitMQ。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [RabbitMQ 知识点总结](https://blog.csdn.net/PaperJack/article/details/124734987)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [RabbitMQ知识点](https://blog.csdn.net/weixin_42100694/article/details/113514641)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值