这可能是我第十次执行这样的事情,而且我从未对我提出的解决方案感到满意。

使用mysql表而不是“正确”消息传递系统的原因是有吸引力的,主要是因为大多数应用程序已经在使用一些关系数据库来使用其他的东西(这往往是我一直在做的大部分的mysql),而很少的应用程序使用消息系统。此外 – 关系数据库具有非常强的ACID属性,而消息传递系统通常不会。

第一个想法是使用:

create table jobs(

id auto_increment not null primary key,

message text not null,

process_id varbinary(255) null default null,

key jobs_key(process_id)

);

然后排队看起来像这样:

insert into jobs(message) values('blah blah');

并且出队看起来像这样:

begin;

select * from jobs where process_id is null order by id asc limit 1;

update jobs set process_id = ? where id = ?; -- whatever i just got

commit;

-- return (id, message) to application, cleanup after done

表和排队看起来不错,但出队有点麻烦我。回滚的可能性有多大?还是被封锁?我应该用什么钥匙来做O(1)?

还是有什么更好的解决方案,我在做什么?

队列表mysql,什么是在mysql中实现消息队列表的最佳方法相关推荐

  1. react中绑定点击事件_在React中绑定事件处理程序的最佳方法

    react中绑定点击事件 by Charlee Li 通过李李 在React中绑定事件处理程序的最佳方法 (The best way to bind event handlers in React) ...

  2. mysql 统计条目_mysql 统计表中条目数量的几种方法

    mysql 统计表中条目数量的几种方法 展开 通常的方法是: select count(*) from `table_name` select count(1) from `table_name` s ...

  3. mysql添加临时索引_mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  4. win2008支持mysql asp.net_Win7、win2008中让IIS7支持asp的方法

    Win7或Windows server 2008中IIS7支持ASP+Access解决方法. 1. 让IIS7支持ASP Win7或Windows server 2008中IIS7是默认不安装的,所以 ...

  5. 在jQuery中删除事件处理程序的最佳方法?

    我有一个input type="image" . 这就像Microsoft Excel中的单元格注释一样. 如果有人在与该input-image配对的文本框中input-image ...

  6. python删除字符串中重复字符_从Python中删除字符串标点符号的最佳方法

    似乎有一个比以下更简单的方法: 1 2 3import string s ="string. With. Punctuation?" # Sample string out = s ...

  7. java 求导函数_在MATLAB中计算数值导数的最佳方法是什么?

    这些只是一些快速而肮脏的建议 . 希望有人会发现它们有用! 1. Do you have a symbolic function or a set of points? 如果您有符号功能,您可以分析计 ...

  8. mysql 开启引擎命令_MySql中启用InnoDB数据引擎的方法

    1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术, ...

  9. mysql如何删除数据_MySQL中删除数据的两种方法

    1. 在MySQL中有两种方法可以删除数据: 一种是delete语句,另一种是truncate table语句. delete语句可以通过where对要删除的记录进行选择,而使用truncate ta ...

最新文章

  1. Web移动端Fixed布局的解决方案
  2. 【论文解读】无需额外数据、Tricks、架构调整,CMU开源首个将ResNet50精度提升至80%+新方法...
  3. 【.NET Core 3.0】 46 ║ 授权认证:自定义返回格式
  4. 【计算机网络】手动配置hosts文件解决使用GitHub和Coursera网站加载慢/卡的问题
  5. android自定义更新,Android 完美解决自定义preference与ActivityGroup UI更新的问题
  6. STS创建Spring Boot项目实战(Rest接口、数据库、用户认证、分布式Token JWT、Redis操作、日志和统一异常处理)
  7. 将多张图片转成gif
  8. BOM模型中常用对象 定义计数器 网页跳转 网页前进后退
  9. linux 测试工具
  10. matlab判断向量组线性相关性的三种方法
  11. js基础知识汇总08
  12. Windows安装RabbitMQ集群的几个注意点
  13. 数据挖掘 自习笔记 第三章 定性归纳实践(下)
  14. 链家广州二手房的数据与分析——爬取数据
  15. nginx的安装升级、常用配置(二)
  16. 2. 量化分析技术指标
  17. 计算机外部设备培训教学计划,【精品】计算机教学计划4篇
  18. 中国本土便利店遍地开花,7-Eleven便利店入华为何“水土不服”?
  19. python throw_python 之 异常处理
  20. 仅仅有人物没背景的图片怎么弄_只会画人物不会画背景?这3种方法教你快速画背景!...

热门文章

  1. vue引入包mysql_vue中import引入文件和使用的方式总结
  2. CTF(Pwn) 当题目为我们提供Libc版本.so文件, 与 不提供的区别
  3. 攻防世界-REverse-tt3441810(超简单秒懂)
  4. Python 5种不为人知的高级特征
  5. Python基础教程:super()方法详解
  6. Django中六个常用的自定义装饰器
  7. pytorch C++部署模型 ONNX tensorRT
  8. Intel Realsense D435 当摄像头运行过程中突然USB线断开,对RuntimeError: Frame didn't arrived within 5000的异常捕获及处理
  9. php中0与NULL,False,“0”,\0的区别
  10. python使用curses库获取控制台的键盘输入(如上下左右)