下面我的Ruby代码处理RabbitMQ事件。我正在使用Bunny for Ruby和sneakers gem。虽然我认为我正在对所有可能发生的事件采取行动,但本地频道正在堆叠着未经处理的消息。每次日志显示如下内容时都会发生这种情况:
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
?
答案 0 :(得分:0)
答案稍晚,但遇到了这个问题,解决方案总是返回ack!
或reject!
。
所以改变这个:
reject!
return
到
return reject!