(ns auto-ap.background.requests (:require [amazonica.aws.sqs :as sqs] [config.core :refer [env]] [mount.core :as mount] [yang.scheduler :as scheduler] [clojure.tools.logging :as log] [auto-ap.intuit.import :as i] [unilog.context :as lc] [auto-ap.yodlee.import :as y])) (def queue-url (:requests-queue-url env)) (defn process-1 [] (lc/with-context {:source "Request poller"} (log/info "Checking SQS...") (let [[{:keys [message-id receipt-handle body]}] (:messages (sqs/receive-message {:queue-url queue-url :wait-time-seconds 1 :count 1}))] (when message-id (log/infof "processing message %s with body %s" message-id body ) (cond (= ":intuit" body) (try (i/upsert-transactions) (catch Exception e (log/error e))) (= ":yodlee" body) (try (y/do-import) (catch Exception e (log/error e))) (= ":yodlee2" body) (try (y/do-import2) (catch Exception e (log/error e)))) (sqs/delete-message {:queue-url queue-url :receipt-handle receipt-handle} ))))) (defn fake-message [] (sqs/send-message {:queue-url (:requests-queue-url env) :message-body ":intuit"} )) (mount/defstate request-listener :start (scheduler/every (* 1000 30) process-1) :stop (scheduler/stop request-listener))