Сериализация и десериализация объекта над rabbitmq в ruby - PullRequest
0 голосов
/ 07 декабря 2011

Я хочу сериализовать объект в 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 голосов
/ 05 марта 2012

Я использую тот же подход более или менее, и работает правильно на моей стороне. Возможно, вы отправляете неверное сообщение (проблема с сериализацией). С новым rabbitmq вы можете просмотреть сообщение в веб-консоли rabbit.

Вы можете попробовать напечатать to_json раньше.

...