3

I am using bunny to setup rabbitmq queue.

namespace :rabbitmq do
  desc 'Setup routing'
  task :setup_test_commands_queue do
    require 'bunny'

    conn = Bunny.new(ENV['SYNC_AMQP'], read_timeout: 10, heartbeat: 10)
    conn.start

    ch = conn.create_channel

    # get or create exchange
    x = ch.direct('testsync.pcc', :persistent => true)

    # get or create queue (note the durable setting)
    queue = ch.queue('test.commmands', :durable => true, :ack => true, :routing_key => 'test_cmd')

    # bind queue to exchange
    queue.bind(x, :routing_key => 'test_cmd')

    conn.close
  end
end

Above code creates queue and binds a routing key 'test_cmd'. When I restart the rabbitmq server, the queue persists, but queue binding gets deleted.

I am using sudo invoke-rc.d rabbitmq-server restart command to restart rabbitmq.

Rabbit mq version : RabbitMQ 3.2.4, Erlang R16B03.

Is this default behaviour of rabbitmq? How can I persist my queue binding?

dnsh
  • 3,516
  • 2
  • 22
  • 47
  • Are you sure that the exchange to which you're binding the queue is persistent? The queue as well? Looking at the code it certainly seems so,but could you double check, for example using web ui? – cantSleepNow Apr 03 '16 at 20:05
  • @cantSleepNow I checked this. Queue is persistent but exchange is not. Each time I restart the server exchange gets deleted. I think there is something wrong with this line : `x = ch.direct('testsync.pcc', :persistent => true)` – dnsh Apr 04 '16 at 01:16
  • Got this... It should be `x = ch.direct('testsync.pcc', :durable => true)`. bunny is ignoring parameter **persistent**. It should be **durable**. – dnsh Apr 04 '16 at 01:18

1 Answers1

2

The queue was persisted but exchange was not. There was problem with this line of code.

x = ch.direct('testsync.pcc', :persistent => true)

Bunny does not understand parameter persistent. I should have passed durable parameter. Like this :

x = ch.direct('testsync.pcc', :durable => true)

Now everything works fine. Even after rabbitmq restart binding is persisted.

dnsh
  • 3,516
  • 2
  • 22
  • 47