当前位置: 首页 > 知识库问答 >
问题:

camel error handler/deadLetterChannel REST响应

戎俊
2023-03-14

我有一个Camel restendpoint(Jetty ),它验证并处理传入的请求。除了特定的异常处理程序(onException)之外,它还使用了DLQ错误处理程序(errorHandler(deadLetterChannel...)),其被设置为重试3次-如果不成功,则消息被移动到DLQ。

我的问题是,如果一个意外的异常发生了,我如何向客户端返回一个用户友好的错误消息,而不是完整的异常体?我在errorHandler上缺少一些配置吗?我试图在camel单元测试(DeadLetterChannelHandledExampleTest)和camel in action 2(第11章)中找到一些例子,但似乎都没有针对这种场景的具体例子。

代码是:

.from(ROUTE_URI) .errorHandler(deadLetterChannel(“{{activemq.webhook.dlq.queue}}”) .onPrepareFailure(new FailureProcessor()) .maximumRedeliveries(3) .redeliveryDelay(1000)) .bean(ParcelProcessor.class, “process”);

谢谢你的帮助!

共有1个答案

海景曜
2023-03-14

使用第二个路由作为DLQ,例如< code>direct:dead,然后首先将消息发送到真实的DLQ,然后进行消息转换以返回友好的响应。

errorHandler(deadLetterChannel("direct:dead")

from("direct:dead")
  .to("{{activemq.webhook.dlq.queue}}")
  .transform(constant("Sorry something was wrong"));
 类似资料:
  • 当一个应用在处理完一个请求后, 这个应用会生成一个 response 响应对象并把这个响应对象发送给终端用户 这个响应对象包含的信息有 HTTP 状态码,HTTP 头和主体内容等, 从本质上说,网页应用开发最终的目标就是根据不同的请求去构建这些响应对象。 在大多数实际应用情况下,你应该主要地去处理 response 这个 应用组件, 在默认情况下,它是一个继承自 yii\web\Response

  • CabalPHP 的请求(Request)和响应(Response)对象依赖 zendframework/zend-diactoros 实现了 PSR-7标准 psr/http-message 中的 Psr\Http\Message\ServerRequestInterface和Psr\Http\Message\ResponseInterface 的全部接口,同时也扩展了自己的一些实用方法方便使用

  • 在 Hyperf 里可通过 Hyperf\HttpServer\Contract\ResponseInterface 接口类来注入 Response 代理对象对响应进行处理,默认返回 Hyperf\HttpServer\Response 对象,该对象可直接调用所有 Psr\Http\Message\ResponseInterface 的方法。 注意 PSR-7 标准为 响应(Response) 进

  • 响应对象封装了从服务器返回到客户端的所有信息。在HTTP协议中,这些信息是包含在从服务器传输到客户端的HTTP头信息或响应的消息体中。

  • Response对象的属性。 Response.url 最终的URL。 Response.text 响应内容,以unicode为单位。 如果Response.encoding是None且chardet模块可用,则将猜测内容的编码。 Response.content 响应内容,以字节为单位。 Response.doc 一个PyQuery响应的内容的对象。链接默认为绝对链接。 请参阅PyQuery的文

  • 我试图用制作一个响应线图。 我用这个MWE重现了我的尝试: 如果我让浏览器更宽,线条图会像你期望的那样响应,填满空间。 我的问题是,如果我使浏览器变窄,图形不会像我使其变宽时那样调整大小以填充浏览器宽度的100%。对于新的浏览器宽度来说,它仍然太宽。有趣的是,在刷新时,图形总是占据浏览器的100%。 把浏览器做宽做窄,如何让图占据浏览器的100%?

  • 我用IntelliJ创建了一个非常简单的流测试。 IntelliJ无法完成测试,并给了我错误 这导致假设响应程序流不执行任何操作。 启动器流被执行。我可以看到这一点,因为命令显示在日志中。但是,我不知道响应器流是否从未由发起方流启动,或者只是没有响应。也许你可以帮我。 谢谢

  • 主要内容:HTTP响应完整格式HTTP响应完整格式 HTTP的响应也由三部分组成(响应行+响应头+响应体): 以下是一个实际的HTTP响应示例: ①报文协议及版本; ②状态码及状态描述; ③响应报文头,也是由多个属性组成; ④响应报文体,即我们真正要的“干货”。