повторно поставьте задание предприятия с потогонной системой в очередь в RabbitMQ

Я работаю над приложением направляющих, где клиент возмещает, вручены рабочему Предприятия с потогонной системой. Если возмещение перестало работать (потому что мы не можем достигнуть платежного процессора в то время), я хочу повторно поставить задание в очередь.

class RefundWorker < Sweatshop::Worker

def process_refund(job)
  if refund
    Transaction.find(job[:transaction]).update_attributes(:status => 'completed')
  else
    sleep 3
    RefundWorker.async_process_refund(job)   # requeue the job
  end
end

Там какой-либо лучший путь состоит в том, чтобы сделать это, чем вышеупомянутый? Я не нашел функции "задержки" в RabbitMQ, и это - лучшие решения, которые я предложил до сих пор. Я хочу избежать занятого цикла в то время как переорганизация очередей.

5
задан Nicholas C 5 January 2010 в 13:04
поделиться

3 ответа

Не похоже, что AMQP (или, по крайней мере, RabbitMQ) поддерживает идею "delay this job". " Таким образом, подход к повторному получению одной и той же работы изнутри рабочего, если он не удается, кажется лучшим решением на данный момент.

У меня есть код, работающий в демонстрационной среде, и он пока удовлетворяет мои потребности.

0
ответ дан 15 December 2019 в 01:03
поделиться

Ты смотрел на такие вещи, как "Руот" и "Минион"?

Здесь есть несколько ссылок: http://delicious.com/alexisrichardson/rabbitmq+work+ruby

Вы также можете попробовать Сельдерей, который не говорит на родном Ruby, но говорит на HTTP+JSON.

Все вышеперечисленное работает с RabbitMQ, так что может вам помочь.

Cheers

alexis

3
ответ дан 15 December 2019 в 01:03
поделиться

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

.
1
ответ дан 15 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: