2015-03-29 3 views
0

Мне нужно обрабатывать трудоемкую и подверженную ошибкам задачу (например, вызывать конечную точку SOAP, которая будет запускать доставку SMS) всякий раз, когда вызывается определенная конечная точка моего REST API, но я бы предпочел, чтобы мои пользователи не дождались этого, прежде чем отправлять ответ. Spring AMQP уже является частью моего стека, поэтому я хотел бы использовать его для создания «рабочей очереди» и иметь несколько рабочих процессов, потребляющих из очереди и занимающихся «рабочими единицами». Однако у меня есть следующие требования:Фоновые задачи весной (AMQP)

  1. Гарантируется, что рабочее устройство будет доставлено и доставлено ровно одному работнику.
  2. Если рабочий блок не может быть завершен по какой-либо причине, он должен быть помещен обратно в очередь, чтобы другой рабочий мог его забрать позже.
  3. Рабочие устройства выживают при перезагрузке сервера и сбоях. Это обязательно, потому что я не буду использовать БД любого типа для их хранения.

Я знаю, что RabbitMQ и Spring AMQP могут быть настроены таким образом, чтобы обеспечить эти три требования, но я использовал их только для достижения RPC, поэтому я не знаю ничего о чем-либо кроме этого. Есть ли какой-нибудь пример, который я мог бы выполнить? Каковы некоторые подводные камни, на которые нужно следить?

+0

См. [Учебники по кроликам] (https://www.rabbitmq.com/getstarted.html); Spring AMQP поддерживает все шаблоны. Контейнер-слушатель даст вам необходимую устойчивость. –

ответ

0

При создании очередей, rabbitmq дает вам два варианта; временным или долговечным. Длительные сообщения будут доступны до тех пор, пока вы их не подтвердите. И сообщения не истекают, если вы не отдаете очередь ttl. Для начала вы можете включить плагин управления rabbitmq и немного поиграть.

Но если вы действительно хотите гарантировать безопасность своих сообщений от жестких сбоев или аппаратных проблем, я думаю, вам нужно использовать кластер rabbitmq.

Rabbitmq Clustering и вы можете найти статью с высокой степенью доступности в правой части страницы.

Этот парень explaines how to cluster

Кстати я люблю beanstalkd тоже. Вы можете заставить его записывать сообщения на диск, и они будут безопасными, кроме сбоев диска.

Смежные вопросы