您好我是使用camel的新手..我在这里遇到两个问题:
1)我在一条骆驼路线上实施了2个serviceCalls。我对serviceCall的理解是,它将解析VIP的主机和端口(我正在尝试解析我的AWS实例的Eureka VIP),并将结果设置为头CamelServiceCallServiceHost和CamelServiceCallServicePort。
我的路线如下所示:
from(fromUri).routeId("routeid").description(
"This route takes SQS message")
.unmarshal()
.json(JsonLibrary.Jackson, SQSMessage.class).process(sqsMessageProcessor)
.setHeader(Exchange.HTTP_METHOD,
constant(org.apache.camel.component.http4.HttpMethods.GET))
// 1st Service call
.setBody().constant(null).setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.GET))
.hystrix().hystrixConfiguration().executionTimeoutInMilliseconds(hystrixTimeout).end()
.serviceCall().name("the Eureka VIP of the 1st call").expression()
.simple("http4:${header.CamelServiceCallServiceHost}:${header.CamelServiceCallServicePort}"
+ "< -- the path and parameters for the call goes here --->")
.end()
.unmarshal().json(JsonLibrary.Jackson, ResponseClass1.class)
.process(FirstServiceCallProcessor)
// 2nd Service call
.setBody().constant(null)
.setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.GET))
.serviceCall().name("the Eureka VIP of the 2nd call").expression()
.simple("http4:${header.CamelServiceCallServiceHost}:${header.CamelServiceCallServicePort}"
+ "< -- the path and parameters for the call goes here --->")
.end()
.unmarshal().json(JsonLibrary.Jackson, ResponseClass2.class)
.process(SecondServiceCallProcessor)
我的问题是,我的第一次服务电话工作正常,我得到了预期的响应。但是在执行第二个服务调用时,我发现已解析的主机和端口与先前的服务调用相同。我的理解是第二个serviceCall没有成功执行,标题来自第一个服务调用中设置的值。
为什么会这样。
如果有人能够提供有关serviceCall如何解析主机和端口的一些见解,我也会很高兴。
2)我也在我的路线中实现了hystrix(正如你在代码中看到的那样)。我注意到的是,当我使用hystrix时,如果之后路径中的任何地方出现错误或故障,我不会收到任何异常日志。为什么不记录异常。通过删除hystrix实现,我知道第二个服务调用无法正常工作。只有在那之后才能看到抛出异常的日志。
答案 0 :(得分:0)
我们最近发现了问题。
在进行第二次服务呼叫之前,您必须删除由骆驼服务呼叫设置的标头。这些可以在“ ServiceCallConstants”界面中找到
以下示例显示如何删除与服务调用相关的所有标头。这应该在进行第二次服务调用之前完成:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<div id="divNumbers">
<p>One</p> <p>Two</p> <p>Three</p><p>Four</p> <p>Five</p>
</div>
<button type="button" id="btnNumberPs">Toggle Numbers</button>