|
51 | 51 |
|
52 | 52 | (defn- respond*
|
53 | 53 | [{:keys [client queue-url consume-chan]} p message]
|
54 |
| - (deliver p :respond) |
55 |
| - (a/go |
56 |
| - (when consume-chan |
57 |
| - ;; takes a sign and make a space in which next consume can work |
58 |
| - (a/<! consume-chan) |
59 |
| - (log/debugf "takes a sign of message-id:%s" (:message-id message))) |
60 |
| - (a/<! (sqs/delete-message client {:queue-url queue-url |
61 |
| - :receipt-handle (:receipt-handle message)})))) |
| 54 | + (let [already-realized? (realized? p)] |
| 55 | + (deliver p :respond) |
| 56 | + (a/go |
| 57 | + (when (and consume-chan |
| 58 | + (not already-realized?)) |
| 59 | + ;; takes a sign and make a space in which next consume can work |
| 60 | + (a/<! consume-chan) |
| 61 | + (log/debugf "takes a sign of message-id:%s" (:message-id message))) |
| 62 | + (a/<! (sqs/delete-message client {:queue-url queue-url |
| 63 | + :receipt-handle (:receipt-handle message)}))))) |
62 | 64 |
|
63 | 65 | (defn- raise*
|
64 | 66 | [{:keys [client queue-url consume-chan]} p message & [retry-delay]]
|
65 |
| - (deliver p :raise) |
66 |
| - (a/go |
67 |
| - (when consume-chan |
68 |
| - ;; takes a sign and make a space in which next consume can work |
69 |
| - (a/<! consume-chan) |
70 |
| - (log/debugf "takes a sign of message-id:%s" (:message-id message))) |
71 |
| - (let [retry-delay (or retry-delay 0)] |
72 |
| - (a/<! (sqs/change-message-visibility client {:queue-url queue-url |
73 |
| - :receipt-handle (:receipt-handle message) |
74 |
| - :visibility-timeout retry-delay}))))) |
| 67 | + (let [already-realized? (realized? p)] |
| 68 | + (deliver p :raise) |
| 69 | + (a/go |
| 70 | + (when (and consume-chan |
| 71 | + (not already-realized?)) |
| 72 | + ;; takes a sign and make a space in which next consume can work |
| 73 | + (a/<! consume-chan) |
| 74 | + (log/debugf "takes a sign of message-id:%s" (:message-id message))) |
| 75 | + (let [retry-delay (or retry-delay 0)] |
| 76 | + (a/<! (sqs/change-message-visibility client {:queue-url queue-url |
| 77 | + :receipt-handle (:receipt-handle message) |
| 78 | + :visibility-timeout retry-delay})))))) |
75 | 79 |
|
76 | 80 | (defn- heartbeat*
|
77 | 81 | "When heartbeat parameter is set, a heartbeat process start after the first heartbeat"
|
|
0 commit comments