写点什么

完全可以使用 RDBMS 作为消息队列

  • 2014-10-09
  • 本文字数:779 字

    阅读完需:约 3 分钟

Lukas Eder JOOQ 母公司的创始人兼 CEO。近日,他针对《将数据库作为消息队列是一种反模式》一文的观点及其在 reddit 上引发的争论表达了看法。他认为,使用数据库作为消息队列不是一种反模式,理由如下:

  1. KISS 和 YAGNI 原则——如果使用 RDBMS 可以满足消息传递的需求,那么就不必花费时间和金钱引入一款复杂的消息队列工具;
  2. 事务性队列——即使使用成熟的消息队列工具,要实现事务性队列依然很复杂,而使用基于 RDBMS 的队列则可以避免事务处理的复杂性;
  3. 无需额外的运维工作——引入新的外部系统会增加运维成本;
  4. 如果已经使用了 Oracle 数据库,则可以直接使用其内置的队列 API Oracle AQ
  5. 以 RDBMS 为中心的应用程序更简单——数据的存在时间大于应用程序,比如, Paypal 从 Java 切换到 JavaScript ,但他们并没有替换掉所有的数据库。因此,如果 RDBMS 是系统的中心,那么在 RDBMS 中运行消息队列是一种选择。

但有位自称见过多个此类案例的读者列举了这种做法面临的几项挑战:

  1. 数据库没有有丢弃和限流策略,如果信息产生速度大于消费速度,那么消息表就会变得越来越大。
  2. 数据库表可以针对写优化,也可以针对读优化,但无法同时对两者进行优化。
  3. 数据库无法对一个数据项进行并发处理。
  4. 大批量的数据处理会产生长事务,事务越长锁的持有时间越长。

Lukas 承认,使用 RDBMS 作为消息队列有一些注意事项。但针对第三点,他提到,Oracle AQ 针对 FOR UPDATE 语句进行了扩展,提供了 FOR UPDATE SKIP LOCKED 语句。该语句允许对记录进行非阻塞式悲观锁定,提高了并发性。

另外,还有一位读者提到, Spring Integration 支持使用数据库存储队列消息,有兴趣的读者可以对此进行研究测试。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-10-09 03:341822
用户头像

发布了 1008 篇内容, 共 426.4 次阅读, 收获喜欢 346 次。

关注

评论

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

区块链预付卡APP的开发成本

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

Solo:基于 zkHE 的身份验证协议,构建 Web3 可信匿名身份层

股市老人

要不要接着造电车,车企站在十字路口

脑洞汽车

汽车 新能源

运维提效指南:如何通过轻帆云 AI 工单系统实现效率+60%跃迁

云智慧AIOps社区

运维 AIOPS ITSM 智能运维

使用 Strands Agents 开发并部署生产级架构通用型个人助手

亚马逊云科技 (Amazon Web Services)

2025可信云大会成功召开,天翼云揽获多项权威认证!

天翼云开发者社区

可信云 天翼云

AI Agent 的制胜之道:上下文工程深度解析

十三Tech

突破连接边界:EMQX 实现 MQTT 和 NATS 协议双向互通

EMQ映云科技

emqx nats

智慧安全,数治风险:灯塔低代码平台赋能烟草行业安全管理体系

中烟创新

AI淘汰歌手又近一步,昆仑万维正式上线Mureka V7

新消费日报

从频繁告警到平稳发布:服务冷启动 CPU 风暴优化实践

vivo互联网技术

性能优化 后端 服务器 Arthas

机器人技术:AI之后的新增长极|小奇说

奇点云

自动驾驶 AI 机器人

录屏神器camtasia主要功能介绍,camtasia2024软件激活码密钥,Camtasia中文版免费下载

阿拉灯神丁

录屏软件 视频编辑工具 Camtasia Studio2024 视频剪辑软件

大数据-50 Redis Java Lua实现乐观锁、WATCH机制与SETNX分布式锁

武子康

Java 数据库 redis 大数据 缓存

1688商品列表API接口指南

tbapi

1688API接口 1688商品列表接口 1688商品数据采集

重磅发布《央国企数智化转型发展报告(2025)》

信通院IOMM数字化转型团队

数字化转型 数智化转型 央国企数智化转型 央国企数字化转型

AI背单词APP的功能设计

北京木奇移动技术有限公司

AI教育 软件外包公司 AI背单词

网传“光刻工厂”真相揭晓,让我们用CST电磁仿真软件的方式打开它

思茂信息

cst CST软件 CST Studio Suite

观测云产品更新 | 监控、事件中心、快照、查看器、基础设施等

观测云

产品迭代

1688商品详情API接口指南

tbapi

1688商品详情接口 1688数据采集 1688商品详情API

见过“秒”级盘点吗?只需3~5秒,RFID盘点通道机让繁琐变得轻松高效!

斯科信息

RFID分拣 斯科信息 RFID技术

2025 AI主战场,连锁门店“变形记”

脑极体

AI

从娃哈哈看传统企业转型:宗馥莉 700 亿营收的产品战略有哪些「可复用模型」?

IPD产品研发管理

产品 产品经理 商业

区块链预付卡APP的上线流程

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

Post-Training on PAI (5): PAI-EasyDistill, PAI 自研大模型蒸馏框架

阿里云大数据AI技术

人工智能 大数据 开源 大模型 大模型蒸馏

天翼云多活容灾服务项目入选“2025年度央国企云容灾领航者典型案例”!

天翼云开发者社区

安全 容灾

数字样机:改写卫星物联网的研制范式

DevOps和数字孪生

基于YOLOv8的桥梁八类缺陷、病害高精度检测项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

yolov8

首家!AI算力最高评级!

百度Geek说

AI赋能专卖人员画像与队伍评价,助力烟草行业人才队伍建设

中烟创新

书本介绍:技术札纪——有限硬件与无限计算的权衡艺术

milanyangbo

云计算 分布式 高并发 Java虚拟机

完全可以使用RDBMS作为消息队列_数据库_谢丽_InfoQ精选文章