我需要一个薄包装功能莲的sqs/receive-message,以添加默认的等待时间.该函数需要一个队列URL,然后接受任意数量的可选命名参数,这些参数应该传递给sqs/receive-message未触及的.我想这样称呼它:
(my-receive-message "https://sqs.us-east-1.amazonaws.com/123/test-q"
:max-number-of-messages 10
:delete true)
Run Code Online (Sandbox Code Playgroud)
这应该会导致这样的调用sqs/receive-message:
(sqs/receive-message :queue-url "https://sqs.us-east-1.amazonaws.com/123/test-q"
:wait-time-seconds 20
:max-number-of-messages 10
:delete true)
Run Code Online (Sandbox Code Playgroud)
这是我发现自己想要经常做的事情,但我还没有找到一个好方法.这是否有惯用的方法?
使用apply合并的参数.
(defn my-receive-message
[url & {:as args}]
(apply sqs/receive-message (-> {:queue-url url
:wait-time-seconds 20}
(merge args)
seq
flatten)))
Run Code Online (Sandbox Code Playgroud)