gpt4 book ai didi

ruby - 使用 Bunny gem 处理来自队列的消息时正常关闭

转载 作者:数据小太阳 更新时间:2023-10-29 08:13:12 24 4
gpt4 key购买 nike

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

代码示例:

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

最佳答案

我知道这个问题已有 2 年历史,您现在可能已经想通了。也就是说,我处理这个问题的方式是提出“我应该退出吗?”在你的订阅循环结束时检查,然后让你的 SIGINT 陷阱切换变量。 Bunny 本身非常擅长清理所有 AMQP 连接的东西,所以你真的只需要担心退出时你自己的部分。

关于ruby - 使用 Bunny gem 处理来自队列的消息时正常关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11764018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com