Каков наилучший способ форматирования сообщений для очереди?

Я читал в очереди сообщений в последнее время, и я хотел бы реализовать простую, расширяемую систему для своего приложения. Хотя есть много хорошей информации по вопросу о создании системы MQ, я не могу много узнать о фактической реализации.

Я ищу шаблоны и рекомендации по правильному форматированию сообщений для очереди и способам выполнения заданий в PHP. Должен ли я использовать JSON, сериализованные объекты, текст, URL-адреса или XML? Какую информацию я должен отправлять? Является ли рабочий с switch($job['command']) {} (или что-то в этом роде), путь или какие-либо установленные шаблоны для реализации рабочего?

Помощь очень ценится!

    Вы можете выбрать любую из следующих реализаций MQ в PHP, поэтому вам не нужно сворачивать самостоятельно, и вы можете посмотреть их исходный код, чтобы узнать об их реализации. Для общей интеграции взгляните на страницу ActiveMQ на шаблонах Enterprise Integration .

    • http://sourceforge.net/projects/beanstalk/

      Клиентская библиотека PHP для beanstalkd. BeanStalk позволяет разработчикам PHP использовать сервер bequestalkd in-memory workqueue ( http://xph.us/software/beanstalkd ).

    • http://kr.github.com/beanstalkd/

      Beanstalk – это простое, быстрое обслуживание на рабочем месте. Его интерфейс является общим, но первоначально был разработан для уменьшения латентности просмотров страниц в больших объемах веб-приложений за счет выполнения многозадачных задач асинхронно.

    • http://activemq.apache.org/

      Apache ActiveMQ – самый популярный и мощный поставщик сообщений с открытым исходным кодом и интеграционных шаблонов. Apache ActiveMQ работает быстро, поддерживает множество кросс-языковых клиентов и протоколов, имеет простые в использовании шаблоны интеграции предприятия и множество дополнительных функций, полностью поддерживая JMS 1.1 и J2EE 1.4. Apache ActiveMQ выпущен под лицензией Apache 2.0

    • http://memcachedb.org/memcacheq/

      Memcachedb – это распределенная система хранения ключевых значений, предназначенная для постоянной работы. Это не решение для кеша, а постоянное хранилище для высокочастотной записи и чтения. Он соответствует протоколу memcache (не завершен, см. Ниже), поэтому любой клиент memcached может иметь возможность подключения к нему. Memcachedb использует Berkeley DB в качестве хранилища бэкэнда, поэтому поддерживается множество функций, включая транзакцию и репликацию.

    • http://www.zend.com/en/products/server/

      Zend Server 5.0 включает в себя Job Queue, обеспечивая полную поддержку для создания, выполнения и управления заданиями для оптимизации производительности приложений и снижения нагрузки на сервер, минимизации узких мест приложений и улучшения работы конечных пользователей.

    • https://www.dropr.org/

      dropr – это распределенная структура очереди сообщений, написанная на PHP. Основные цели:

      • надежная и долговечная (отказоустойчивая) работа по сетям
      • децентрализованная архитектура без единого экземпляра сервера (точка отказа)
      • легко настроить и использовать
      • модульность для хранения в очереди и транспорта сообщений (в настоящее время реализовано хранение файловой системы и завивка)
    • http://gearman.org/

      Gearman предоставляет общую инфраструктуру приложений для работы с другими машинами или процессами, которые лучше подходят для работы. Он позволяет выполнять параллельную работу, обрабатывать баланс нагрузки и вызывать функции между языками.

    • http://www.zeromq.org/

      ØMQ (также записанный ZeroMQ, 0MQ или ZMQ) – это высокопроизводительная асинхронная библиотека обмена сообщениями, предназначенная для использования в масштабируемых распределенных или параллельных приложениях. Он обеспечивает очередь сообщений, но в отличие от ориентированного на сообщения промежуточного программного обеспечения система ØMQ может работать без специального брокера сообщений. Библиотека разработана так, чтобы иметь знакомый API-интерфейс сокета.

    Я бы использовал JSON, если можно, – он краток, легко читается и работает на разных языках.

    Одна из причин, по которой вы не сможете использовать JSON, – это если вы хотите, чтобы ваше фоновое «задание» включало не только данные (в этом случае JSON будет в порядке), но и сериализованный объект. Если это так, вам нужно сделать хотя бы один из аргументов задания сериализованным PHP.