Я ищу, чтобы реализовать RabbitMQ в моем приложении PHP, и использую расширение php–amqp. Мой единственный вопрос в том, как я могу легко запросить возврат содержимого очереди в PHP?
php-amqp, похоже, не позволяет мне это делать. Если я ошибаюсь, пожалуйста, помогите мне здесь 🙂
Джеймс, не могли бы вы спросить этот вопрос на rabbitmq-обсуждать? Ваш вопрос касается того, что означает «запрашивать» очередь, чтобы получать сообщения. В RabbitMQ вы потребляете сообщения из очередей и выполняете фильтрацию с использованием привязок к очереди. Взгляните на это введение – http://blogs.digitar.com/jjww/2009/01/rabbits-and-warrens/
ура
alexis RabbitMQ
Если вам нужно знать, сколько сообщений находится в очереди, вы можете получить эту информацию, когда объявляете очередь, или если вы используете basic.get
для получения одного сообщения. Обычно получатели сообщений будут использовать basic.consume
и они не будут знать, сколько сообщений ждет.
Такой вопрос больше связан с типом данных очереди и общей концепцией AMQP.
В AMQP (и в RabbitMQ, который является AMQP-совместимым брокером) очереди являются типичными очередями FIFO. Очередь – это не типы данных, которые обычно используются для доступа к произвольным элементам, а RabbitMQ в это время не предоставляет никакого способа обойти концепцию FIFO и допускать такой доступ. По крайней мере, из коробки. Возможно, есть сторонние плагины, но я не знаю таких подобных. И еще раз, это разрушит целую концепцию FIFO, и она просто станет новым redis или что-то еще, даже не говоря о воздействии на производительность (можно проверить сложность работы общих структур данных, даже это Q & A на SO – Каковы временные сложности различных структуры данных? дает краткое представление о том, почему добавление произвольного доступа не является целью AMQP или любого AMQP-совместимого брокера, который заботится о производительности).
Большинство вопросов о произвольном доступе к очереди происходит, когда очереди помещаются в неправильный контекст: это может быть случай, когда концепция очереди просто не соответствует текущей или желательной архитектуре и когда некоторые хранилища ключевого значения или кулак базы данных лучше.