(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.import.intuit :as i] [auto-ap.import.plaid :as p] [unilog.context :as lc] [auto-ap.import.yodlee :as y] [auto-ap.import.yodlee2 :as y2] )) (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 (sqs/delete-message {:queue-url queue-url :receipt-handle receipt-handle} ) (log/infof "processing message %s with body %s" message-id body ) (cond (= ":intuit" body) (try (i/import-intuit) (catch Exception e (log/error e))) (= ":yodlee" body) (try (y/import-yodlee) (catch Exception e (log/error e))) (= ":yodlee2" body) (try (y2/import-yodlee2) (catch Exception e (log/error e))) (= ":plaid" body) (try (p/import-plaid) (catch Exception e (log/error e)))) )))) (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))