[rabbitmq-discuss] Ruby-AMQP with Federation doesn't work?

Roman Gaufman hackeron at gmail.com
Mon Jul 2 02:09:05 BST 2012


I'm trying to get the Ruby-AMQP gem working with RabbitMQ's federation
plugin.

I have a federation set up as following:

{rabbitmq_federation,
   [ {exchanges, [[{exchange,     "xanview"},
                   {virtual_host, "/"},
                   {type,         "topic"},
                   {durable,      true},
                   {auto_delete,  false},
                   {internal,     false},
                   {upstream_set, "my-upstreams"}]
                 ]},

It appears in the web interface as:

Type    x-federation
Parameters   arguments: upstream-set:   my-upstreams
                                                type:   topic
                         durable:   true

I try to use it in Ruby in a consumer like this:

exchange = AMQP::Exchange.new(channel, "x-federation", "my-exchange",
:durable => true)

However in the RabbitMQ config I get this error:

connection <0.16597.1>, channel 2 - error:
{amqp_error,precondition_failed,
            "inequivalent arg 'type'for exchange 'xanview' in vhost
'/': received none but current is the value 'topic' of type
'longstr'",
            'exchange.declare'}

It seems something in the Ruby-AMQP gem is preventing me from using an
exchange type "x-federation"?

Also when I try to consume messages sent to a federated exchange using your
typical:

AMQP.start('amqp://guest:guest@localhost:25672') do |connection, open_ok|
  channel  = AMQP::Channel.new(connection)
  channel.queue("", :durable => true) do |queue|
    queue.bind('xanview', :routing_key => '#')
    queue.subscribe do |metadata, payload|
      puts "Recieved message: #{payload.inspect}."
    end
  end end

I get this exception for the first message received:

/usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-protocol-0.9.3/lib/amq/protocol/table.rb:89:in
`decode': NotImplementedError (NotImplementedError)    from
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-protocol-0.9.3/lib/amq/protocol/table_value_decoder.rb:144:in
`decode_hash'    from
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-protocol-0.9.3/lib/amq/protocol/table_value_decoder.rb:46:in
`decode_array'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-protocol-0.9.3/lib/amq/protocol/table.rb:99:in
`decode'    from
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-protocol-0.9.3/lib/amq/protocol/client.rb:1560:in
`block in decode_properties'    from
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-protocol-0.9.3/lib/amq/protocol/client.rb:1543:in
`each'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-protocol-0.9.3/lib/amq/protocol/client.rb:1543:in
`decode_properties'    from
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-protocol-0.9.3/lib/amq/protocol/frame.rb:142:in
`decode_payload'    from
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-protocol-0.9.3/lib/amq/protocol/frame.rb:115:in
`body_size'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-client-0.9.3/lib/amq/client/async/adapter.rb:675:in
`content_complete?'    from
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-client-0.9.3/lib/amq/client/async/adapter.rb:667:in
`frameset_complete?'    from
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-client-0.9.3/lib/amq/client/async/adapter.rb:518:in
`receive_frame'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/amq-client-0.9.3/lib/amq/client/async/adapters/event_machine.rb:327:in
`receive_data'    from
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in
`run_machine'    from
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in
`run'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/amqp-0.9.6/lib/amqp/connection.rb:38:in
`start'    from client1.rb:7:in `<main>'

Any advice would be greatly appreciated. Maybe someone has an example of
using RabbitMQ Federation with the Ruby-AMQP gem?

Thank you,

Roman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20120702/a6b1bcc4/attachment.htm>


More information about the rabbitmq-discuss mailing list