【问题标题】:Serialize and Deserialize object over rabbitmq in ruby在ruby中通过rabbitmq序列化和反序列化对象
【发布时间】: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}]"

谁能看出我做错了什么?

【问题讨论】:

标签: ruby json rabbitmq amqp


【解决方案1】:

我或多或少地使用相同的方法,并且在我身边正常工作。可能您发送的消息不正确(序列化问题)。使用新的rabbitmq,您可以在rabbit web 控制台中检查消息。

你可以尝试打印 to_json 之前。

【讨论】:

  • 感谢您的提醒。很高兴知道它应该可以工作,而问题就在我的最后。
猜你喜欢
  • 2013-11-01
  • 1970-01-01
  • 2013-08-21
  • 2011-06-19
  • 1970-01-01
  • 2016-10-14
  • 2014-12-24
  • 2013-04-11
  • 1970-01-01
相关资源
最近更新 更多