因为运营部门一直放数据到队列, 我一直获取数据,然后从队列里面爬数据,所以如何不间断的从队列里面取数据呢?
1
lihongjie0209 2018-12-06 16:14:48 +08:00
一般消息队列都提供阻塞调用的. 比如说;
mq.get("queueName"); // 这个调用会阻塞 那么你就可以写一个线程来轮询 while true{ message = mq.get("queueName"); process(message) // 这里处理业务逻辑 } |
2
15399905591 2018-12-06 16:26:56 +08:00
你们用的是什么消息组件呢? 并且既然是队列,为什么会要不间断获取数据,你的任务执行期间是不需要阻塞的嘛?
|
3
Itoktsnhc 2018-12-06 16:53:50 +08:00
一个模块轮询外部 Queue,一个模块处理,简单点每来一个消息就创建新的线程处理,或者之间用 Queue 连接
做的好一点应该可以控制处理模块的并发度呀,待处理任务 Queue 的长度等指标。 |