2

I'm using Iron.io for our messaging platform. It works great once everything is pushed to their servers. However sometimes (very rare) we get issues adding a message to the queue. Usually it is a 400 error probably due to some weird web timing issue. What is the best way to guarantee the message will get put on their Queue? Code is attached, failure happens in the message_queue.post.

class Bus

  def self.send(message, queue, callback_url)
    message_queue = IRONMQ.queue(queue)
    add_subscribers(callback_url, message_queue)
    result = message_queue.post(message.to_json)
    puts "put the message : #{message.inspect} on the bus with result #{result.inspect}"
  end

  def self.add_subscribers(callback_url, message_queue)
    if callback_url.kind_of?(Array)
      callback_url.each { |url| message_queue.add_subscriber({url: format_callback_url(url)}) }
    else
      message_queue.add_subscriber({url: format_callback_url(callback_url)})
    end
  end
4

3 回答 3

0

HTTP 400 响应代码表示应用程序发送了错误的数据。JSON 化消息可能大于 64kB。

于 2013-12-20T01:26:49.750 回答
0

我最终只是转而使用Sidekiq来处理照片上传。它内置了重试逻辑,并且易于配置。

于 2013-12-27T15:01:28.723 回答
0

处理 400 错误代码并让它在退避期后再次重新运行帖子。

于 2013-12-20T00:44:03.100 回答