2
私はrabbitmqキューを設定するためにバニーを使用しています。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、アーランR16B03。
このデフォルト動作はrabbitmqですか?キューバインディングを永続化するにはどうすればよいですか?
キューをバインドしている交換機が永続的になっていますか?キューも同様に?コードを見ると確かにそうだが、例えばweb uiを使って二重チェックすることができるだろうか? – cantSleepNow
@cantSleepNow私はこれをチェックしました。キューは永続的ですが、交換はできません。再起動するたびに、サーバ交換が削除されます。 'x = ch.direct( 'testsync.pcc'、:persistent => true)' – dnsh
これは... 'x = ch.direct( 'testsync.pcc')でなければなりません。 '、:耐久性=> true) '。バニーはパラメータ**の永続**を無視しています。 **耐久性があります**。 – dnsh