Ruby Rabbit MQ(Bunny)中的消费者太多
我正在通过JMeter向我的应用程序发送大量数据 我的订阅块和发布服务器如下所示:Ruby Rabbit MQ(Bunny)中的消费者太多,ruby,rabbitmq,rabbitmq-exchange,bunny,Ruby,Rabbitmq,Rabbitmq Exchange,Bunny,我正在通过JMeter向我的应用程序发送大量数据 我的订阅块和发布服务器如下所示: BunnyStarter.start_bunny_components cons = BunnyStarter.queue.subscribe do |delivery_info, metadata, payload| method_calling ( payload ) cons.cancel end BunnyStarter.exchange.publ
BunnyStarter.start_bunny_components
cons = BunnyStarter.queue.subscribe do |delivery_info, metadata, payload|
method_calling ( payload )
cons.cancel
end
BunnyStarter.exchange.publish(body.to_json, routing_key: BunnyStarter.queue.name)
还有我的兔女郎课:
def self.start_bunny_components
if @@conn.nil?
@@conn = Bunny.new
@@conn.start
@@ch = @@conn.create_channel
@@queue = @@ch.queue("dump_probe_queue")
@@exchange = @@ch.default_exchange
end
end
问题是,尽管我在调用方法
后调用consumer.cancel
,但在我的Rabbit MQ管理员中,我仍然看到我在大约6分钟内创建了1000个消费者
这是因为我发送的速率和数据量吗
如何改进此问题?我以前见过此问题。它创建1000个消费者的原因是,您正在为每个连接创建通道。最终,您的消费者会因此而在一段时间后关闭 创建的使用者数量不是因为数据,而是因为在使用者中,每个订阅创建一个连接 解决方案: 不要创建多个通道,只创建一个通道,并使用同一通道使用连接数。 我指的是一个连接实例和多个模型实例,这样您就可以为多个模型共享同一个连接。