2016-11-28 6 views
0

私はlangohrメッセージハンドラを持っています。単にペイロードとヘッダーを読み込み、今のところそれらを印刷しています。問題は、私が交換所にメッセージを公開しているときに、私は文書化された(ヘッダ "h1"を得る)クエリヘッダも、それもネイティブクロージャマップではないということです。私はここで間違って何をしていますか?Langohrメッセージハンドラがclojureマップのamqpヘッダを変換していません

(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))) 

ヘッダ

ユーザ =でメッセージを発行>( "KEY1" "{\" のID \ ":1}" CH "some.topic.exchange" を公開{:ヘッダー{ "H1" "値"}}) ゼロ

出力

ジョブステータス更新:{:{ステータス:ID 1}、:メタデータ#object [java.util.HashMapを0X 3cb4bf18 {h1 = value}]}

答えて

0

これはjava HashMapでクロージャーマップではないので、.getを使用する必要があります。例えば(.get headers "h1")(java相互運用を行っている.に注意してください)。

関連する問題