首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Bunny gem处理队列中的消息时正常关闭

使用Bunny gem处理队列中的消息时正常关闭
EN

Stack Overflow用户
提问于 2012-08-02 00:57:07
回答 1查看 687关注 0票数 3

我使用Bunny gem通过AMQP消费消息。我的应用程序订阅了队列中的消息,这是一个永无止境的阻塞调用(通过订阅块)。我希望它能在进程中断时正常关闭(例如,终端中的ctrl+c )。正确的做法是什么?如果它正在处理当前消息,我希望它处理当前消息,然后跳出该块。

代码示例:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2014-07-06 23:13:36

我知道这个问题已经有2年的历史了,你现在可能已经想明白了。话虽如此,我处理这件事的方式将是提出一个“我应该辞职吗?”在订阅循环的末尾检查,然后让SIGINT陷阱切换变量。Bunny本身在清理所有AMQP连接方面做得很好,所以你真的只需要担心退出时你自己的部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11764018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档