私は Camel で遊んでいます。簡単なテストケースとして、着信メッセージにヘッダーを追加し、それを JMS キュー (activemq) に保存したいと考えています。これは、REST DSL を使用したコードです。
rest("/query-set")
.id("queryset-route")
.get("{id}")
.route()
.process((exchange) -> {
exchange.getIn().setHeader("myHeader", constant(UUID.randomUUID()));
})
.setHeader(Exchange.HTTP_RESPONSE_CODE, constant(200))
.endParent()
.marshal().json(JsonLibrary.Jackson)
.to("jms:queue:querysetRequests?exchangePattern=InOnly");
HTTPie (httpie.org) で GET を実行すると、次のようになります。
http -a admin:admin GET http://localhost:8080/camel/query-set/someId?key=value 'Foo:bar'
キュー内のメッセージを調べると、次のことがわかります。
- {id} は URL から抽出され、JMS プロパティとして表示されます
- http クエリ パラメータ (key=value) は JMS プロパティとして利用可能
- カスタム http ヘッダー (Foo: bar) は JMS プロパティとして存在します。
- 基本認証ヘッダー (admin:admin) は JMS プロパティとして存在します
しかし、値としてランダムな UUID を持つ私のカスタム 'myHeader' は、 JMS プロパティとして存在しません。
私は何を間違っていますか?