.NET 云原生架构师训练营(模块二 基础巩固 消息队列 介绍与基础)--学习笔记

简介: 主要使用场景队列的三种形式消息队列的优点

2.6.1 消息队列 -- 介绍

  • 主要使用场景
  • 队列的三种形式
  • 消息队列的优点

主要使用场景

  • 典型的异步处理
  • 流量削锋
  • 应用解耦

队列的三种形式

  • 点对点
  • 工作队列
  • 发布与订阅

消息队列的优点

1、屏蔽异构平台的细节:发送方、接收方系统之间不需要了解双方,只需认识消息。

2、异步:消息堆积能力;发送方接收方不需同时在线,发送方接收方不需同时扩容(削峰)。

3、解耦:防止引入过多的API给系统的稳定性带来风险;调用方使用不当会给被调用方系统造成压力,被调用方处理不当会降低调用方系统的响应能力。

4、复用:一次发送多次消费。

5、可靠:一次保证消息的传递。如果发送消息时接收者不可用,消息队列会保留消息,直到成功地传递它。

6、提供路由:发送者无需与接收者建立连接,双方通过消息队列保证消息能够从发送者路由到接收者,甚至对于本来网络不易互通的两个服务,也可以提供消息路由。

2.6.2 RabbitMQ -- 基础

  • 主要场景
  • AMQP

主要场景

软件系统中使用消息队列的主要场景:

秒杀活动、抢购、消息通讯、邮件发送、电话短信等都是典型的采用消息中间件的业务场景。

001.jpg

AMQP

AMQP 0-9-1 Model Explained:https://www.rabbitmq.com/tutorials/amqp-concepts.html

002.jpg

  • 交换机
  • 队列
  • 绑定
  • 信道(Channel)
  • 消息

交换机

交换机的四种类型

  • Direct 直连
  • Fanout 发布订阅-广播
  • Topic 发布订阅-路由
  • Headers

Direct 直连

003.jpg

Fanout 发布订阅-广播

004.jpg

Topic 发布订阅-路由

Topics:https://www.rabbitmq.com/tutorials/tutorial-five-python.html

005.jpg

006.jpg

Headers

特性中可以做路由的匹配

队列

它们存储由应用程序使用的消息。

队列与交换共享一些属性,但也具有一些其他属性:

  • 名称
  • 持久(队列将在代理重新启动后幸存)
  • 独占(仅由一个连接使用,并且该连接关闭时队列将被删除)
  • 自动删除(至少有一个使用方的队列在最后一个使用方退订时被删除)
  • 参数(可选;由插件和特定于代理的功能使用,例如消息TTL,队列长度限制等)

必须先声明队列,然后才能使用队列。声明队列将导致它创建(如果尚不存在)。如果队列已经存在并且其属性与声明中的相同,则该声明无效。

如果有至少一个消费者订阅了队列,当消息到达队列时,消息会发送给订阅者。如果一个订阅者都没有,消息会在队列中等待,直到出现第一个订阅者

绑定

绑定是交换使用(其中包括)将消息路由到队列的规则。

为了指示交换机E将消息路由到队列Q,必须将Q绑定到E。绑定可能具有某些交换机类型使用的可选 路由键属性。

路由密钥的目的是选择发布到交换机的某些消息以路由到绑定队列。换句话说,路由键就像一个过滤器。

信道(Channel)

AMQP 引进的一个特殊的概念,建立在 tcp 之上的一个引用层协议

一个客户端与一个服务器建立一个连接,可以用于多个消费者

一个 tcp 连接里面可以产生多个信道

007.jpg

消息

  • 消息确认
  • 拒绝消息
  • 预读消息 prefetching
  • 消息格式

消息确认

什么时候从队列中移除

  • 默认模式(不需要 ack,发送到消费者之后即从队列中移除)
  • ack 模式(需要消息者回复)

消息格式

  • Content type
  • Content encoding
  • Routing key
  • Delivery mode (persistent or not)
  • Message priority
  • Message publishing timestamp
  • Expiration period
  • Publisher application id
目录
相关文章
|
6月前
|
存储 开发框架 前端开发
前端框架EXT.NET Dotnet 3.5开发的实验室信息管理系统(LIMS)成品源码 B/S架构
发展历史:实验室信息管理系统(LIMS),就是指通过计算机网络技术对实验的各种信息进行管理的计算机软、硬件系统。也就是将计算机网络技术与现代的管理思想有机结合,利用数据处理技术、海量数据存储技术、宽带传输网络技术、自动化仪器分析技术,来对实验室的信息管理和质量控制等进行全方位管理的计算机软、硬件系统,以满足实验室管理上的各种目标(计划、控制、执行)。
66 1
|
17天前
|
存储 消息中间件 前端开发
.NET常见的几种项目架构模式,你知道几种?
.NET常见的几种项目架构模式,你知道几种?
|
24天前
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始
|
2月前
|
编解码 Linux 开发工具
Linux平台x86_64|aarch64架构RTMP推送|轻量级RTSP服务模块集成说明
支持x64_64架构、aarch64架构(需要glibc-2.21及以上版本的Linux系统, 需要libX11.so.6, 需要GLib–2.0, 需安装 libstdc++.so.6.0.21、GLIBCXX_3.4.21、 CXXABI_1.3.9)。
|
3月前
|
设计模式 存储 前端开发
揭秘.NET架构设计模式:如何构建坚不可摧的系统?掌握这些,让你的项目无懈可击!
【8月更文挑战第28天】在软件开发中,设计模式是解决常见问题的经典方案,助力构建可维护、可扩展的系统。本文探讨了.NET中三种关键架构设计模式:MVC、依赖注入与仓储模式,并提供了示例代码。MVC通过模型、视图和控制器分离关注点;依赖注入则通过外部管理组件依赖提升复用性和可测性;仓储模式则统一数据访问接口,分离数据逻辑与业务逻辑。掌握这些模式有助于开发者优化系统架构,提升软件质量。
51 5
|
3月前
|
XML 开发框架 .NET
.NET框架:软件开发领域的瑞士军刀,如何让初学者变身代码艺术家——从基础架构到独特优势,一篇不可错过的深度解读。
【8月更文挑战第28天】.NET框架是由微软推出的统一开发平台,支持多种编程语言,简化应用程序的开发与部署。其核心组件包括公共语言运行库(CLR)和类库(FCL)。CLR负责内存管理、线程管理和异常处理等任务,确保代码稳定运行;FCL则提供了丰富的类和接口,涵盖网络、数据访问、安全性等多个领域,提高开发效率。此外,.NET框架还支持跨语言互操作,允许开发者使用C#、VB.NET等语言编写代码并无缝集成。这一框架凭借其强大的功能和广泛的社区支持,已成为软件开发领域的重要工具,适合初学者深入学习以奠定职业生涯基础。
98 1
|
5月前
|
前端开发 JavaScript 架构师
Webpack模块联邦:微前端架构的新选择
Webpack的模块联邦是Webpack 5引入的革命性特性,革新了微前端架构。它允许独立的Web应用在运行时动态共享代码,无需传统打包过程。基本概念包括容器应用(负责加载协调)和远程应用(独立应用,可暴露模块)。实现步骤涉及容器和远程应用的`ModuleFederationPlugin`配置,以及在应用间导入和使用远程模块。模块联邦的优势在于独立开发、按需加载、版本管理和易于维护。通过实战案例展示了如何构建微前端应用,包括创建容器和远程应用,以及消费远程组件。高级用法涉及动态加载、路由集成、状态管理和错误处理。
89 3
|
5月前
|
监控 Java 关系型数据库
java版MES系统源码,后端采用 Spring Boot 多模块架构
MES系统采用Vue3的vue-element-plus-admin为后台,Spring Boot多模块架构,支持MySQL、Oracle等数据库,具备SaaS多租户功能。核心功能包括车间计划排程、工艺流程配置、生产质量管理、进度追踪、库存和排班管理等,全面覆盖生产运营关键环节。
java版MES系统源码,后端采用 Spring Boot 多模块架构
|
4月前
|
监控
交易平台---架构设计第一步拆分模块,拆分为7个模块
交易平台---架构设计第一步拆分模块,拆分为7个模块
|
6月前
|
架构师 网络协议 算法
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)

热门文章

最新文章