RabbitMq基础概念

为什么要用mq

  • 解藕
  • 异步化提升效率
  • 流量削峰

为什么用rabbitMq

  • erlang语言天生优势,高并发高可用
  • 拥有持久化的机制
  • 社区活跃度高
  • 易用的可视化后台

使用场景

  • 服务间异步通信:商品修改通知其他服务
  • 流量削峰:登陆后续流程通过mq实现

mq的缺点

  • 引入系统增多,可用性降低
  • 系统复杂度提升
    引入mq需要保证消息不能重复消费,保证消息不能丢失,有些场合还要保证消息的顺序执行
  • 一致性问题
    如果mq消费时数据库写库失败等场景如何保证事务最终一致性

基础组件

broker

broker即rabbit服务

producer

发送消息的应用

exchange

producer 并不会直接将消息发送到 queue 上,而是将消息发送给 exchange,由 exchange 按照一定规则转发给指定queue

queue

queue 用来存储 producer 发送的消息

consumer

consumer是接收并处理消息的应用

connection

connection是消费者、生产者和broker间建立的tcp连接

channel

channel即信道,一个connection包含多个channel,因为tcp连接建立和销毁开销比较大,所以每个线程创建一个channel负责和broker通信,channel之间是完全隔离的

virual host

virtual host是一个虚拟主机的概念,一个broker中可以有多个virtual host,每个virtual host都有自己的exchange和queue,同一个virtual host中的exchange和queue不能重名,不同的virtual host之间不作限制

消息发送过程

单queue比较简单略过
多queue的情况下,每个queue会通过binding key与某个exchage绑定,生产者指定消息的routing key,
exchage通过routing key,bingding key和路由规则决定把消息推送给哪个queue
每一类exchange有自己的路由规则

  • Fanout Exchange
    忽略key对比,直接把消息推送到下游所有queue
  • Direct Exchange(default Exchange)
    当rouing key和binding key完全相同时才推送到该queue
  • Topic Exchange
    routing key和bingding key按照规则匹配成功的才推送
  • Headers Exchange
    queue通过参数绑定exchange,生产者可以再消息的Headers中添加参数来推送到对应的queue中,该模式用的比较少

routing key命名规则: 以.分割的数字或者字母
key匹配规则

  • * 匹配一个数字或者字母
  • # 匹配0~N个数字或者字母
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RabbitMQ是一个消息代理。它通过发送消息和接收消息来实现消息传递的功能。在介绍RabbitMQ基础之前,我们需要了解一些常用的管理工具,如rabbitmqctl和rabbitmq-plugins,它们用于管理RabbitMQ服务器。 在开始使用RabbitMQ之前,我们可以通过一个简单的"helloworld"例子来了解它的基本使用方法。我们可以发送一个消息"helloworld"并接收它。同时,这个例子还会涉及到RabbitMQ的基本概念,例如交换机和队列。 这些是RabbitMQ的基本介绍,它是一个功能强大的消息代理系统,用于实现消息传递。在后续的文章中,我们将会更深入地了解RabbitMQ,并进行性能测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [RabbitMQ基础概念详细介绍](https://blog.csdn.net/qq_40704861/article/details/123067104)[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_2"}}] [.reference_item style="max-width: 50%"] - *3* [RabbitMQ基本概念和使用](https://download.csdn.net/download/weixin_38678022/14962733)[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_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值