【问题标题】:php-amqplib loop while there are messages onlyphp-amqplib 循环,而只有消息
【发布时间】:2015-08-19 07:21:04
【问题描述】:

有一个demo消费者:

只要频道注册了回调,它就会循环

while (count($ch->callbacks)) {
  $ch->wait();
}

问题是,例如,我需要从队列中获取不超过 100 条消息。例如,如果只有 80 个,它应该只返回 80 并退出循环。

谢谢

【问题讨论】:

  • 如果需要获取100条消息,那么在处理完所有消息之前不要取消回调
  • 你能给我一些研究方向吗?这应该是什么样子?
  • 当您执行 queue_declare 时,您可以获得队列中有多少条消息,然后设置您的消费者在消费完这些消息后退出

标签: php rabbitmq php-amqplib


【解决方案1】:

下面的代码对你有用吗?

$callbacks = count($ch->callbacks);

for ($i = 0, $count = $callbacks < 100 ? $callbacks : 100; $i < $count; $i++) {
    $ch->wait();
}

【讨论】:

  • 这不起作用 $callbacks = count($ch->callbacks); var_dump($callbacks); int(1) 虽然队列中有 9 条消息,所以它只返回 1 条消息。实际上,我希望有一些方法可以在循环内部打破循环,而不是在开始循环之前限制它,并且自从这个循环开始以来,我们可能会让其他消费者收到消息。
猜你喜欢
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
相关资源
最近更新 更多