-
Notifications
You must be signed in to change notification settings - Fork 1
/
messaging.clj
30 lines (24 loc) · 1 KB
/
messaging.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
(ns pedestal.sqs.messaging
(:require [cognitect.aws.client.api :as aws]
[cheshire.core :as json]))
;; Utility AWS SQS Messaging queue
(defn delete-message
[client queue-id receipt-id]
(aws/invoke client {:op :DeleteMessage
:request {:QueueUrl queue-id
:ReceiptHandle receipt-id}}))
(defn receive-message
[client queue-id opts]
(let [resp (aws/invoke client {:op :ReceiveMessage
:request (merge opts
{:QueueUrl queue-id})})
messages (:Messages resp)]
messages))
(defn send-message!
[client queue-urls message]
(doseq [queue-url (if (coll? queue-urls) queue-urls [queue-urls])]
(aws/invoke client {:op :SendMessage
:request {:QueueUrl queue-url
:MessageBody message}})))
;; Utility convert clojure to AWS SQS Messaging queue
(def to-json #(json/generate-string %))