(ns auto-ap.background.requests (:require [amazonica.aws.sqs :as sqs] [auto-ap.import.intuit :as i] [auto-ap.import.plaid :as p] [auto-ap.import.yodlee :as y] [auto-ap.import.yodlee2 :as y2] [auto-ap.utils :refer [heartbeat]] [clojure.tools.logging :as log] [config.core :refer [env]] [mount.core :as mount] [yang.scheduler :as scheduler])) (def queue-url (:requests-queue-url env)) (defn process-1 [] (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) (i/import-intuit) (= ":yodlee" body) (y/import-yodlee) (= ":yodlee2" body) (y2/import-yodlee2) (= ":plaid" body) (p/import-plaid))))) (defn fake-message [] (sqs/send-message {:queue-url (:requests-queue-url env) :message-body ":intuit"} )) (mount/defstate request-listener :start (scheduler/every (* 1000 30) (heartbeat process-1 "request-poller")) :stop (scheduler/stop request-listener))