gpt4 book ai didi

RabbitMQ 预取

转载 作者:行者123 更新时间:2023-12-04 01:34:09 26 4
gpt4 key购买 nike

到目前为止,我的 RabbitMQ 消费者客户端使用的预取值为 1。我希望增加该值以获得性能。如果我将该值设置为 2,RabbitMQ 服务器是否会一次向每个消费者发送 2 条消息,这样我就需要解析这两条消息并将第二条消息存储在列表中,直到处理并确认第一条消息?或者 API 会在幕后处理这个问题吗?

我正在使用 Java AMQP 客户端库:

ConnectionFactory factory = new ConnectionFactory();
...
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();

channel.basicQos(2);

QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume(CONSUME_QUEUE_NAME, false, consumer);

while (!Thread.currentThread().isInterrupted()) {
try {
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String m = new String(delivery.getBody(), "UTF-8");

// Will m contain two messages? Will I have to each message and keep track of them within a List?

...
}

最佳答案

API 会在幕后处理此问题,因此您无需担心。

关于哪个消息到达哪里,RMQ 将使用循环法传递,也就是说,如果您有队列:1 2 3 4 5 6consumer1消费者2

consumer1 will have 1 3 5
consumer2 will have 2 4 6

如果您的任何消费者的连接中断,预取的消息将使用相同的传递方法重新传递给活跃的消费者。

这应该是一本有趣的读物,也是一个很好的起点,可以更准确地了解发生了什么:

关于RabbitMQ 预取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15885984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com