1
pubby 2017-01-16 20:07:43 +08:00 via Android
beanstalkd
|
2
mercurylanded 2017-01-16 20:14:00 +08:00
activemq/rabbitmq
|
3
timothyye 2017-01-16 20:14:16 +08:00 via Android
beanstalkd
|
4
timothyye 2017-01-16 20:14:50 +08:00 via Android
beanstalkd+1
|
5
sneezry 2017-01-16 20:20:31 +08:00 via iPhone
Azure 有 Event Hub
|
6
22too 2017-01-16 20:33:40 +08:00
rabbitmq 推荐
|
7
z5864703 2017-01-16 21:02:59 +08:00
laravel 自带的队列服务
|
8
loveshouhu 2017-01-16 21:04:25 +08:00
nsq
|
9
vus520 2017-01-16 21:09:21 +08:00
那专门挑一个不一样的, redis
|
10
R18 2017-01-16 21:17:36 +08:00 via Android
我也是用 redis
|
11
doubleflower 2017-01-16 21:44:02 +08:00
第一次看到 beanstalkd ,看了下文档感觉小而强大啊
|
12
shiny 2017-01-16 23:00:43 +08:00
redis + 自己写的 node 定时器,定时触发 web 请求。
|
13
lbp0200 2017-01-16 23:38:38 +08:00 via Android
redis
|
14
snnn 2017-01-16 23:43:40 +08:00 via Android
kafka
|
15
ety001 2017-01-17 00:22:36 +08:00 via iPhone
httpsqs
|
16
sudoz 2017-01-17 00:28:45 +08:00
redis 就行了
|
17
mengskysama 2017-01-17 02:39:23 +08:00 via iPhone
所以楼上这么多说 redis , nsq 的是怎么实现延迟消息队列的...
|
18
dangyuluo 2017-01-17 03:12:30 +08:00
@mengskysama 可能是定时任务吧。
|
19
janxin 2017-01-17 08:21:13 +08:00 via iPhone
@mengskysama 量小自己做个定时器就好了
|
20
pubby 2017-01-17 08:21:24 +08:00 via Android
@mengskysama 一样,比较好奇 redis 怎么实现延迟的
|
22
enenaaa 2017-01-17 09:27:34 +08:00
直接用数据库嘛, 查询时加个执行时间条件。
|
23
lujiajing1126 2017-01-17 09:36:49 +08:00 via iPhone
rmq 。 httpsqs 也挺好的
|
25
jarlyyn 2017-01-17 11:00:38 +08:00
延时关闭订单 /定时发送邮件和队列关系不大不啊?
主要是 Cron 吧? |
27
yidinghe 2017-01-17 11:18:15 +08:00
定时的消息处理对时间精度要求不高的话,完全可以轮询
|
28
slixurd 2017-01-17 11:20:19 +08:00
@jarlyyn 如果用 cron 的话会比较尴尬...
因为一般有多台服务器,不可避免的需要用 Quartz 这种分布式调度系统 然后如果数据量大,还得多台消费者. 这种情况下用消息队列会方便很多,可以横向扩展.... redis 当然可以实现,sorted set 就很简单 不过 redis 有问题啊= = 作为一个 kv 存储.有事务,但是不能回滚... 细节上有各种问题,例如保证不被重复消费,消费失败让其他节点接着重试.... |
29
yubang 2017-01-17 11:32:29 +08:00
rabbitmq +1
|
32
boneyao 2017-01-17 11:49:04 +08:00
celery? 算不算?
|
33
slixurd 2017-01-17 12:01:31 +08:00
|
35
iyaozhen 2017-01-17 12:28:13 +08:00 via Android
数量不大 redis ,用 lpush , rpop
数量大用 kafka 目前的最佳实践 |
37
ihuotui 2017-01-17 13:23:14 +08:00 via iPhone
@slixurd 数据完整性,参考数据库怎么保证,再增加一个消费 set ,处理前把消息放在 set 里面,处理完把 key 清除,办法有很多。然后就是消费信息的唯一性了要幂等操作。
|
38
Mirana 2017-01-17 13:27:48 +08:00
epoll_wait 有个 timeout 参数,在一组任务中取 timeout 最小的值作为 epoll_wait 的参数
把任务用查询树的结构来存储比如红黑树和跳表就可以实现延迟消息队列 |
39
wesley 2017-01-17 14:21:43 +08:00
fastcgi_finish_request();
|
40
slixurd 2017-01-17 14:37:12 +08:00
@jarlyyn 比如说,需要精确到秒级延迟的一些系统,1s-2s 左右执行一次
其实处理不了几条数据的....还有各种乱七八糟的外部调用之类的... |
41
slixurd 2017-01-17 14:44:49 +08:00
|
43
327beckham 2017-01-17 15:02:18 +08:00
ruby resque
|
44
Felldeadbird 2017-01-17 15:03:14 +08:00
既然规模不大,直接 cron 触发 数据库要发送的数据不就好了么
|
45
sarices 2017-01-17 15:12:23 +08:00
httpsqs
|
46
lyragosa 2017-01-17 15:26:11 +08:00
看楼上说得都好高端
用 cron 的都瑟瑟发抖不敢说话了…… |
47
cevincheung 2017-01-17 15:48:41 +08:00
表示 cron 取出所有数据后挨个队列的路过。
cron 取出后扔队列要求很快的而且 worker 不需要再验证其他逻辑了直接走关闭即可。 |
48
ppwangs 2017-01-17 16:15:59 +08:00
规模不大我以下想到的是用 job ,结果看回答没人用,吓死了
|
49
s546360316 2017-01-17 16:36:43 +08:00
redis 吧,我们就是这么弄的
|
50
niuroumian 2017-01-17 17:34:42 +08:00 via iPhone
用 java delay queue 写一个
|
51
julyclyde 2017-01-17 18:09:01 +08:00
带延迟的,貌似 redis 的 list 功能不行吧?
beanstalkd 我知道可以带。其它的不了解 |
52
zhy0216 2017-01-18 00:27:15 +08:00
pyrq
|
53
sampeng 2017-01-18 11:23:14 +08:00
看你语言。。。
静态语言单实例直接在进程内实现 |
54
arzusyume 2017-01-18 13:04:31 +08:00
|
55
cxbig 2017-01-18 18:17:09 +08:00
LZ 所指规模不大是什么概念?比方说每小时多少条?
我司用 AWS 做架构,所以用 SQS 做队列。 200 条 /小时左右,很稳定。 |