gpt4 book ai didi

rabbitmq - 使用 Ruby-Amqp 时如何保持 AMQP 连接打开?

转载 作者:行者123 更新时间:2023-12-04 01:44:41 27 4
gpt4 key购买 nike

我正在使用 RabbitMQ 和 ruby-amqp与 Rails。当 Controller 收到消息时,我执行以下操作:

def create 
AMQP.start("amqp://localhost:5672") do |connection|
channel = AMQP::Channel.new(connection)
exchange = channel.direct("")
exchange.publish("some msg", :routing_key => "some key")

EventMachine.add_timer(2) do
exchange.delete
connection.close { EventMachine.stop }
end
end
end
  • 有没有办法保持 AMQP 连接打开,所以我不必调用 start每次请求进来?

  • 我假设打开与 Rabbit MQ 的连接效率低下,但是我还没有找到将代码块传递给持久连接的方法。

    最佳答案

    如果您只想保持 AMQP 连接打开,请尝试设置一个全局变量以保持连接唯一。

    def start_em
    EventMachine.run do
    $connection = AMQP.connect(CONNECTION_SETTING) unless $connection
    yield
    end
    end

    def publish(message, options = {})
    start_em {
    channel = AMQP::Channel.new($connection)
    exchange = channel.direct('')
    exchange.publish(message, {:routing_key => 'rails01'}.merge(options))
    EventMachine.add_timer(1) { exchange.delete }
    }
    end

    并且不要忘记在发布消息后删除 channel 。

    关于rabbitmq - 使用 Ruby-Amqp 时如何保持 AMQP 连接打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10827666/

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