多进程读消息队列的问题

CodeBus 2017-04-18 12:46:09
有一系列的sql操作,如何保证数据的先后顺序。比如有两个update操作都写入了队列,如何保证多进程消费队列消息的时候按照正确的写入顺序写入数据库。
...全文
1451 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlzjff 2017-07-27
  • 打赏
  • 举报
回复
常见的消息队列,都是支持多consumer消费的,一般情况,无法保证,不同consumer之间消费的先后顺序,但有一些消息队列,支持同一个consumer之间的消费是顺序的,而分配给consumer消费的依据是shardingKey,只要在发送时,按照wiki ID来做shardingKey,那么这个wiki的update任务,就只会落在同一个consumer里面操作,而又能保证这条wiki的操作是顺序的,就可以了。 不知道你用的是哪一款消息队列呢?
  • 打赏
  • 举报
回复
多进程消费你的消息? 进程 a 和 进程b拿到的消息有先有后? 有一个进程在拿到这类消息时,单独放到一个列表ListOrder 中(按可执行的优先级排序),此时并不去update... 而是另外单独启动一个线程去执行(按照ListOrder的先后去执行) 不知可否?
tianfang 2017-04-21
  • 打赏
  • 举报
回复
首先队列是有序的,你的数据也是有顺序的。直接写入队列不能保证顺序正确 你的应用场景不适合直接写入队列,可以放在临时表,在临时表排序后,再执行
CodeBus 2017-04-18
  • 打赏
  • 举报
回复
补充一下场景:大部分的队列数据都允许无序操作,但是针对某些资源,比如wiki里面的词条页面,对于同一个词条必须保证编辑的写顺序。这种怎么实现多进程读取并消费队列?

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧