diff --git a/Gemfile.lock b/Gemfile.lock index 1fac58e..7ed3643 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - rabbit_carrots (1.1.0) + rabbit_carrots (1.1.1) bunny (>= 2.22) connection_pool (>= 2.4) diff --git a/lib/rabbit_carrots/core.rb b/lib/rabbit_carrots/core.rb index 1133fbb..a5f665f 100644 --- a/lib/rabbit_carrots/core.rb +++ b/lib/rabbit_carrots/core.rb @@ -79,7 +79,15 @@ module RabbitCarrots def run_task(queue_name:, handler_class:, routing_keys:, queue_arguments: {}, exchange_name: nil, kill_to_restart_on_standard_error: false) RabbitCarrots::Connection.instance.channel.with do |channel| - exchange = channel.topic(exchange_name || RabbitCarrots.configuration.rabbitmq_exchange_name, durable: true) + exchange_name ||= RabbitCarrots.configuration.rabbitmq_exchange_name + + begin + # Try to passively read an existing exchange without declaring it + exchange = channel.topic(exchange_name, passive: true) + rescue Bunny::NotFound + # If the exchange does not exist, declare it + exchange = channel.topic(exchange_name, durable: true) + end logger.info "Listening on QUEUE: #{queue_name} for ROUTING KEYS: #{routing_keys}" queue = channel.queue(queue_name, durable: true, arguments: queue_arguments) diff --git a/lib/rabbit_carrots/version.rb b/lib/rabbit_carrots/version.rb index c02111d..163514f 100644 --- a/lib/rabbit_carrots/version.rb +++ b/lib/rabbit_carrots/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module RabbitCarrots - VERSION = '1.1.0' + VERSION = '1.1.1' end