def bind(queue_name, exchange_name, *routing_keys, &block)
      queue = create_queue(queue_name, exchange_name,
                           queue_options: {durable: true},
                           routing_keys:  routing_keys)
      subscribe(queue, &block) if block_given?
    end
def bind(queue_name, exchange_name, *routing_keys, &block)
      queue = create_queue(queue_name, exchange_name,
                           queue_options: {durable: true},
                           routing_keys:  routing_keys)
      subscribe(queue, &block) if block_given?
    end
Initialize a new BunnyClient instance. Note that a connection is not established until any other method is called

 @param [String, Hash] _url Server URL or options hash
 @param [Hash] _bunny_options optional Bunny connection options
 @see Bunny.new for connection options
 Convenience method that finds or creates a named queue, binds to an exchange, and subscribes to messages.
 If a block is provided, it will be called by the consumer each time a message is received.

 @param [String] queue_name name of the queue
 @param [String] exchange_name name of the AMQP exchange. Note that existing exchanges must be declared as Topic
   exchanges; otherwise, an error will occur
 @param [Array<String>] routing_keys list of routing keys to be bound to the queue for the specified exchange.
 @yieldparam [String] payload message text
 @return [Bunny::Consumer] Bunny consumer interface