今のところ、ペイロードとヘッダーを読み取って印刷するだけの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" "value"}}) nil
出力
ジョブステータスの更新: {:status {:id 1}, :metadata #object[java.util.HashMap 0x3cb4bf18 {h1=値}]}