我正在玩 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 属性存在。
我究竟做错了什么?