0

我下面的 Ruby 代码处理 RabbitMQ 事件。我正在为 Ruby 和运动鞋 gem使用 Bunny 。尽管我认为我正在对所有可能的事件采取行动,但本地频道中充斥着未确认的消息。每次日志显示如下内容时都会发生这种情况:

sneakers_1          | I, [2017-02-08T19:03:31.088857 #14]  INFO -- : Rejecting 172.21.0.21. Name invalid tld

这是我的 Ruby 代码:

require 'sneakers'

class EventProcessor
  include Sneakers::Worker
  from_queue :edge_requests


  def work(msg)
    msg = JSON.parse(msg)
    domain = msg[':path'].split('/').first
    domain = domain.downcase.sub(/^www\./, '')
    domain = Domain.find_or_initialize_by(name: domain) {|domain| domain.status = :active}
    unless domain.valid?
      Rails.logger.info "Rejecting #{domain.name}. #{domain.errors.full_messages.join(',')}"
      reject!
      return
    end
    domain.persisted? ? domain.touch : domain.save!
    ack!
  rescue
    Rails.logger.error $!
    reject!
  end
end

我的reject!大概有什么问题?有点卡住了几个小时。我试图改变所有reject!ack!但似乎没有任何帮助。

也许我使用rescue了错误的方式?

4

1 回答 1

0

答案稍晚,但面临这个问题,解决方案总是返回ack!or reject!

所以改变这个:

reject!
return

return reject!
于 2017-10-30T13:45:35.320 回答