Langohr消息处理程序不在clojure映射中转换amqp头

时间:2016-11-28 06:19:54

标签: clojure langohr

我有一个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}]}

1 个答案:

答案 0 :(得分:0)

它是一个java HashMap而不是一个clojure地图,所以你需要使用.get。例如(.get headers "h1")(注意正在进行java互操作的.)。

相关问题