RabbitMQ基础--总结
一、 RabbitMQ的五种工作场景:
1、 单发单收
2、 单发送多接收
+++++++++++++++++++++前面两种没有使用exchange++++++++++++++++++
3、 Publish/Subscribe(广播)--ExchangeType:fanout
使用场景:发布、订阅模式,发送端发送广播消息,多个接收端接收。
4、 Routing(按路线发送接收)--ExchangeType:direct
使用场景:发送端按routingKey发送消息,不同的接收端按不同的routingKey接收消息。
5、Topics(按topic发动接受)--ExchangeType:topic
使用场景:发送端不只按固定的routingKey发送消息,而是按照字符串“匹配”发送,接收端同样如此。
二、RabbitMQ的Reliablity(可靠性)特性
1、 持久化--persistence
2、 发送ack确认---delivery acknowledgements
3、 广播确认---publisher confirms
4、高可用性--HA
(1)集群
(2)镜像队列
三、 解决问题
使用背景:
1、异步调用
2、多节点
3、消息队列
未加入MQ下发流程:
1、 云平下发配置1,LB将此任务提交给AFC1处理
2、AFC1将任务提交给本地的阻塞队列,然后保存DB
3、消费者从阻塞队列中取配置任务,进行配置下发
弊端:
1、 无法共享队列,局部保证时序。
1、 如何保证配置任务在rabbitmq中保存时不丢失?
配置镜像队列侧略
2、 当rabbitMq宕机重启时,如何处理之前的connection连接?
设置自动恢复连接,确保重启时,NODE能和rabbitmq通过原有的connection进行通信
3、 出现分裂情况怎么处理
配置了pause_monirity策略:(RabbitMQ处理网络分区的策略),另外 两种是 pause-if-all-down模式和autoheal模式。
MQ会自动检测其自身是否处于“少数派”,MQ会自动关闭这些节点的运作,当分区结束时又会启动。
4、 protobuf序列化
5、 ack及持久化的消息模式保证消息的可靠性。
gRPC
使用背景:
1、
RabbitMQ基础--总结的更多相关文章
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- 转:RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- RabbitMQ基础知识详解
什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中 ...
- RabbitMQ基础教程之基本使用篇
RabbitMQ基础教程之基本使用篇 最近因为工作原因使用到RabbitMQ,之前也接触过其他的mq消息中间件,从实际使用感觉来看,却不太一样,正好趁着周末,可以好好看一下RabbitMQ的相关知识点 ...
- RabbitMq基础教程之基本概念
RabbitMq基础教程之基本概念 RabbitMQ是一个消息队列,和Kafka以及阿里的ActiveMQ从属性来讲,干的都是一回事.消息队列的主要目的实现消息的生产者和消费者之间的解耦,支持多应用之 ...
- 转 RabbitMQ 基础概念及 Spring 的配置和使用 推荐好文 举例讲解
从不知道到了解—RabbitMQ 基础概念及 Spring 的配置和使用 原理同上 请求地址:http://localhost:8080/home?type=3&routing_key=myO ...
- RabbitMQ基础组件和SpringBoot整合RabbitMQ简单示例
交换器(Exchange) 交换器就像路由器,我们先是把消息发到交换器,然后交换器再根据绑定键(binding key)和生产者发送消息时的路由键routingKey, 按照交换类型Exchange ...
- C#RabbitMQ基础学习笔记
RabbitMQ基础学习笔记(C#代码示例) 一.定义: MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发).MQ是一种应用程序对应用程序的通信方法. ...
- RabbitMQ基础教程之Spring&JavaConfig使用篇
RabbitMQ基础教程之Spring使用篇 相关博文,推荐查看: RabbitMq基础教程之安装与测试 RabbitMq基础教程之基本概念 RabbitMQ基础教程之基本使用篇 RabbitMQ基础 ...
- RabbitMQ基础教程之使用进阶篇
RabbitMQ基础教程之使用进阶篇 相关博文,推荐查看: RabbitMq基础教程之安装与测试 RabbitMq基础教程之基本概念 RabbitMQ基础教程之基本使用篇 I. 背景 前一篇基本使用篇 ...
随机推荐
- Hello QT(译)
简评:PySide2 是 QT 官方出品,值得期待 PySide2 第一个技术预览版快要发布了,在此给出一个简单的例子,来展示它将如何打开 Python世界的大门. 下面我们将使用 QWidgets ...
- (C/C++) 亂數應用
因為公司需要寫了一個亂數產生測試條件的小程式,再此紀錄下來 int _tmain(int argc, _TCHAR* argv[]) { fstream file; file.open("t ...
- NSScanner 扫描字符串
两个常用于扫描字符串的方法 //'指针'只移动一个位置,判断当前所指的字符是否是目标字符@"x", 若是则存入result中,返回YES,否则NO BOOL res = [scan ...
- MyEclipse 汉化后切换回英文(中英文切换)
没事玩玩MyEclipse,按网上的办法把它汉化了!搞了些教程看,教程用的都是英文,还是把MyEclipse也切换回原来的英文得了! 方法:1.复制MyEclipse的快捷方式:2.右键快捷方式-&g ...
- 网络基础 01_OSI网际互联
1 通信概述 网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的. 通信是人与人之间通过某种媒体进行的信息交流与传递. 网络通信是通过网络将各个孤立的设备进 ...
- annotation-config和component-scan
以前学到<context:annotation-config></context:annotation-config>和<context:component-scan b ...
- ORACLE INSERT ALL 用法
1INSERT ALL 1.1句法 multi_table_insert :: = conditional_insert_clause :: = 1.2multi_table_insert 在多表插入 ...
- python namedtuple命名元组
from collections import namedtuple Animal=namedtuple('Animal','name age type') perry=Animal(name='pe ...
- stm32CubeMx 实现单通道ADC DMA采集
今天要做的是ADC单通道DMA采集实验 MCU : STM32F429 开发工具:STM32CubeMx 版本号 5.0.0 实验目的:实现ADC1 13通道 DMA采集 一 :简介 首先,我们来看一 ...
- day2-模块初识之路径问题
sys需要调用my_test,但是不在同一目录 会出现如下错误 具体办法:1.将my_test.py放到文件夹下 附:sys.py 和my-test.py具体代码 enumerate 重点:浅复制(用 ...