在 Apache Camel 中,"route()" 在 restful 声明中做什么?
In Apache Camel what does "route()" do in a restful declaration?
尝试 google 与 Camel 相关的“路由”就像尝试 google “the”。浏览文档也没找到,只有一个叫Route的接口。
继承了一些看起来像
的代码
rest("/someRoute")
.description("Some description")
.consumes("text/plain")
.produces("text/plain")
.post()
.route()
.to("direct:toSomewhere");
route() 有什么作用?我试过使用和不使用 route(),但它似乎没有做任何事情。
使用 .route
允许您在您的 rest-definition 中定义新路线。如果您的路线很短,或者如果您只想 process/transform/validate 在将消息发送到您的实际消费者端点之前以某种方式发送消息,它会很方便。
例如
rest("/someRoute")
.id("someRoute")
.description("Some description")
.post()
.consumes("text/plain")
.produces("text/plain")
.route()
.routeId("someRoutePost")
.process(new SomeMessageProcessor())
.to("direct:toSomewhere")
.end()
.endRest()
.get()
.route()
.routeId("someRouteGet")
.setHeader(Exchange.HTTP_RESPONSE_CODE, constant(405))
.setBody(constant("GET not allowed on this route"))
.end()
.endRest()
但是,如果您只想调用直接消费者端点并在那里执行这些操作,您可以这样做。
这完全取决于个人喜好。
thanks, I see if I wanted to say call .log() I would have to put .route() first
是的。 Camel 将 method-chaining 与它的 Java-DSL 一起使用,其中经常需要这样的东西。在定义 Rest 时,大多数方法 return RestDefinition
但如果你仔细观察 .route
方法 returns RouteDefition
相反。
要从路线返回 RestDefition
,可以使用 .endRest()
,因为示例中的 .end()
除了让您更容易看到 RouteDefition 的位置外,实际上没有做任何其他事情区块结束。
尝试 google 与 Camel 相关的“路由”就像尝试 google “the”。浏览文档也没找到,只有一个叫Route的接口。
继承了一些看起来像
的代码 rest("/someRoute")
.description("Some description")
.consumes("text/plain")
.produces("text/plain")
.post()
.route()
.to("direct:toSomewhere");
route() 有什么作用?我试过使用和不使用 route(),但它似乎没有做任何事情。
使用 .route
允许您在您的 rest-definition 中定义新路线。如果您的路线很短,或者如果您只想 process/transform/validate 在将消息发送到您的实际消费者端点之前以某种方式发送消息,它会很方便。
例如
rest("/someRoute")
.id("someRoute")
.description("Some description")
.post()
.consumes("text/plain")
.produces("text/plain")
.route()
.routeId("someRoutePost")
.process(new SomeMessageProcessor())
.to("direct:toSomewhere")
.end()
.endRest()
.get()
.route()
.routeId("someRouteGet")
.setHeader(Exchange.HTTP_RESPONSE_CODE, constant(405))
.setBody(constant("GET not allowed on this route"))
.end()
.endRest()
但是,如果您只想调用直接消费者端点并在那里执行这些操作,您可以这样做。
这完全取决于个人喜好。
thanks, I see if I wanted to say call .log() I would have to put .route() first
是的。 Camel 将 method-chaining 与它的 Java-DSL 一起使用,其中经常需要这样的东西。在定义 Rest 时,大多数方法 return RestDefinition
但如果你仔细观察 .route
方法 returns RouteDefition
相反。
要从路线返回 RestDefition
,可以使用 .endRest()
,因为示例中的 .end()
除了让您更容易看到 RouteDefition 的位置外,实际上没有做任何其他事情区块结束。