Apache Camel 路由找不到端点
Apache Camel Route cannot find Endpoint
我像这样为我的应用程序创建了一个 cxf 路由:
from("cxfrs:{{url}}?resourceClasses=MyImpl&bindingStyle=SimpleConsumer")
.to("${header.operationName}").end();
from("direct:{{getUser}}")
.bean("userImpl", "getUserByName")
.marshal().json(JsonLibrary.Jackson)
.to("log:foo");
from("direct:{{login}}")
.bean("userImpl", "loginUser")
.marshal().json(JsonLibrary.Jackson)
.to("log:foo");
如果我尝试在处理器中获取我的 operationName,我可以获取它,但如果我调用此路由,我会收到以下消息:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Error 500 No consumers available on endpoint: Endpoint[direct://$%7Bheader.operationName%7D]. Exchange[ID-NBSPO049-64311-1498773394077-0-2] while invoking public java.lang.String com.itau.ea4.implementacao.UserImpl.loginUser(java.lang.String,java.lang.String) with params [teste, 1234].</title>
</head>
<body>
<h2>HTTP ERROR 500</h2>
<p>Problem accessing /user/login. Reason:
<pre> No consumers available on endpoint: Endpoint[direct://$%7Bheader.operationName%7D]. Exchange[ID-NBSPO049-64311-1498773394077-0-2] while invoking public java.lang.String com.itau.ea4.implementacao.UserImpl.loginUser(java.lang.String,java.lang.String) with params [teste, 1234].</pre>
</p>
<hr>
<i>
<small>Powered by Jetty://</small>
</i>
<hr/>
</body>
我的路线有什么问题?
为什么我的header不能被识别?
问题出在:
.to("${header.operationName}")
"to(...)" 不支持动态数据,因此在您的情况下它实际上尝试发送到端点 "direct:{header.operationName}".
要使用来自 header 的动态值,您可以将 toD(来自 Camel 2.19)或 recipientsList 与一个收件人(2.19 之前的 Camel)一起使用
我像这样为我的应用程序创建了一个 cxf 路由:
from("cxfrs:{{url}}?resourceClasses=MyImpl&bindingStyle=SimpleConsumer")
.to("${header.operationName}").end();
from("direct:{{getUser}}")
.bean("userImpl", "getUserByName")
.marshal().json(JsonLibrary.Jackson)
.to("log:foo");
from("direct:{{login}}")
.bean("userImpl", "loginUser")
.marshal().json(JsonLibrary.Jackson)
.to("log:foo");
如果我尝试在处理器中获取我的 operationName,我可以获取它,但如果我调用此路由,我会收到以下消息:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Error 500 No consumers available on endpoint: Endpoint[direct://$%7Bheader.operationName%7D]. Exchange[ID-NBSPO049-64311-1498773394077-0-2] while invoking public java.lang.String com.itau.ea4.implementacao.UserImpl.loginUser(java.lang.String,java.lang.String) with params [teste, 1234].</title>
</head>
<body>
<h2>HTTP ERROR 500</h2>
<p>Problem accessing /user/login. Reason:
<pre> No consumers available on endpoint: Endpoint[direct://$%7Bheader.operationName%7D]. Exchange[ID-NBSPO049-64311-1498773394077-0-2] while invoking public java.lang.String com.itau.ea4.implementacao.UserImpl.loginUser(java.lang.String,java.lang.String) with params [teste, 1234].</pre>
</p>
<hr>
<i>
<small>Powered by Jetty://</small>
</i>
<hr/>
</body>
我的路线有什么问题? 为什么我的header不能被识别?
问题出在:
.to("${header.operationName}")
"to(...)" 不支持动态数据,因此在您的情况下它实际上尝试发送到端点 "direct:{header.operationName}".
要使用来自 header 的动态值,您可以将 toD(来自 Camel 2.19)或 recipientsList 与一个收件人(2.19 之前的 Camel)一起使用