Ответ
virusav 27.11 21:08
/ 27.11 21:09
два параметра - строка name ; hash параметров
Когда я тестировал
oAmqp.publish, то было совсем непривычно, что текст передается первым параметром, а остальное - хешем.
Если в большинстве случаев хеш не используется, то тогда есть смысл использовать такой подход, но тут не так.
Параметры хеша сразу видны в коде, а текстовый параметр как-то визуально теряется.
^oAmqp.declare_queue[
$.queue[очередь] - параметр сразу бросается в глаза
$.passive(false)
$.durable(true)
^oAmqp.declare_queue[очередь;
$.passive(false)
$.durable(true)
чтобы не делать get_message, который полезен и там надо бы запланирвоать брать сразу N-сообщений из очереди (одно по умолчанию)
Есть метод
amqp_basic_get, который должен брать одно сообщение из очереди без прослушки.
Если использовать его для получения нескольких сообщений (в цикле), то в теории это должно быть дольше, чем прослушка, и
stop_consume через нужное количество.
Но во время прослушки для получения нескольких сообщений есть проблема: нужно определить конец очереди, чтобы выйти из нее, если, например, писем больше нет, чтобы скрипт не висел до бесконечности в ожидании последней пары сообщений.
Можно, конечно, получать в каждом
callback длину очереди и ориентироваться на него, но не знаю, насколько можно верить этому числу в момент обработки текущего сообщения.
Метод
amqp_basic_get возвращает параметр
message_count, который равен, если я правильно понял, длине очереди минус 1 (текущее сообщение), т.е. при каждом взятии мы знаем, сколько осталось.
Пока не добрался до получения самого сообщения, только до
amqp_basic_get_ok_t.
Если через
consume будет реализовано правильнее и быстрее, то можно и без
amqp_basic_get.
В теории
stop_consume не должен мешать кому-либо другому слушать очередь, т.к. единовременно в одном скрипте может слушать только один.