gpt4 book ai didi

java - 错误 channel 中的 MessageHandlingException 消息

转载 作者:行者123 更新时间:2023-11-30 06:14:55 25 4
gpt4 key购买 nike

我编写了一个异常处理程序类,它查看默认的 Spring Integration errorChannel对于类型为 Message<TradeProcessingContext> message 的传入消息:

@Slf4j
public class ExceptionHandler {

@Autowired
private ExceptionDAO exceptionDAO;


@ServiceActivator(inputChannel = DEFAULT_ERROR_CHANNEL)
public void handleTradeError(Message<TradeProcessingContext> message) {

TradeProcessingContext tradeProcessingContext = message.getPayload();

if (tradeProcessingContext != null) {
//store in database
}
}

}

我的处理程序实现如下:

@Slf4j
@MessageEndpoint
public class ChildHandler extends ParentHandler {

@Autowired
private SomeDAO someDAO;

@ServiceActivator(inputChannel = INPUT_CHANNEL, outputChannel = DEFAULT_ERROR_CHANNEL)
public Message<TradeProcessingContext> handle(final Event event) {
return process(event);
}

@Override
protected TradeDAO getDAO() {
return someDAO;
}
}

调用父级 process()

public abstract class ParentHandler implements Handler {

@Resource
private SomeService service;


public Message<TradeProcessingContext> process(final Event event) {

TradeProcessingContext tradeProcessingContext = new TradeProcessingContext();

//set initial context

try {
List<Trade> trades = getDAO().findByEventId(event.getEventId());
for (Trade trade : trades) {
tradeProcessingContext.setRef(trade.getRef());
Future<TradeProcessingContext> thread = service.doSomething(trade, tradeProcessingContext);
tradeProcessingContext = thread.get();
}
} catch (Exception e) {
return MessageBuilder.withPayload(tradeProcessingContext).build();
}

return null;
}

我知道我可以获得 org.springframework.messaging.MessageHandlingException: nested exception is java.lang.ClassCastException当类型为Message<MessageHandlingException> message时在handleTradeError() .

我如何改进此方法,以便也解决此类错误或底层 tradeprocessingContext也是从这个类型中提取出来的?

最佳答案

错误 channel 获取具有 Throwable 负载的 ErrorMessage。通常 Throwable 是一个消息处理异常,原始消息位于 failedMessage 属性中,异常位于原因中。

关于java - 错误 channel 中的 MessageHandlingException 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49437312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com