骆驼死信频道

时间:2014-05-12 05:13:16

标签: java apache-camel dead-letter

我有一条路线:

from("restlet://RestletBean/{id}?restletMethod=GET")
   .setHeader(Exchange.HTTP_METHOD, constant("GET"))
   .setHeader(Exchange.HTTP_URI, simple("http://x.y.z.com?id={header.id}"))
   .to("http://dummyHost")

当我没有给出适当的输入时(id在这种情况下,它被用作to路由中的URI参数)。 to路由将以错误页面回复我。哪个没有发生。相反,即使在使用死信通道错误处理程序处理后,仍有一个空白页:

from("restlet://RestletBean/{id}?restletMethod=GET").
    .setHeader(Exchange.HTTP_METHOD, constant("GET"))
    .setHeader(Exchange.HTTP_URI, simple("http://x.y.z.com?id={header.id}"))
    .to("http://dummyHost")
    .errorHandler("http://x.y.z.com?id={header.id}");

1 个答案:

答案 0 :(得分:0)

死信通道不会影响响应。来自Camel doc

  

死信频道将使用1秒延迟重新发送6次,如果交换失败则会以ERROR级别记录。

顺便说一下,你没有在错误处理程序中正确定义死信通道。它应该是:

errorHandler(deadLetterChannel("..."))

您是否尝试将throwExceptionOnFailure参数设置为true?来自Camel doc

  

如果来自远程服务器的响应失败,则禁用抛出HttpOperationFailedException的选项。这使您可以获得所有响应,无论HTTP状态代码如何。