Я пытаюсь использовать Delayed Message Queue для RabbitMQ с PHP, но мои сообщения просто исчезают.Как использовать задержанную очередь сообщений RabbitMQ из PHP?
я объявляю обмен со следующим кодом:
$this->channel->exchange_declare(
'delay',
'x-delayed-message',
false, /* passive, create if exchange doesn't exist */
true, /* durable, persist through server reboots */
false, /* autodelete */
false, /* internal */
false, /* nowait */
['x-delayed-type' => ['S', 'direct']]);
Я связывание очереди с этим кодом:
$this->channel->queue_declare(
$queueName,
false, /* Passive */
true, /* Durable */
false, /* Exclusive */
false /* Auto Delete */
);
$this->channel->queue_bind($queueName, "delay", $queueName);
И я публикую сообщение с этим кодом:
$msg = new AMQPMessage(json_encode($msgData), [
'delivery_mode' => 2,
'x-delay' => 5000]);
$this->channel->basic_publish($msg, 'delay', $queueName);
Но сообщение не задерживается; он по-прежнему сразу доставлен. Что мне не хватает?
См. Ответ здесь, как установить заголовок задержки: https://groups.google.com/d/msg/rabbitmq-users/vJEG7tdzi4E/lLXF4mhoAAAJ –