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

Spring集成错误处理过程中的MessageTransformation异常

太叔英锐
2023-03-14

我有一个http inboundgateway,并定义了一个通往网关的错误通道。

<int-http:inbound-gateway 
    request-channel="requestChannel"  reply-channel="replyChannel" 
        supported-methods="POST" request-payload-type="com.test.RequestWsDTO"
    path="/trips/modify" error-channel="errorChannel" >
    <int-http:request-mapping consumes="application/json" produces="application/json" />
</int-http:inbound-gateway>
<int:transformer id="segmentCancelTransformer" ref="segmentCancelTransformerBean" input-channel="segmentCancelChannel"
             method="transform" output-channel="rcsChannel"/>
    <beans:bean id="segmentCancelTransformerBean" class="com.test.SegmentCancelRequestTransformer" />
   <int:service-activator input-channel="errorChannel" ref="exceptionhandler" method="createErrorResponse"/>
<beans:bean id="exceptionTransformer" class="com.test.ExceptionHandler" />
public  ErrorDTO createErrorResponse(ErrorMessage msg) {
        System.out.println("Exception occured "+msg.getPayload());
        ErrorDTO dto=new ErrorDTO ();
      ......................

异常消息StackTrace:

Exception occured org.springframework.integration.transformer.MessageTransformationException: Failed to transform Message; nested exception is org.springframework.messaging.MessageHandlingException: nested exception

我在这里做错了什么?

共有1个答案

窦成荫
2023-03-14

这真的很正确,也很有用。首先,您处理消息传递,其中松散耦合是组件之间的首要原则。另一个优点是将FailedMessage设置为MessagingException的属性,您可以使用该属性来确定问题。

由于错误可能来自另一个线程,因此很难通过一个自定义异常来确定哪里出了问题。无论如何,您总是可以在堆栈跟踪中找到自己的原因。

 类似资料:
  • 问题内容: 我具有以下Spring Integration配置,该配置允许我从MVC Controller调用网关方法并让控制器返回,而集成流将在不阻塞控制器的单独线程中继续进行。 但是,我无法弄清楚如何使我的错误处理程序为该异步流工作。我的网关定义了错误通道,但是由于某种原因我的异常没有到达。相反,我看到被调用了。 网关: 为了查看我的错误处理程序正在处理的异步集成流程中发生的异常,我该怎么办?

  • 在Spring integration中,我必须处理动态通道创建,但当我调试应用程序时,我看到不同通道之间的“阻塞”问题。 我知道是一个公共通道,在父上下文中共享,但如何为每个子上下文开发一个完整的独立场景?。公共网关是问题所在吗? 我在Spring integration flow async中看到了post错误处理,但对于每个子级,我都有一个完整的分离环境,我希望利用这些动态分离的优势。这可能

  • 我有三种不同的系统。我使用Spring integration来同步所有这些系统中的数据。 系统2将调用服务方法来持久化数据,如果请求有效,则返回响应,否则抛出异常 我需要发送服务方法响应到系统1和系统3,只有当操作成功。调用服务方法后,根据服务方法响应,使用Transformer生成对系统3的请求。在transformer之后,我将请求放入mq队列。 更新的JMS出站代码 如果服务类失败,我需要

  • 场景可能是:我的期望可能是批量10个数据点,我想对{failed 5,pass 5}或其他什么给出响应。 我的逻辑是将批处理拆分为数据元素并进行验证 成功的验证将发送给aggreagtor, 失败的验证将抛出错误并通过错误通道拾取。 收件人列表路由器将错误通道作为输入通道,并连接2个过滤器,目的是过滤某些类型的错误直接发送响应(与用户输入无关的信息-服务器错误等),某些类型的客户端错误将转到聚合器

  • 如果spring集成webflux流中发生异常,则异常本身(带有stacktrace)通过MessagePublishingErrorHandler作为有效负载发送回调用方,该处理器使用来自“errorChannel”头的错误通道,而不是默认错误通道。 如何设置类似于WebExceptionHandler的错误处理程序?我想生成一个Http状态代码,并可能生成一个DefaultErrorAttri

  • 我试图用spring Boot开发一个应用程序。我被困在管理应用程序的异常/错误上。到目前为止,我有服务层和控制器,我已经创建了特定于服务类的异常。对于。(如)异常类是。服务抛出各自的。我被困在如何处理控制器中的异常/错误,如果那里有异常?特别针对api方法调用的格式不正确的输入。我正在读取控制器的输入。我应该把它包括在服务中吗? 所有服务异常都以500个内部应用程序错误的形式返回HTTP代码。我