我有一个RabbitMQ集群中的请求流,多个消费者处理这些请求。问题在于,每个消费者出于性能原因必须批处理请求。具体而言,我可以通过批处理请求来分摊网络IO操作。
因此,每个消费者都希望最大化其可以批处理的请求数量,但不要增加太多延迟。
我可以在消费者收到第一个请求时启动计时器,并继续收集请求,直到以下两种情况之一发生:计时器超时或接收到500个请求。
是否有更好的方法实现此目标 - 而不阻塞每个消费者?
因此,每个消费者都希望最大化其可以批处理的请求数量,但不要增加太多延迟。
我可以在消费者收到第一个请求时启动计时器,并继续收集请求,直到以下两种情况之一发生:计时器超时或接收到500个请求。
是否有更好的方法实现此目标 - 而不阻塞每个消费者?
basic.consume
而不是basic.get
; prefetch 不适用于basic.get
。如果有意义的话,你应该以异步方式设计你的应用程序,因为 AMQP 更适合这种模型。 - SingleNegationElimination