我的RabbitMQ集群中有一个请求流,以及处理它们的多个消费者.问题是 - 每个消费者必须出于性能原因批量处理请求.具体来说,有一个网络IO操作,我可以通过批处理请求来分摊.
因此,每个消费者都希望最大化它可以批量处理的请求数量,但不会增加太多的延迟.
当消费者收到第一个请求并继续收集请求时,我可能会启动一个计时器,直到两个事件中的一个发生 - 计时器到期或已收到500个请求.
有没有更好的方法来实现这一目标 - 不会阻止每个消费者?
通常,"批处理消息"的网络方面是在basic.qos(prefetch-size, prefetch-count)参数级别处理的.在此方案中,代理将为消费者发送超出未确认消息的一些字节/消息(分别),但是客户端库在进程中一次一个地向应用程序发送消息.
为了最大化利益,应用程序可以保留basic.ack()每条消息,并定期发出basic.ack(delivery-tag=n, multiple=True)以确认所有带有传递标记<= n的消息.
| 归档时间: |
|
| 查看次数: |
3834 次 |
| 最近记录: |