Несколько потребителей и производителей подключены к очереди сообщения, возможно ли это в AMQP?

StackOverflow https://stackoverflow.com/questions/2161206

Вопрос

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

Я хотел бы убедиться, что:

  • Каждое сообщение в очереди в конечном итоге обрабатывается
  • Работа более или менее одинаково распределена
  • Изображение будет проанализировано только одним процессом OCR
  • Процесс OCR не получит несколько сообщений одновременно (так что любой другой бесплатный процесс OCR может обрабатывать сообщение).

Можно ли делать с помощью AMQP?

Я планирую использовать Python и Rabbitmq

Это было полезно?

Решение

Да, это возможно. Сервер Cluster для игры MMO в реальном времени, над которой я работаю, работаю таким образом. Мы используем ActiveMQ, но я думаю, что все это возможно с RabbitMQ.

Все предметы, которые вы упомянули, вы выходите из коробки, кроме последнего.

  • Каждое сообщение в очереди в конечном итоге обрабатывается - Это одна из основных обязанностей брокеров сообщений
  • Работа более или менее одинаково распределена - это еще один :)
  • Изображение будет проанализировано только одним процессом OCR - Различие /тема и /очередь существует для этого. Темы похожие на сигналы вещания, очереди - это задачи. Вам нужна A /очередь в вашем сценарии

Чтобы сделать последнюю работу в желаемой работе, потребители посылают аргумент AMQ при подписке на очередь:

activemq.prefetchSize: 1

Эта настройка гарантирует, что потребитель больше не будет принимать никаких сообщений после того, как он потребуется, и пока не отправит ack в AMQ. Я считаю, что в Rabbitmq существует нечто подобное.

Другие советы

Да, как указывает @nailxx. Модель программирования AMQP немного отличается от JMS, поскольку у вас есть только очереди, который может быть разделен между работниками или используется в частном порядке одним работником. Вы также можете легко настроить Rabbitmq, чтобы сделать Pubsub варианты использования или то, что в JMS называется темы. Анкет Пожалуйста, перейдите в наш Начиная Страница на Веб -сайт Rabbitmq Чтобы найти тонну полезной информации об этом.

Теперь, в частности, для вашего варианта использования уже есть множество инструментов. Тот, который люди используют много, и это хорошо поддерживается, Сельдерей. Анкет Вот Сообщение блога об этом, что, я думаю, поможет вам начать:

Если у вас есть какие-либо вопросы, пожалуйста, напишите нам или отправьте в список рассылки Rabbitmq-Discuss.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top