接收订单用redis做缓存好还是rabbitredis做消息队列列好

规模不大的项目大家用什么做延时消息队列? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
规模不大的项目大家用什么做延时消息队列?
· 258 天前 · 5630 次点击
云服务的: 阿里云 MQ,
亚马逊 SQS, IRON.IO
开源的: beanstalkd, php-resque, gearman
我知道的大概是这些, 国外的云服务应该是不用考虑的, 网络是最大的障碍.
beanstalkd 最后一个 release 居然是 2014 年的, 但是 github 上还有今年的 pr. 也不知道是什么情况
一般用作延时关闭订单, 定时推送任务这种需求, 轻量级的用什么比较好?
55 回复 &| &直到
18:17:09 +08:00
& &258 天前 via Android
beanstalkd
& &258 天前
activemq/rabbitmq
& &258 天前 via Android
beanstalkd
& &258 天前 via Android
beanstalkd+1
& &258 天前 via iPhone
Azure 有 Event Hub
& &258 天前
rabbitmq 推荐
& &258 天前
laravel 自带的队列服务
& &258 天前
& &258 天前
那专门挑一个不一样的, redis
& &258 天前 via Android
我也是用 redis
& &258 天前
第一次看到 beanstalkd ,看了下文档感觉小而强大啊
& &258 天前
redis + 自己写的 node 定时器,定时触发 web 请求。
& &258 天前 via Android
& &258 天前 via Android
& &258 天前 via iPhone
& &258 天前
redis 就行了
& &258 天前 via iPhone
所以楼上这么多说 redis , nsq 的是怎么实现延迟消息队列的...
& &258 天前
@ 可能是定时任务吧。
& &258 天前 via iPhone
@ 量小自己做个定时器就好了
& &258 天前 via Android
@ 一样,比较好奇 redis 怎么实现延迟的
& &258 天前
@ sort set 哈哈
& &258 天前
直接用数据库嘛, 查询时加个执行时间条件。
& &258 天前 via iPhone
rmq 。 httpsqs 也挺好的
& &258 天前
@ 按执行时间戳排序?取第一个然后自己等待?
& &258 天前
延时关闭订单 /定时发送邮件和队列关系不大不啊?
主要是 Cron 吧?
& &258 天前
@ 值是时间戳,然后和现在的时间对比,找过期的时间啊,有一个任务不到扫描,看频率需求多高。
& &258 天前
定时的消息处理对时间精度要求不高的话,完全可以轮询
& &258 天前
@ 如果用 cron 的话会比较尴尬...
因为一般有多台服务器,不可避免的需要用 Quartz 这种分布式调度系统
然后如果数据量大,还得多台消费者.
这种情况下用消息队列会方便很多,可以横向扩展....
redis 当然可以实现,sorted set 就很简单
不过 redis 有问题啊= =
作为一个 kv 存储.有事务,但是不能回滚...
细节上有各种问题,例如保证不被重复消费,消费失败让其他节点接着重试....
& &258 天前
rabbitmq +1
& &258 天前
关闭订单为啥要多台服务器……
& &258 天前
@ 好吧,那些都是要延迟一小时的任务,突然有个新任务需要插队立即处理。
& &258 天前
celery? 算不算?
& &258 天前
@ 数据量大怎么办 =w=...
哦不对,我错了,楼主已经写了规模不大的项目....
不过健壮的服务一般都会避免单点,大小型服务都得做下保障...
& &258 天前 via Android
数据量大到一台单独的只跑关闭订单服务的服务器都不够么。。。
& &258 天前 via Android
数量不大 redis ,用 lpush , rpop
数量大用 kafka
目前的最佳实践
& &257 天前 via iPhone
@ 时间值设置 0 啊……
& &257 天前 via iPhone
@ 数据完整性,参考数据库怎么保证,再增加一个消费 set ,处理前把消息放在 set 里面,处理完把 key 清除,办法有很多。然后就是消费信息的唯一性了要幂等操作。
& &257 天前
epoll_wait 有个 timeout 参数,在一组任务中取 timeout 最小的值作为 epoll_wait 的参数
把任务用查询树的结构来存储比如红黑树和跳表就可以实现延迟消息队列
& &257 天前
fastcgi_finish_request();
& &257 天前
@ 比如说,需要精确到秒级延迟的一些系统,1s-2s 左右执行一次
其实处理不了几条数据的....还有各种乱七八糟的外部调用之类的...
& &257 天前
@ 可以啊,但是这些相当于都需要在 client 处理,只是需要自己去实现
就看怎么写的简单易用了...
都是细节问题...又不是不能做
& &257 天前
@ 延时,延时
& &257 天前
& &257 天前
既然规模不大,直接 cron 触发 数据库要发送的数据不就好了么
& &257 天前
& &257 天前
看楼上说得都好高端
用 cron 的都瑟瑟发抖不敢说话了……
& &257 天前
表示 cron 取出所有数据后挨个队列的路过。
cron 取出后扔队列要求很快的而且 worker 不需要再验证其他逻辑了直接走关闭即可。
& &257 天前
规模不大我以下想到的是用 job ,结果看回答没人用,吓死了
& &257 天前
redis 吧,我们就是这么弄的
& &257 天前 via iPhone
用 java delay queue 写一个
& &257 天前
带延迟的,貌似 redis 的 list 功能不行吧?
beanstalkd 我知道可以带。其它的不了解
& &257 天前
& &257 天前
看你语言。。。
静态语言单实例直接在进程内实现
& &256 天前
之前看到的一个纯 redis 实现的消息队列
不过按时间准时触发
& &256 天前
LZ 所指规模不大是什么概念?比方说每小时多少条?
我司用 AWS 做架构,所以用 SQS 做队列。 200 条 /小时左右,很稳定。
& · & 1213 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 60ms · UTC 04:38 · PVG 12:38 · LAX 21:38 · JFK 00:38? Do have faith in what you're doing.redis怎么做消息队列? - 知乎961被浏览103848分享邀请回答17322 条评论分享收藏感谢收起131 条评论分享收藏感谢收起查看更多回答1 个回答被折叠()鏈?枃浠呴拡瀵筊abbitMQ涓嶳edis鍋氶槦鍒楀簲鐢ㄦ椂鐨勬儏鍐佃繘琛屽?姣斿叿浣撻噰鐢ㄤ粈涔堟柟寮忓疄鐜帮紝杩橀渶瑕佸彇鍐充簬绯荤粺鐨勫疄闄呴渶姹傜畝瑕佷粙缁

我要回帖

更多关于 redis 消息队列 的文章

 

随机推荐