在ruby中通过rabbitmq序列化和反序列化对象
Posted
技术标签:
【中文标题】在ruby中通过rabbitmq序列化和反序列化对象【英文标题】:Serialize and Deserialize object over rabbitmq in ruby 【发布时间】:2012-01-14 22:01:15 【问题描述】:我想将一个对象序列化为 JSON,通过rabbitmq 将其通过网络发送,然后对其进行反序列化。
我有以下要序列化的对象:
lead = Lead.new
lead.company = 'some company'
operation = proc AMQP::Exchange.default.publish(
lead.to_json,
:routing_key => header.reply_to,
:correlation_id => header.correlation_id
)
另一方面,我正在尝试像这样对对象进行反序列化:
callback_queue.subscribe do |header, body|
puts "received #body.inspect"
lead = ActiveSupport::JSON.decode body
puts lead.company #NoMethodError: undefined method `company' for #<Array:0x6fe03f3b>
奇怪的是,json 是一个由 3 个哈希组成的数组,看起来像这样。
[\"created_at\":null,\"email\":\"dagda1@scotalt.net\",\"id\":null,\"lead_id\":null,\"updated_at\":null,\"created_at\":null,\"email\":\"paul.cowan@continuity2.com\",\"id\":null,\"lead_id\":null,\"updated_at\":null]"
谁能看出我做错了什么?
【问题讨论】:
***.com/questions/4464050/… 我的问题是我无法解码对象。我不明白为什么对象没有正确解码。 【参考方案1】:我或多或少地使用相同的方法,并且在我身边正常工作。可能您发送的消息不正确(序列化问题)。使用新的rabbitmq,您可以在rabbit web 控制台中检查消息。
你可以尝试打印 to_json 之前。
【讨论】:
感谢您的提醒。很高兴知道它应该可以工作,而问题就在我的最后。以上是关于在ruby中通过rabbitmq序列化和反序列化对象的主要内容,如果未能解决你的问题,请参考以下文章