我有一个rest-api,它创建一个资源并将其发送到AMQ队列。
我正在使用camel rest dsl并创建了类似的东西:
rest("/api")
.consumes("application/json").produces("application/json")
.post("/test").type(Test.class)
.route()
.to(ExchangePattern.InOnly, "direct:sendTestAmq")
.endRest()
from("direct:sendTestAmq")
.convertBodyTo(TestProtos.Test.class)
.marshal().protobuf()
.to(ExchangePattern.InOnly, "amq:queue:test.queue");
当我调用端点时,我得到一个对应于protobuf二进制文件的base64响应。
我想获得Test.class json响应。 我认为使用“to(ExchangePattern.InOnly,...)”会允许不修改正文。
这是另一个example,回复是“之后”,我希望它是“之前”。
有人知道我该怎么做吗?
由于
答案 0 :(得分:0)
根据@ClausIbsen的回答,我发现multicast()也为每条路线使用交换副本,但不是窃听,而是默认情况下不是平行的。
我可以通过.to(ExchangePattern.InOnly, "direct:sendTestAmq")
替换multicast().to(ExchangePattern.InOnly, "direct:sendTestAmq", "direct:mock").end()
来实现我的目标。
由于多播将最后一次路由交换作为输出,“direct:mock”是一种除了保留原始主体之外什么都不做的路由。