RabbitMQ|异步

我们日常生活中肯定遇到“分身乏术”的情况,在出现这种情况时我们肯定只能按部就班一件一件事情来处理,这样就会浪费一些不必要的时间,如在书写作业的时候我们只有在写完一门课作业后才能去完成另外一门的作业。但在计算机中这个问题在一定程度上被很好的解决,这就是使用异步的思想,本文就来论述这个问题。

1 概念|异步

提到异步很自然就会想到同步。

1.1 同步与异步

二者都是一种通讯方式,关注的是消息通信机制 (synchronous communication/ asynchronous communication)。

(1)同步

使用某个东西时,调用方得等待这个调用返回结果才能继续执行。

(2)异步

调用方不会处于等待状态去等待结果,而是在调用发出后调用者可用继续执行后续操作,被调用者通过状体来通知调用者,或者通过回掉函数来处理这个调用。

1.2 比喻

  • 同步:咱们线下去商城买东西,看上一个东西,店家就去拿货,而在拿货这段时间(不长的时间)咱们只能在店里等着,不能离开。
  • 异步:咱们线上买东西,手机app下单后就可以做其他的事情(学习、游戏),等货到了咱们去签收就好了。

上面的过程,我们可以将买东西 看出是咱们的次业务,而其他事情是我们的主业务, 那么我们要提高效率肯定需要将将次业务从主业务分离(计算机中为解耦 )出来,这样就引出了生产者消费者设计模式

2 生产者消费者设计模式

寻找中间人(broker)搭桥,保证两个业务没有直接关联。这种解耦方式为:生产者消费者设计模式。如下图:



即:生产者生成消息,缓存到消息队列中,消费者读取消息队列中的消息并执行。这其中消息队列是关键。

咱们可以把消息队列看作是消息在传输的过程中保存消息的容器

3 RabbitMQ介绍

现在主流消息队列有:RabbitMQ、ActiveMQ、Kafka等等。

3.1 主流消息队列比较:

(1)RabbitMQ和ActiveMQ比较

  • 系统吞吐量:RabbitMQ好于ActiveMQ
  • 持久化消息:RabbitMQ和ActiveMQ都支持
  • 高并发和可靠性:RabbitMQ好于ActiveMQ

(2)RabbitMQ和Kafka:

  • 系统吞吐量:RabbitMQ弱于Kafka
  • 可靠性和稳定性:RabbitMQ好于Kafka比较
  • 设计初衷:Kafka是处理日志的,是日志系统,所以并没有具备一个成熟MQ应该具备的特性。

3.2 RabbitMQ安装(mac电脑下)

本次安装笔者走了很多弯路,回过头来集中的问题出在用终端命令始终无法从github上下载RabbitMQ的环境压缩包,且网上教程也多是使用终端来下载,为此耽误了很长的时间,下面介绍下我的方法。

(1)rabbitmq-server-generic-unix-3.8.3.tar.xz下载

网址:https://www.rabbitmq.com/install-generic-unix.html#downloads

选择下图的位置进行下载:

(2)移动手动下载好的文件到文件目录

  • 复制下载好的文件
  • 访达-前往-前往文件夹:输入~/Library/Caches/Homebrew进入这个目录
  • 打开后将看到“downloads”目录,里面就是安装依赖时下载的缓存文件,downloads文件夹同层级外面是downloads里面的文件替身
  • 此时将之前下载好的文件粘贴到dowanloads目录下。

  • 会发现一个文件后缀为:.incomplete,这是因为之前没有下完整所以显示临时文件后缀,复制这个文件夹的名称,然后选择刚粘贴过来的文件,重命名并粘贴,同时去掉后缀.incomplete。
  • 当你找不到.incomplete文件时,是因brew还没开始生成下载的临时文件,那你就再次运行一下就可以了。

(3)终端输入brew install rabbitmq即可

3.3 RabbitMQ的配置远程访问(mac电脑下)

进入/usr/local/etc/rabbitmq

找到文件rabbitmq-env.conf,并打开进行如下图修改,将原有的127.0.0.1删除:

3.4 brew管理RabbitMQ(mac系统下)

笔者使用brew进行管理,所以需要您先对homebrew进行安装,brew管理具体如下:

# 启动
$ brew services start rabbitmq # 重启
$ brew services restart rabbitmq # 停止
$ brew services stop rabbitmq

RabbitMQ|异步的更多相关文章

  1. 消息中间件系列五:RabbitMQ的使用场景(异步处理、应用解耦)

    一.异步处理 场景: 用户注册,写入数据库成功以后,发送邮件和短信. 准备工作: 1)安装RabbitMQ,参考前面的文章 2)新建一个名为RabbitMQAsyncProc的maven web工程, ...

  2. 抽一根烟的时间学会.NET Core 操作RabbitMQ

    什么是RabbitMQ? RabbitMQ是由erlang语言开发的一个基于AMQP(Advanced Message Queuing Protocol)协议的企业级消息队列中间件.可实现队列,订阅/ ...

  3. 基于消息队列(RabbitMQ)实现延迟任务

    一.序言 延迟任务应用广泛,延迟任务典型应用场景有订单超时自动取消:支付回调重试.其中订单超时取消具有幂等性属性,无需考虑重复消费问题:支付回调重试需要考虑重复消费问题. 延迟任务具有如下特点:在未来 ...

  4. Java秒杀系统实战系列~商品秒杀代码实战

    摘要: 本篇博文是“Java秒杀系统实战系列文章”的第六篇,本篇博文我们将进入整个秒杀系统核心功能模块的代码开发,即“商品秒杀”功能模块的代码实战. 内容: “商品秒杀”功能模块是建立在“商品详情”功 ...

  5. 新版本SpringCloud sleuth整合zipkin

    SpringCloud Sleuth 简介 Spring Cloud Sleuth为Spring Cloud实现了分布式跟踪解决方案. Spring Cloud Sleuth借鉴了Dapper的术语. ...

  6. SpringCloud之Turbine

    [前面的话]书接上文,本文的某些知识依赖我的上一篇SpringCLoud的文章:SpringCloud之Feign,如果没有看过可以先移步去看一下.前文提到了hystrix的应用,以及hystrix的 ...

  7. 一个轻量级的.Net Core微服务快速开发的轮子

    前言     Adnc是一个轻量级的.Net Core微服务快速开发框架,同时也可以应用于单体架构系统的开发.框架基于JWT认证授权.集成了一系列微服务配套组件,代码简洁.易上手.学习成本低.开箱即用 ...

  8. software engineer's resume(帮助你写程序员简历)

    关键词 参考 简历模板 参考 下面开始是正文(关键词原文) 介绍 本项目由海外兔 (https://osjobs.net) 维护,海外兔团队由一线互联网面试官组成,提供海内外公司一对一入职套餐以及算法 ...

  9. 《基于.NET Core构建微服务》系列文章(更新至第6篇,最新第7篇,已发布主页候选区)

    原文:Building Microservices On .NET Core – Part 1 The Plan 时间:2019年1月14日 作者:Wojciech Suwała, Head Arch ...

  10. 「Java分享客栈」随时用随时翻:微服务链路追踪之zipkin搭建

    前言 微服务治理方案中,链路追踪是必修课,SpringCloud的组件其实使用很简单,生产环境中真正令人头疼的往往是软件维护,接口在微服务间的调用究竟哪个环节出现了问题,哪个环节耗时较长,这都是项目上 ...

随机推荐

  1. 文件密码忘记了怎么办,教你如何使用Python破解密码

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:轻松学编程小梁 PS:如有需要Python学习资料的小伙伴可以加点击下 ...

  2. 提高万恶的KPI,切忌要避开这六个低效的编程习惯

    作者:程序员小跃 Slogan:当你的才华还无法撑起你的野心时,那应该静下心来好好学习 上次的翻译,引起了很大的反响,大家都想知道自己和高级工程师的差距,看了我的文章,是不是都在默默地做着比较呢?如果 ...

  3. 【08NOIP提高组】笨小猴

    笨 小 猴 来自08年NOIP提高组的第一题 1.题目描述 [题目描述] 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头痛.经实验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体 ...

  4. 控制反转IOC,依赖注入DI理解

    IOC:控制反转,常规下,高层依赖低层,项目是不稳定的.我们则应该把高层对低层的依赖去掉,换成对抽象的依赖,细节交给第三方来决定,这就是控制反转,反转的目的是为了降低依赖,增强扩展性. DI:依赖注入 ...

  5. 最全的 API 接口集合

    对于程序员来说,为自己的程序选择一些合适的API并不是那么简单,有时候还会把你搞得够呛,今天猿妹要和大家分享一个开源项目,这个项目汇集了各种开发的api,涵盖了音乐.新闻.书籍.日历等,无论你是从事W ...

  6. 6、Time & Window

    一.Time & Watermark 1.1.DataStream支持的三种time DataStream有大量基于time的operator Flink支持三种time: EventTime ...

  7. 消息中间件之zookper安装部署

    消息中间件之zookper安装部署jdk可以在官网或者网上下载[root@q tools]# chmod 755 jdk-8u40-linux-x64.rpm [root@q tools]# rpm ...

  8. Hard filters (by GATK)

    Filter Symbol T. Definition QualByDepth QD 2.0 The variant confidence (from the QUAL field) divided ...

  9. Spark 源码系列(六)Shuffle 的过程解析

    Spark 大会上,所有的演讲嘉宾都认为 shuffle 是最影响性能的地方,但是又无可奈何.之前去百度面试 hadoop 的时候,也被问到了这个问题,直接回答了不知道. 这篇文章主要是沿着下面几个问 ...

  10. 《例说51单片机(C语言版)(第3版)》——1-3 认识MCS-51的存储器结构

    本节书摘来异步社区<例说51单片机(C语言版)(第3版)>一书中的第1章,第1.3节,作者:张义和,王敏男,许宏昌,余春长,更多章节内容可以访问云栖社区"异步社区"公众 ...