在ruby中通过rabbitmq序列化和反序列化对象

时间:2011-12-07 11:25:12

标签: ruby json rabbitmq amqp

我想将一个对象序列化为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}]"

任何人都能看到我做错的事吗?

1 个答案:

答案 0 :(得分:0)

我或多或少地使用相同的方法,并在我身边正常工作。可能是您发送了错误的消息(序列化问题)。使用新的rabbitmq,您可以在兔子Web控制台中检查消息。

您可以尝试先打印to_json。