写点什么

叮咚!你有一份 RabbitMQ 优雅使用指南待查看

  • 2019-10-21
  • 本文字数:1290 字

    阅读完需:约 4 分钟

叮咚!你有一份RabbitMQ 优雅使用指南待查看

消息中间件在互联网应用中十分广泛,标准的用法是生产者(Producer)生产消息发送到队列,消费者(consumer)从队列中取出并处理消息,生产者无需关心谁来消费,消费者也不用关心消息的来源,从而达到解耦的目的。


RabbitMQ

RabbitMQ 是当前最流行的消息引擎之一,是实现了 AMQP(高级消息队列协议)的消息中间件中的一种,服务器端用 Erlang 语言编写,最初起源于金融系统,在可靠性、灵活性、功能的多样性等方面均有着出色的表现。


RabbitMQ 在消息中间件的基础用法上,增加了交换机(Exchange),RabbitMQ 通过 Exchange 将消息路由至消息队列。队列通过路由键值与 Exchange 进行绑定,当 Producer 发送消息时,会指定 Exchange 与路由键值,Exchange 根据路由键值进行匹配,匹配上则将消息路由至一个或多个绑定的队列中,未匹配上的消息将会被丢弃。


RabbitMQ 的组成部分如下图所示:



MQ 用于应用解耦、流量削峰、异步处理等应用场景,为用户提供消息生产消费、发布订阅、消息持久化、消息确认机制、事物消息等功能。那么哪些情况下适合选用 RabbitMQ 呢?RabbitMQ 的优势在于消息功能丰富及多协议支持,如支持 Push/Pull 的消费模式、支持优先级队列、支持延迟队列等;在消息多协议上,除了 AMQP 外,还支持 MQTT、STOMP 等协议。所以,对于消息处理要求功能灵活的应用来说,RabbitMQ 是非常适合的选择。

为什么选择华为云 RabbitMQ

近日,华为云分布式消息服务 DMS 在已经支持 Kafka 的基础上,正式发布了 RabbitMQ 消息引擎,基于最新的 RabbitMQ 3.7.X 版本,提供全托管式的云上 RabbitMQ 服务。



RabbitMQ 消息引擎专注于应用解耦、流量削峰、异步处理等应用场景,为用户提供消息生产消费、发布订阅、消息持久化、消息确认机制、事物消息等功能。在单体应用中,业务流程耦合会导致系统对用户的请求响应慢,可以将系统拆分为多个子系统,用 RabbitMQ 作为子系统间的异步通信通道进行系统解耦,从而有效提升整个系统的响应速度。


常见的秒杀或团抢活动,经常会发生因为流量突然暴增,导致应用不能正常访问。为了解决这样的问题,就需要在应用的前端加入消息队列。服务器在接收到用户的请求之后,先把请求放到消息队列中,秒杀的业务模块根据消息队列的请求信息,做后续的处理。如果遇到消息队列长度超出最大的限制,可以直接抛弃用户请求或者跳转到友好的提示页面,从而有效地控制活动的参与人数,提升用户体验,并且大幅缓解瞬时流量洪峰对应用的压力。


华为云 RabbitMQ 具有如下特点,让应用上云更简单,运行更高效:


  • 丰富消息类型

  • 广播消息、延时消息、消息重投等消息特性,使应用可以灵活控制异步通信的时间。

  • 高并发

  • 单队列最高性能至 10 万 TPS,并且可以通过队列数平滑扩展能力,有效提升整个系统的并发能力。

  • 低时延

  • 消息投递时延可至毫秒级,保证消息的及时性。


华为云 RabbitMQ 消息引擎,完全兼容开源,提供独占资源,保证队列高性能,为企业和互联网应用提供省心、省力的消息中间件,减少开发、运维的成本,避免了企业自建中间件时所面临的安全、运维等问题。


本文转载自公众号中间件小哥(ID:huawei_kevin)。


原文链接:


https://mp.weixin.qq.com/s/MmEVlWM9hoxOuvYJiRAKJQ


2019-10-21 11:062020

评论

发布
暂无评论
发现更多内容

JAVA 开发常用工具汇总

编程江湖

java编程

轻松驾驭EB级千万QPS集群,TDSQL新敏态引擎元数据管控与集群调度的演进之路

腾讯云数据库

tdsql 国产数据库

发布你的开源软件到 Ubuntu PPA

hedzr

#Ubuntu Debian packaging ppa

喜提双奖 | 旺链科技彰显综合硬实力!

旺链科技

区块链 产业区块链 供应链

盘点2021 | 技术十年-记录十年技术经历

高性能架构探索

技术人 工作经历 经历分享 盘点2021

又拿奖了!腾讯云原生数据库TDSQL-C斩获2021PostgreSQL中国最佳数据库产品奖

腾讯云数据库

tdsql 国产数据库

DM 分库分表 DDL “悲观协调” 模式介绍丨TiDB 工具分享

PingCAP

重装上阵——Graviton2提升Aurora性价比

亚马逊云科技 (Amazon Web Services)

Data

(转)前端开发之MySQL分区表中的性能BUG

@零度

MySQL 前端

​使用 Amazon Neptune 通过数据仓库构建知识图谱,借此补充商务智能体系

亚马逊云科技 (Amazon Web Services)

Data

盘点 2021|不忘初心,扬风起航

小鲍侃java

盘点2021

孩子,你为什么要上学?

Tiger

28天写作

webpack打包过程如何调试?

汪子熙

前端 前端开发 webpack 28天写作 12月日更

一个简单的单体服务流量标记demo

zuozewei

Java 性能测试 全链路压测 12月日更

前沿干货!深度揭秘TDSQL新敏态引擎Online DDL技术原理

腾讯云数据库

tdsql 国产数据库

Go编译原理系列2(词法分析&语法分析基础)

书旅

Go 后端 编译原理

MySQL 中 blob 和 text 数据类型详解

Simon

MySQL

解析Redis操作五大数据类型常用命令

华为云开发者联盟

数据库 redis string 数据类型 getset

XEngine:深度学习模型推理优化

华为云开发者联盟

深度学习 模型推理 显存优化 计算优化 XEngine

一文详解TDSQL PG版Oracle兼容性实践

腾讯云数据库

tdsql 国产数据库

java开发之SSM开发框架

@零度

Java ssm

蓝格赛(中国)用TDengine落地聚合查询场景,效果如何?

TDengine

数据库 tdengine 后端

JDK ThreadPoolExecutor核心原理与实践

vivo互联网技术

jdk ThreadPoolExecutor Java 开发

云图说|初识数据库和应用迁移UGO

华为云开发者联盟

数据库 华为云 UGO 异构迁移

一文带你梳理Clang编译步骤及命令

华为云开发者联盟

编译 LLVM Clang编译 Clang 编译命令

内核干货不容错过,龙蜥内核的Load Averages剖析直播回顾上线了

OpenAnolis小助手

Linux Kenel 内核 龙蜥社区

鲲鹏HCIA认证之初识鲲鹏

桥哥技术之路

鲲鹏

跟着动画学Go数据结构之堆排序

宇宙之一粟

golang 数据结构 排序算法 Go 语言 12月日更

利用极狐GitLab DevSecOps 功能检测 log4j 的多种方式

极狐GitLab

「山东城商行联盟」数据库准实时数据采集系统上线,DataPipeline助力城市商业银行加快数字化转型

DataPipeline数见科技

数据库 中间件 数据同步 数据融合 数据管理

如何将Amazon RDS与Amazon Aurora数据库迁移至Graviton2?

亚马逊云科技 (Amazon Web Services)

Data

叮咚!你有一份RabbitMQ 优雅使用指南待查看_文化 & 方法_中间件小哥_InfoQ精选文章