0

我有一条路线:

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}");
4

1 回答 1

0

死信通道不影响响应。来自骆驼文档

Dead Letter Channel 将使用 1 秒延迟最多重新发送 6 次,如果交换失败,它将被记录为 ERROR 级别。

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

errorHandler(deadLetterChannel("..."))

您是否尝试将throwExceptionOnFailure参数设置为true?来自骆驼文档

在远程服务器响应失败的情况下禁用抛出 HttpOperationFailedException 的选项。这使您可以获取所有响应,而不管 HTTP 状态代码如何。

于 2014-05-13T19:48:07.270 回答