首页
学习
活动
专区
圈层
工具
发布

【MQ】什么是 MQ

什么是 MQ MQ 全称 Message Queue,中文译为消息队列,其实质是一个队列,队列是一种先进先出的数据结构,所以我们可以简单理解 MQ 是一种存储消息的容器,MQ 一般包括三类参与者: 生产者...:是消息的产生者,生产者生产出消息后随机写入消息队列中 消费者:是消息的消费方,负责从队列中取出消息进行其他处理 队列:MQ本身,是消息的容器 为什么使用 MQ 一般来说, MQ 的使用场景有以下几个方面...最后的解决办法就是 MQ, 我们开启一个邮件消费者,持续读取并消费MQ中邮件队列里的消息,然后在评论数据落库之后就把要发的邮件扔到 MQ 中,然后直接对客户端响应成功: func Talk(ctx *gin.Context...RabbitMQ RabbitMQ 是 使用 Erlang 语言对 AMQP 协议的一种实现,其客户端支持几乎所有的主流编程语言。...消息中间件部署及比较:rabbitMQ、activeMQ、zeroMQ、rocketMQ、Kafka、redis HelloWorld 下载 RabbitMQ: RabbitMQ 使用 erlang 语言编写

2.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MQ

    那如果C系统现在不需要了呢?现在A系统又要发送第二种数据了呢?A系统负责人濒临崩溃中。。。再来点更加崩溃的事儿,A系统要时时刻刻考虑BCDE四个系统如果挂了咋办?我要不要重发?我要不要把消息存起来?...头大头大,问题一大堆,痛苦不已 一致性问题:A系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是BCD三个系统那里,BD两个系统写库成功了,结果C系统写库失败了,咋整?...而且现在社区以及国内应用都越来越少,官方社区现在对ActiveMQ 5.x维护越来越少,几个月才发布一个版本 而且确实主要是基于解耦和异步来用的,较少在大规模吞吐的场景中使用 erlang语言开发...其实主要是erlang语言本身带来的问题。很难读源码,很难定制和掌控。...最早大家都用ActiveMQ,但是现在确实大家用的不多了,没经过大规模吞吐量场景的验证,社区也不是很活跃,所以大家还是算了吧,我个人不推荐用这个了; 后来大家开始用RabbitMQ,但是确实erlang语言阻止了大量的

    3.2K71

    MQ概述

    一致性问题 A 系统处理完业务,通过 MQ 给B、C、D三个系统发消息,如果 B 系统、C 系统处理成功,D 系统处理失败。如何保证消息数据处理的一致性?...RabbitMQ ActiveMQ RocketMQ Kafka 公司/ 社区 Rabbit Apache 阿里 Apache 开发语言 Erlang Java Java Scala&Java 协议支持...等,社区产出多种API,几乎支持所有语言 Java,C,C++,Python,PHP,Perl,.net等 Java,C++(不成熟) 官方支持Java,社区产出多种API,如PHP,Python等 单机吞吐量...基于此协议的客户端与消息中间件可传递消息,遵循此协议,不收客户端和中间件产品和开发语言限制。2006年,AMQP 规范发布。类比HTTP。...基于此协议的客户端与消息中间件可传递消息,遵 循此协议,不收客户端和中间件产品和开发语言限制。2006年,AMQP 规范发布。类比HTTP。

    2.6K20

    MQ简介

    消费者可以到指定队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息。 2.MQ的作用以及好处 (1)解耦 在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。...比如我们的货款抵扣业务场景,用户生成订单发送MQ后立即返回,结算系统去消费该MQ进行用户账户金额的扣款。这样订单系统只需要关注把订单创建成功,最大可能的提高订单量,并且生成订单后立即返回用户。...MQ把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。...使用MQ能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。...那么如果通过MQ的方式,将订单存储到MQ队列中,消费端通过拉取的方式,并且拉去速度有消费端来控制,则就可以控制流量趋于平稳。这样对于结算系统来讲,就达到了削峰填谷的目的。

    1.6K20

    MQ详解

    什么是MQ?   【1】MQ:MessageQueue,消息队列。 队列,是一种FIFO 先进先出的数据结构。消息由生产者发送到MQ进行排队,然后按原来的顺序交由消息的消费者进行处理。...QQ和微信就是典型的MQ。 为什么要用MQ(MQ的优点)?   MQ的作用主要有以下三个方面:   【1】异步     例子:快递员发快递,直接到客户家效率会很低。...【2】解耦     例子:《Thinking in JAVA》很经典,但是都是英文,我们看不懂,所以需要编辑社,将文章翻译成其他语言,这样就可以完成英语与其他语言的交流。     ...【3】消息一致性问题     A系统处理完业务,通过MQ发送消息给B、C系统进行后续的业务处理。如果B系统处理成功,C系统处理失败怎么办?这就需要考虑如何保证消息数据处理的一致性。...缺点在于吞吐量很低,消息积累会影响消费的性能,而且erlang的语言使用的比较少,定制比较难。适用于公司内部系统的请求扭转的流程。

    3.2K20

    MQ系列(0)——什么是MQ

    mq简介 mq 就是消息队列(Message Queue)。想必大家对队列的数据结构已经很熟悉了,消息队列可以简单理解为:把要传输的数据放在队列中,mq 就是存放和发送消息的这么一个队列中间件。...使用mq,就能完美支持异步:a将数据发送到mq,然后自己该干嘛干嘛,b监听mq的消息,来了消息就消费它。这样就做到程序或者应用间的异步。...mq削峰填谷的原理也很简单,mq在应用程序中相当于一个 “蓄水池” 的作用——当 “水流量(请求)” 过大的时候,“蓄水池(mq)” 将 "水" 先存起来。...实际的过程是——请求数据先发到 mq ,应用程序监听mq 并消费消息。当请求量大于消费量的时候,请求积压在mq中存储;当消费量大于请求量的时候,请求就会慢慢被处理完。...mq的解耦 mq解耦性是显而易见的,应用程序直接不直接互相耦合,甚至可以不用知道对方的存在。它想要发出什么样的请求,或者拿什么数据,都是去找mq。mq就像个搬运工一样在这些应用之间搬运数据。

    1.8K20

    【C语言】初识C语言(常见的C语言概念)

    一.C语言是什么?...语言大致可以分为自然语言和计算机语言,自然语言就是人与人日常交流的语言,如汉语、英语、日语等等,计算机语言又可以分为机器语言、汇编语言、高级语言,C语言就是一个高级语言 机器语言:就是由二进制01组合起来的计算机可以直接识别的程序语言是一种面向机器的语言...,比起低级语言易懂易学,可移植性好,编程效率高,但是执行效率没有低级语言高,需要经过编译或解释,C语言就是采用编译的一种高级语言 二.为什么选择C语言 C语言常年霸榜各类高级语言前三,属于基础必学的语言...,其功能强大,而且许多语言都很相似,如果学好C语言,对学习其他语言也有很大帮助 三.编译器的选择 C语言是一门编译型的语言,需要依赖编译器将计算机语言转换成机器能够执行的机器指令 常见的编译器有:msvc...+文件,这里没有C文件选项,因为C++和C基本不分家,将后缀名.cpp改为.c就可以了,创建好后就可以开始写我们的第一个C语言程序了 注意:其中.c的文件叫源文件,.h的文件叫头文件(head),后面会慢慢讲到

    7.1K11

    【C++】C 语言与 C++ 语言的关系 ( C 语言发展 | C 语言缺陷 | C 语言 + 面向对象 + 高级语言特性 | C++ 语言增加内容 | C 语言与 C++ 语言应用场景 )

    一、C 语言发展 C 语言 被开发之前 并 没有经过 缜密 的 设计 , 而是在 使用过程中 逐渐完善的 ; C 语言发展经过如下阶段 : 初始阶段 : 1972年至1978年 , C语言 初步形成 ,...C99 , C11 , C17 等标准 , 以满足新的编程需求 ; 二、C 语言缺陷 C 语言有如下缺陷 : C 语言 没有经历过 缜密的 设计过程 , 都是根据需求逐渐完善的 , 出现了很多缺陷和漏洞...2、C 语言与 C++ 语言关系 C 语言 与 C++ 语言 并 不是 竞争关系 ; C++ 语言 是 以 C 语言为基础 的 加强版本编程语言 , 可以看作是更好的 C 语言 , 在 C++ 语言...中 , 可以使用 C 语言语法 , 对 C 语言完全兼容 ; C++ 语言 包含 C 语言 , 在 C++ 代码中可以使用 C 语言的语法 , 但是在 C 语言中不能使用 C++ 的语法 ; 3、C++...语言应用场景 C 语言 和 C++ 语言的应用场景 : C语言 应用场景 : 系统软件、操作系统、编译器等 底层系统级应用 ; C++ 语言 应用场景 : 大型应用程序、游戏 等更 高级的应用 ; 在不同的

    7.5K20

    Java Mq和Native Mq之间的关系

    相关名词 mq:消息队列MessageQuene的缩写 流程 java的mq初始化的时候会先初始化native的mq再native的mq中又创建了native层的looper。...同时native层把自己mq传入到了java中mq的mptr对象 java消息队列中调用nativepollonce(javaMq中的next方法)最终会调用到mtpr的nativepollonce(mtpr...是native层的消息队列对象)该方法用于等待一个java层的消息来临 native的mq的nativepollonce会调用looper的pollonce方法(这个looper是native层的) pollonce...java的mq恢复处理。 注意点 根据上面的分析流程我们可以知道,即使CPU充足堆栈情况正常也不能一定保证java发出的消息可以按计划得到执行。...mq为什么采用epoll机制? select和epoll机制区别: 1.关于监听fd的复制次数 select每次调用都需要将监听的事件复制到内核中。

    1.6K30

    【C语言】C语言入门知识

    一、主函数 C语言的主函数是main()函数,有且仅有一个。 例如: int main() { return 0; } 是一个标准的C语言主函数。...二、输入、输出函数 C语言中的输出函数为printf,输入函数为scanf,使用前需要引用头文件#include 。...(2)C语言中的常见单位(从小到大): bit(比特)<byte(字节)<KB<MB<GB<TB<PB<..... 1byte = 8bit 1KB = 1024byte 1MB = 1024KB...四、变量和常量 4.1 变量的使用 C语言中常量是不变的值,变量是可变的值 创建变量的使用: int age = 10; char ch = 'w'; float weight = 45.5f...4.3 常量 C语言中的常量分为字面常量,const修饰的常变量,#define 定义的标识符常量,枚举常量。 (1)字面常量:100,'w',3.14等。

    5.1K10

    MQ简单介绍

    在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。  ...发送消息响应时间变长,使用短轮询方式,实时性取决于轮询间隔时间,消费失败不支持重试;支持消息顺序,但是一台代理宕机后,就会产生消息乱序,社区更新较慢; 3.RocketMQ 出自阿里巴巴的开源产品,用Java语言实现...MQ 缺点:支持的客户端语言不多,目前是java及c++,其中c++不成熟;社区活跃度一般,没有在MQ 核心中去实现JMS等接口,有些系统要迁移需要修改大量代码 4.RabbitMQ 2007年发布,是一个在...优点:由于erlang语言的高并发特性,性能较好;吞吐量到万级,MQ功能比较完备,健壮、稳定、易用、跨平台、支持多种语言 如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript...3.RabbitMQ 结合erlang语言本身的并发优势,性能好时效性微秒级,社区活跃度也比较高,管理界面用起来十分方便,如果你的数据量没有那么大,中小型公司优先选择功能比较完备的RabbitMQ。

    1.1K30
    领券