3

AMQP 経由でメッセージを消費するために Bunny gem を使用しています。私のアプリはキュー内のメッセージをサブスクライブしています。これは、(サブスクライブ ブロックを介した) 終わりのないブロック呼び出しです。プロセスが中断されている間 (たとえば、ターミナルで ctrl+c)、正常にシャットダウンしたいと思います。それを行う適切な方法は何ですか?現在のメッセージを処理している場合は、現在のメッセージを処理してから、ブロックから飛び出してほしいと思います。

コード例:

trap("INT") do 
  puts "Stopping now"
  Indexer.client.stop # ???
end

module Indexer
  extend self

  def run    
    client.queue('indexer.index').subscribe do |msg|
      # omitted
    end
  end

  def client
    @client ||= Bunny.new.tap(&:start)
  end

end

Indexer.run # runs forever
4

1 に答える 1