MQ的作用很多,典型作用:

1、削峰填谷:如果短时间内要处理的业务量大于数据库的服务能力,则可能会卡死数据库;使用MQ可以慢慢处理。

2、异步化:如果处理的工作非常耗时,则RPC的请求一直halt,对系统性能是个很大影响,发到MQ上,直接继续处理其他请求,则是一个更好的选择。

3、解耦:系统直接不像是RPC那些直接依赖了,不管有多少系统,都跟MQ打交道即可。

4、负载均衡:如果一台机器处理消息不够及时,可以多上几台机器做消息消费。

另外,感觉题主对ActiveMQ持久化到MySQL有一些误解。

1、如果指的是ActiveMQ配置文件里制定用jdbcPersistenceAdapter,这样是当消息是持久化的时候,消息的openwire序列化成的二进制数据,存入MySQL的ActiveMQ_MSGS表中的一个blob字段了。这个消息,你可以看做是send的消息的副本的二进制序列化数据。

2、如果指的是消息被消费以后,作为数据再应用程序的代码里被写入到MySQL,则参见上面的作用。

对于第一种理解,你可以看做是Quartz和Spring Batch的区别。

直接存数据到MySQL,这样对于如果一次没有发成功怎么办,处理数据失败了怎么办,超时了怎么办,要不要重新发送,不同类型的数据怎么不同对待,怎么保证不同应用去到的数据是不同的,等等,如果你在数据库的基础上实现了这些策略,实际上你就实现了一个基于数据库的消息队列。

实际上,在MQ出现之前,大家使用文件系统、socket、内存、数据库等多种方式来在系统之间共享数据。后来RPC和MQ出现了,现代化的分布式技术的两块基石就此建立起来。后端技术世界就有了如今金碧辉煌的大厦。

MQ、RPC从理论上讲,都是属于EIP的范畴,这个回答里的所有观点,在《Enterprise Integration Patterns》中都有讨论。

python消息队列框架持久化_消息队列如果持久化到数据库的话,相对于直接操作数据库有啥优势?...相关推荐

  1. 微信开发中消息回复的代码_消息中的消息

    微信开发中消息回复的代码 Ste·ga·no·graph·y / stegəˈnägrəfi / (noun): the practice of concealing messages or info ...

  2. mysql消息订阅与发布_消息发布与订阅

    代码示例 消息发布者 (即publish client) package message.kvstore.aliyun.com; import redis.clients.jedis.Jedis; p ...

  3. python高性能web框架排行榜_目前最受欢迎的12个Python web框架,你用过几个?

    1.Django Django是一个开源的Web应用框架,由Python写成,支持许多数据库引擎,可以让Web开发变得迅速和可扩展,并会不断的版本更新以匹配Python最新版本,如果是新手程序员,可以 ...

  4. python电影爬虫系统毕设_从零开始搭建完整的电影全栈系统(一)——数据库设计及爬虫编写...

    前言:关于标题似乎有些浮夸,所谓的全栈系统主要包括数据的爬取,web网站展示,移动设备App,主要记录学习过程中知识点,以备忘. **技术栈: 1,Scrapy爬虫框架:记录爬虫框架的工作流程,简单爬 ...

  5. python多线程读取数据库数据_Python基于多线程操作数据库相关知识点详解

    Python基于多线程操作数据库相关问题分析 本文实例分析了Python多线程操作数据库相关问题.分享给大家供大家参考,具体如下: python多线程并发操作数据库,会存在链接数据库超时.数据库连接丢 ...

  6. rocketmq python 某个队列不消费_消息队列 RocketMQ 版消息轨迹没有显示消费信息,为什么?...

    关于 消息队列 RocketMQ 版消息轨迹没有显示消费信息,为什么?的搜索结果 回答 2021一月拼团已有400余人拼团成功最低一折 点击进入:一月新人专场 服务器配置时间价格1核2G1年84元1核 ...

  7. c#队列取值_在队列的开头获取对象– C#中的窥视操作

    要在队列的开始处获取对象,代码如下- 示例using System; using System.Collections.Generic; public class Demo { public stat ...

  8. 环形队列的输出_循环队列的基本操作详细讲解

    实验学时: 2 实验类型: (设计型) 一.实验目的 1. 理解并掌握队列的逻辑结构和顺序存储结构,了解循环队列的特点: 2. 掌握循环队列中基本操作的相关算法: 3. 编程实现相关算法: 4. 学会 ...

  9. java session 持久化_自定义实现session持久化

    自定义实现session持久化 使用场景 对于有登录校验的网站,tomcat 重启之后,刷新页面又得重新登录,影响用户体验. 原因: tomcat 的session 在内存中,tomcat重启之后,内 ...

最新文章

  1. java源码分析之ArrayList
  2. python按行求和_Python第一篇:对3个Excel文件进行整合
  3. 机器学习:随机森林算法及其实现
  4. ubuntu18.04错误配置变量环境导致无法进入系统
  5. node mysql 增删改查_Nodejs操作MySQL - 增删改查
  6. redis linux 运行依赖,在Ubuntu系统下安装Redis Desktop Manager的方法
  7. [Matlab]求解线性方程组
  8. .NET : 在单元测试中使用外部文件作为数据源
  9. 前端读者 | CSS三角形和饼图
  10. IDEA设置注释配置时获取不到参数的解决办法
  11. 计算机招聘网站排名,2014年互联网名企招聘人数的高校
  12. c语言小车路径规划算法,小车自动避障及路径规划.doc
  13. JAVA王思聪吃热狗程序_王思聪吃热狗小游戏, 程序员开发路上
  14. Adobe系列软件-快捷键(PS-Photoshop、PR-Premiere Pro、AE-After Effects)
  15. android谷歌地图_Android Google地图:添加天气数据
  16. 【Unity3D插件】UniRx(基于Unity的响应式编程框架)插件教程
  17. 什么时候重写equals方法
  18. linux和尚取水设计,小和尚取水
  19. 软件:IIS上配置CGI
  20. Kaggle Learn 数据泄露(data leakage)的几个例子

热门文章

  1. 手机桌面隐藏大师_应用加密,教你一招隐藏手机桌面上的软件!
  2. python能写什么脚本_你用 Python 写过哪些有趣的脚本?
  3. linux 6.8 安装教程,CentOS 6.8 7.2 安装图解详细教程
  4. linux源码安装php缺少动态库,php源代码安装常见错误解决办法
  5. 什么中文版软件可以操作mysql_一款软件,几乎可以操作~所有的~“数据库”,太牛逼了!...
  6. integer是值传递还是引用传递_值传递与引用传递
  7. 牛客练习赛26B 烟花 (概率DP)
  8. wordpress 后台页面无法显示绑定的台湾语言
  9. python系统学习:函数积累(持续更新)
  10. Delphi开发的服务在Windows2003 64位注册方式。