我有一个langohr消息处理程序,它只是读取有效负载和标题并立即打印它们。麻烦的是,当我在交易所发布消息时,我无法按照文档(获取标题" h1")查询标题,也不能查看本机的clojure映射。我在这里做错了什么?
(defn status-handler [ch {:keys [headers]} ^bytes payload]
(let [data (String. payload "UTF-8")
status {:status (json/read-str data :key-fn keyword)
:metadata headers}]
(println "job status update: " status)))
发布带标题的邮件
用户 => (发布ch" some.topic.exchange"" key1"" {\" id \":1}" {:headers { " h1""价值"}}) 零
输出
作业状态更新:{:status {:id 1} ,: metadata #object [java.util.HashMap 0x3cb4bf18 {h1 = value}]}
答案 0 :(得分:0)
它是一个java HashMap而不是一个clojure地图,所以你需要使用.get
。例如(.get headers "h1")
(注意正在进行java互操作的.
)。