因为消费进程的时间不是很固定 一会几秒一会几十秒的 还有就是有可能会挂 有什么办法能够动态的调整生产速率或者消费速率这种么 不要求完全不积压 但也别积压的太多啊 弄得生产都跑完多久了 消费还在跑.....
|  |      1binux      2017-11-24 17:07:12 +08:00 via Android 生产者查询一下队列大小,积压了就等一下 | 
|  |      2owenliang      2017-11-24 17:09:36 +08:00 增加消费者数量。 | 
|      3p2pCoder      2017-11-24 17:12:35 +08:00 我觉得 还是 要 保证消费速率够快 我在上一家 公司,开始的时候,把对接 一家 银行的 所有同步连接写在一个 队列里作为消费者, 每天进行 还款的时候,队列很容易蹦 后来 就把 连接 分到 不同 模块了 如果你 只有 一个消费者,消费者 速率一定,那么怎么调整,效果也不会很好 | 
|      5nullcoder      2017-11-24 17:31:13 +08:00 时间不确定是跟业务有关吗? 如果是的话,可以吧一个分成几个。 用过 rabbitmq 里面积压量可以配置 | 
|      6p2pCoder      2017-11-24 17:33:08 +08:00  1 @soulmine   你为了 可用和性能,启动更多消费者,或者在 消费者中间合理分配 负载,很正常 你启动 一个 消费者,不消费消息,就不会 操作 db,又不会消耗多少资源,最后,你要完成 的 db 的操作是相等的 系统 吞吐量增大,现有服务不能满足需求,肯定要选择做 分布式 多节点 和 负债均衡 | 
|      7julyclyde      2017-11-24 20:06:51 +08:00  3 如果差不多还要队列干什么? | 
|  |      8cevincheung      2017-11-24 20:15:40 +08:00 不是有额外的监控么?持续多久消费能力不够自动开新的 worker 啊 | 
|  |      9BBCCBB      2017-11-24 20:44:02 +08:00 监测你应用的消息处理速度,和 mq 的速度,然后计算一下呗 | 
|  |      10chairuosen      2017-11-24 21:10:00 +08:00 看到积压了, 你能让生产者别生产么?不能。 你能让消费者开无双么?不能。 加机器啊 | 
|  |      11Moker      2017-11-24 21:34:18 +08:00 应该提高消费的能力和减少消费的时间 会挂的原因是什么? | 
|      12neoblackcap      2017-11-24 21:57:48 +08:00 @soulmine 空转?不,你拿不到任务,直接 sleep 了,系统会对你这个进程进行调度的。 | 
|      13lihongjie0209      2017-11-24 22:04:46 +08:00 固定大小的缓存区? | 
|  |      14RadishWind      2017-11-24 22:12:37 +08:00 不知道具体需求是什么?如果数据过多而且不重要的话,固定一个队列的最大长度就行了 | 
|  |      15whatisnew      2017-11-24 22:15:07 +08:00 按常量队列起 10 个 worker 正好,如果突然来了大量请求,那么 10 个 worker 肯定不够的,也不能天天盯着监控吧 | 
|  |      16swulling      2017-11-24 22:20:17 +08:00 worker 根据队列中的数据量弹性调度,有积压就增多 worker 到没有积压,没有积压就开始一个个 worker 下线。 | 
|  |      17jpmorn      2017-11-24 22:26:24 +08:00  1 little 定律估算啊。编程珠玑里面有写的。 | 
|  |      18alcarl      2017-11-24 22:32:35 +08:00 via Android 这种需求最简单的就是不用消息队列,用线程池 | 
|  |      20wsbnd9      2017-11-24 23:06:39 +08:00 开多进程  增加消耗的速度 | 
|      21billlee      2017-11-24 23:20:52 +08:00 Spark streaming 自带了根据负载动态调度 worker 的机制 Storm 提供了调度的 API, 但策略要自己搞。 |