Распределение задач RabbitMQ по алгоритму round-robin

309
01 февраля 2018, 19:30

Доброго времени суток.

В проекте реализованы очереди на RabbitMQ с алгоритмом round-robin распределения задач по воркерам. Выявлена проблема - имеется три воркера, первый получил задачу - работает, второй, третий получили - быстро отработали. Первый воркер все еще занят, в очереди появилось еще одно задание и оно ждет освобождения первого воркера вместо того, чтобы передать следующему свободному.

Возможно исправить эту ситуацию, оставив алгоритм round-robin, чтобы свободные воркеры по очереди получали задачи? Спасибо.

Код создания задачи (PHP):

  $channel->queue_declare($queueName, false, false, false, false);
  $message = new AMQPMessage($task, [
      'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT
  ]);
  $channel->basic_publish($message, '', $queueName);

Код подключения воркера:

$channel->queue_declare($queueName, false, false, false, false);
$channel->basic_consume(
        $queueName, '',
        false, true, false, false,
        $handler
);
while (count($channel->callbacks)) {
    $channel->wait();
}
READ ALSO
Обрезка запроса у URL в WordPress

Обрезка запроса у URL в WordPress

Необходимо обрезать запрос из URLПользователя после некоторого действия автоматически перенаправляет на страницу для примера https://test

286
Где правильнее хранить абстракции?

Где правильнее хранить абстракции?

Работаю с Symfony в связке с DoctrineСоздавая сущности я часто использую абстрактные классы и трейты

235
Как парсить динамичные веб сайты?

Как парсить динамичные веб сайты?

Для начала пример, допустим страница - https://itemtaobao

278