Несколько потребителей и производителей подключены к очереди сообщения, возможно ли это в AMQP?
-
23-09-2019 - |
Вопрос
Я хотел бы создать ферму процессов, которые способны 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.