def bind(exchange, opts = {})
      if exchange.respond_to?(:add_route)

        # we can do the binding ourselves
        exchange.add_route opts.fetch(:routing_key, @name), self
      else

        # we need the channel to look up the exchange
        @channel.xchg_bind self, opts.fetch(:routing_key, @name), exchange
      end

      self
    end
def bind(exchange, opts = {})
      if exchange.respond_to?(:add_route)

        # we can do the binding ourselves
        exchange.add_route opts.fetch(:routing_key, @name), self
      else

        # we need the channel to look up the exchange
        @channel.xchg_bind self, opts.fetch(:routing_key, @name), exchange
      end

      self
    end
Bind this exchange to another exchange

 @param [BunnyMock::Exchange,String] exchange Exchange to bind to
 @param [Hash] opts Binding properties

 @option opts [String] :routing_key Custom routing key

 @return [BunnyMock::Exchange] self
 @api public