首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring Integration Java DSL中ExecutorChannel错误通道的处理

Spring Integration Java DSL中ExecutorChannel错误通道的处理
EN

Stack Overflow用户
提问于 2016-08-15 23:38:04
回答 1查看 693关注 0票数 1

我想知道如何在Spring Integration Java DSL中仅限制调用者处理executor通道的错误。

例如,在我的用例中,我有一个queue (大小为100以限制输入)供调用者发送事件,轮询器将轮询队列并发送到ExecutorChannel进行异步处理(假设处理是CPU密集型的,并且我们将任务执行器的池大小限制为2)。异步处理的结果将发送回调用者。此外,如果存在用于异步处理的异常抛出。原始调用方将处理异常,而不是让全局错误处理程序来处理它。

我不知道如何在Spring Integration Java DSL中指定一个只有调用者才能看到从ExecutorChannel抛出的错误并以私有方式处理它的通道。

EN

Stack Overflow用户

发布于 2016-08-15 23:46:00

为此,您必须为某些MessageChannel指定errorChannel头,这完全取决于您的调用者。

ExecutorChannel基于MessagePublishingErrorHandler,它的代码如下:

代码语言:javascript
运行
复制
private MessageChannel resolveErrorChannel(Throwable t) {
    Message<?> failedMessage = (t instanceof MessagingException) ?
            ((MessagingException) t).getFailedMessage() : null;
    if (this.defaultErrorChannel == null && this.channelResolver != null) {
        this.defaultErrorChannel = this.channelResolver.resolveDestination(
                IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME);
    }

    if (failedMessage == null || failedMessage.getHeaders().getErrorChannel() == null) {
        return this.defaultErrorChannel;
    }
    Object errorChannelHeader = failedMessage.getHeaders().getErrorChannel();
    if (errorChannelHeader instanceof MessageChannel) {
        return (MessageChannel) errorChannelHeader;
    }
    Assert.isInstanceOf(String.class, errorChannelHeader,
            "Unsupported error channel header type. Expected MessageChannel or String, but actual type is [" +
            errorChannelHeader.getClass() + "]");
    return this.channelResolver.resolveDestination((String) errorChannelHeader);
}

注意有failedMessage.getHeaders().getErrorChannel()的部分。

适用于您的开箱即用解决方案是带有errorChannel选项的@MessagingGateway。这一次使用完全相同的errorChannel头技术,并让处理或重新抛出的异常恰好在该@MessagingGateway的作用域内。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38958251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档