rabbitmq 在服务器重启后删除队列绑定
rabbitmq deletes queue binding after server restart
我正在使用 bunny 来设置 rabbitmq 队列。
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
以上代码创建队列并绑定路由键 'test_cmd'。当我重新启动 rabbitmq 服务器时,队列仍然存在,但队列绑定被删除。
我正在使用 sudo invoke-rc.d rabbitmq-server restart
命令重启 rabbitmq。
兔子 mq 版本:RabbitMQ 3.2.4,Erlang R16B03。
这是rabbitmq的默认行为吗?如何保留我的队列绑定?
队列已保留,但交换未保留。这行代码有问题。
x = ch.direct('testsync.pcc', :persistent => true)
Bunny 不理解参数 persistent。我应该传递 durable 参数。
像这样:
x = ch.direct('testsync.pcc', :durable => true)
现在一切正常。即使在 rabbitmq 重启后绑定仍然存在。
我正在使用 bunny 来设置 rabbitmq 队列。
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
以上代码创建队列并绑定路由键 'test_cmd'。当我重新启动 rabbitmq 服务器时,队列仍然存在,但队列绑定被删除。
我正在使用 sudo invoke-rc.d rabbitmq-server restart
命令重启 rabbitmq。
兔子 mq 版本:RabbitMQ 3.2.4,Erlang R16B03。
这是rabbitmq的默认行为吗?如何保留我的队列绑定?
队列已保留,但交换未保留。这行代码有问题。
x = ch.direct('testsync.pcc', :persistent => true)
Bunny 不理解参数 persistent。我应该传递 durable 参数。 像这样:
x = ch.direct('testsync.pcc', :durable => true)
现在一切正常。即使在 rabbitmq 重启后绑定仍然存在。