我正在使用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'
并检查队列中的消息,我注意到以下内容:
但是,我的自定义“myHeader”以随机UUID为值, NOT 作为JMS属性存在。
我做错了什么?
答案 0 :(得分:0)
您正在使用Processor
来设置标头,因此您应该按原样设置标头值。你应该不使用常量,例如
exchange.getIn().setHeader("myHeader", UUID.randomUUID());
作为其简单的常规Java代码。
请注意,JMS规范禁止JMS属性中的某些类型(也称为Camel头)。有以下详细信息:http://camel.apache.org/jms