Files
integreat/src/clj/auto_ap/background/requests.clj

45 lines
1.5 KiB
Clojure

(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))