我使用菲博斯宝石在Rails应用程序中使用Kakfa消息,并在rails config/initializers/phobos.rb中配置它,以便从config/phobos.yml启动executor,如下所示:
config/initializers/phobos.rb
Phobos.configure('config/phobos.yml')
executor = Phobos::Executor.new
executor.start当试图从:exception_class=>"NameError", :exception_message=>"uninitialized constant TransactionsConsumer::Address"加载Address模型时,我会得到一个ActiveRecord错误。不应该有TransactionsConsumer::Address,但是它应该在app/models/address.rb中找到Address类。
我在app/consumers/transactions_consumer.rb上的消费者
class TransactionsConsumer
include Phobos::Handler
def self.start(kafka_client)
# setup handler
puts "Starting Transaction Consumer"
end
def consume(payload, metadata)
puts metadata
puts payload
data = JSON.parse(payload)
if Address.exists?(address: data["fromAddress"])
AccountBalanceUpdateJob.perform_in(1, data["fromAddress"])
end
end
end我假设我没有以某种方式正确地配置Phobos以自动加载或查看Rails类。如何配置Phobos以处理Rails模型/对象?
TransactionConsumer类需要include或require吗?
发布于 2021-07-17 19:14:30
这个问题是我自己的错。我将Address类重命名为Account,我认为这是因为我启动rails和phobos的方式
改变:
if Address.exists?(address: data["fromAddress"])
AccountBalanceUpdateJob.perform_in(1, data["fromAddress"])
end至:
if Account.exists?(address: data["fromAddress"])
AccountBalanceUpdateJob.perform_in(1, data["fromAddress"])
end解决了这个问题。
https://stackoverflow.com/questions/67676220
复制相似问题