   {:default 5
    :type Long})
 
+(defconfig sqs-endpoint
+  "By default the SQS client will not explicitly set the SQS endpoint. This
+  configuration is provided for use in situations where explicitly setting
+  the SQS endpoint is desirable or required."
+  {:default nil
+   :type String})
+
+(defconfig sns-endpoint
+  "By default the SNS client will not explicitly set the SNS endpoint. This
+  configuration is provided for use in situations where explicitly setting
+  the SNS endpoint is desirable or required."
+  {:default nil
+   :type String})
+
+(defconfig sqs-extend-policy-remaining-exchanges
+  "When subscribing a queue to a topic, one may override the AWS policy or
+  extend it. CMR's default behaviour for AWS is to not extend the policy
+  of the queue that is bound to the first in a set of exchanges, but to do
+  so for the remaining exchanges.
+
+  When running SQS/SNS locally, however, to keep policy handling simple, we
+  do not want to extend the policies."
+  {:default true
+   :type Boolean})
+
 (defn queue-visibility-timeout
   "Number of seconds SQS should wait after a message is read from a provider queue before making
   it visible to other readers."
   [queue-name]
-  (if (str/includes? queue-name "provider")
+  (if (string/includes? queue-name "provider")
     (provider-queue-visibility-timeout)
     (default-queue-visibility-timeout)))
 

  "Memoized function that returns the queue url for the given name."
  (memoize -get-queue-url))

(defrecord SQSQueueBroker
  ;; A record containig fields related to accessing SNS/SQS exchanges and queues.
  [
   ;; Connection to AWS SNS
   sns-client

   [clj-time.core :as t]
   [clj-time.format :as f]
   [clojure.core.async :as a]
   [clojure.string :as string]
   [cmr.common.config :as cfg :refer [defconfig]]
   [cmr.common.dev.record-pretty-printer :as record-pretty-printer]
   [cmr.common.lifecycle :as lifecycle]
