-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.clj
31 lines (26 loc) · 942 Bytes
/
utils.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
(ns sqs-consumer.utils
(:require [clojure.data.json :as json]
[amazonica.aws.sqs :as sqs]))
(defn add-timestamp [message outer-message]
"Add timestamp from the SNS metadata if it doesn't already exist"
(if (:timestamp message)
message
(assoc message :timestamp (:Timestamp outer-message))))
(defn decode-sns-encoded-json [message-body]
(let [outer-message (json/read-str message-body :key-fn keyword)]
(-> outer-message
:Message
(json/read-str :key-fn keyword)
(add-timestamp outer-message))))
(defn with-message-decoder [process-fn decoder]
(fn [{:keys [message-body] :as message}]
(-> message
(assoc :message (decoder message-body))
process-fn)))
(defn with-error-handler [process-fn error-handler]
(fn [message]
(try
(process-fn message)
(catch Exception ex
(error-handler ex)))))
(defn uuid [] (str (java.util.UUID/randomUUID)))