【发布时间】:2018-08-30 14:44:36
【问题描述】:
我正在使用 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'
并检查队列中的消息,我注意到以下内容:
- 从 URL 中提取 {id} 并作为 JMS 属性显示
- http 查询参数 (key=value) 可用作 JMS 属性
- 自定义 http 标头(Foo: bar)作为 JMS 属性存在
- 基本身份验证标头 (admin:admin) 作为 JMS 属性存在
但是,我以随机 UUID 作为值的自定义“myHeader”不作为 JMS 属性存在。
我做错了什么?
【问题讨论】: