社区
高性能WEB开发
帖子详情
多进程读消息队列的问题
CodeBus
2017-04-18 12:46:09
有一系列的sql操作,如何保证数据的先后顺序。比如有两个update操作都写入了队列,如何保证多进程消费队列消息的时候按照正确的写入顺序写入数据库。
...全文
1450
4
打赏
收藏
多进程读消息队列的问题
有一系列的sql操作,如何保证数据的先后顺序。比如有两个update操作都写入了队列,如何保证多进程消费队列消息的时候按照正确的写入顺序写入数据库。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tlzjff
2017-07-27
打赏
举报
回复
常见的消息队列,都是支持多consumer消费的,一般情况,无法保证,不同consumer之间消费的先后顺序,但有一些消息队列,支持同一个consumer之间的消费是顺序的,而分配给consumer消费的依据是shardingKey,只要在发送时,按照wiki ID来做shardingKey,那么这个wiki的update任务,就只会落在同一个consumer里面操作,而又能保证这条wiki的操作是顺序的,就可以了。 不知道你用的是哪一款消息队列呢?
安优小青和他的程序生活
2017-05-27
打赏
举报
回复
多进程消费你的消息? 进程 a 和 进程b拿到的消息有先有后? 有一个进程在拿到这类消息时,单独放到一个列表ListOrder 中(按可执行的优先级排序),此时并不去update... 而是另外单独启动一个线程去执行(按照ListOrder的先后去执行) 不知可否?
tianfang
2017-04-21
打赏
举报
回复
首先队列是有序的,你的数据也是有顺序的。直接写入队列不能保证顺序正确 你的应用场景不适合直接写入队列,可以放在临时表,在临时表排序后,再执行
CodeBus
2017-04-18
打赏
举报
回复
补充一下场景:大部分的队列数据都允许无序操作,但是针对某些资源,比如wiki里面的词条页面,对于同一个词条必须保证编辑的写顺序。这种怎么实现多进程读取并消费队列?
go语言消息中间件
消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。消息中间件适用于需要可靠的数据传送的分布式环境。采用消息中间件机制的系统中,不同的对象之间通过传递消息来激活对方的事件,完成相应的操作。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者。消息中间件能在不同平台之间通信,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间的协同,其优点在于能够在客户和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更进一步的原因。在了解消息中间件之前,首先了解两个基本概念Message和Queue。Message :消息“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。Queue:
消息队列
,用来保存消息直到发送给消费者。它是消息的容器,也是消息的终点。一个消息可投入一个或多个队列。消息一直在队列里面,等待消费者连接到这个队列将其取走。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,
消息队列
会保留消息,直到可以成功地传递它。
消息队列
的主要特点是异步处理,主要目的是减少请求响应时间和解耦。所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入
消息队列
。同时由于使用了
消息队列
,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和。这也是消息中间件的意义所在。
多进程
消息队列
多进程
的
消息队列
消息队列
”是在消息的传输过程中保存消息的容器。
消息队列
最经典的用法就是消费者和生成者之间通过消息管道来传递消息,消费者和生成者是不通的进程。生产者往管道中写消息,消费者从管道中
读
消息。 操作系统提供了很多机制来实现进程间的通信 ,multiprocessing模块就提供了Queue和Pipe两种方法来实现。 使用multiprocessing里面的Queue来实现消息队
多进程
同时从
消息队列
取消息的
问题
Posted on 2008-08-26 15:01 Prayer 阅
读
(478) 评论(0) 编辑 收藏 引用 所属分类: LINUX/UNIX/AIX 我现在有一个程序,是做成了
多进程
同时从一个
消息队列
中取消息,都以阻塞的方式,从
消息队列
中顺序取消息,但是
多进程
同时取的时候我没有加锁,不知道这样会不会出现什么
问题
?操作系统应该对进程有个排队的操作吧? 不会有什么
问题
,OS保证操作
进程间通信之
消息队列
消息队列
的实质是一个存放消息的链表,该链表由内核维护;
消息队列
中的每个消息可以视为一条记录,消息包括一个长整型的类型字段和需要传递的数据。
消息队列
由
消息队列
标识符(queue ID)标识,对
消息队列
有
读
权限的进程可以从队列中
读
取消息,对
消息队列
有写权限的进程可以按照规则,向其中添加消息。 与管道相比,
消息队列
的通信方式更为灵活:它提供有格式的字节流,无需通信双方额外约定数据传输格式;其中的消息设定为不同类型,又被分配了不同的优先级,新添加的消息总是在队尾,但接收消息的进程可以
读
取队列中间的数据。此外,消息
进程间通信-
消息队列
多个进程可以操作同一个
消息队列
,可以从
消息队列
中
读
取数据,也可以往
消息队列
写入数据。一个进程可以发送多种类型的消息。
消息队列
提供一种带有数据标识的特殊管道,对于
多进程
间的通信,可以根据数据标识来区分多个进程。负责监听并
读
取
消息队列
的内容,并打印对应打印消息类型,进程。1、避免了管道通信的同步阻塞
问题
,
读
进程从管道中
读
取数据,其实可以将
消息队列
简单的看做带数据格式的。函数功能:发送一条消息到
消息队列
中。函数功能:从
消息队列
中接收一条消息。,指定接收
消息队列
中第一条类型等于。,指定接收
消息队列
第一条消息。
高性能WEB开发
25,985
社区成员
4,366
社区内容
发帖
与我相关
我的任务
高性能WEB开发
高性能WEB开发
复制链接
扫一扫
分享
社区描述
高性能WEB开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章