Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring integration 使用imap空闲通道适配器时如何处理连接/身份验证错误_Spring Integration - Fatal编程技术网

Spring integration 使用imap空闲通道适配器时如何处理连接/身份验证错误

Spring integration 使用imap空闲通道适配器时如何处理连接/身份验证错误,spring-integration,Spring Integration,通过使用轮询器上的错误通道,我能够处理和报告imap和pop适配器的连接/身份验证相关错误 我也有一个imap idle,但它没有在该通道上获得这些错误,只是在日志中有一个警告 对于电子邮件空闲适配器,处理和报告类似错误的方法是什么?我猜您的意思是代码的和平: catch (Exception e) { //run again after a delay logger.warn("Failed to execute IDLE task. Will attempt to resub

通过使用轮询器上的错误通道,我能够处理和报告imap和pop适配器的连接/身份验证相关错误

我也有一个imap idle,但它没有在该通道上获得这些错误,只是在日志中有一个警告


对于电子邮件空闲适配器,处理和报告类似错误的方法是什么?

我猜您的意思是代码的和平:

catch (Exception e) { //run again after a delay
        logger.warn("Failed to execute IDLE task. Will attempt to resubmit in " + ImapIdleChannelAdapter.this.reconnectDelay + " milliseconds.", e);
        ImapIdleChannelAdapter.this.receivingTaskTrigger.delayNextExecution();
        ImapIdleChannelAdapter.this.publishException(e);
        }
您可以在日志中看到
WARN

请注意关于
publishException()
的最新一行。这是一个代码:

private void publishException(Exception e) {
    if (this.applicationEventPublisher != null) {
        this.applicationEventPublisher.publishEvent(new ImapIdleExceptionEvent(e));
    }

因此,您需要为该
ImapIdleExceptionEvent
添加一个
EventListener
。例如,您可以使用。

我猜您的意思是代码的和平:

catch (Exception e) { //run again after a delay
        logger.warn("Failed to execute IDLE task. Will attempt to resubmit in " + ImapIdleChannelAdapter.this.reconnectDelay + " milliseconds.", e);
        ImapIdleChannelAdapter.this.receivingTaskTrigger.delayNextExecution();
        ImapIdleChannelAdapter.this.publishException(e);
        }
您可以在日志中看到
WARN

请注意关于
publishException()
的最新一行。这是一个代码:

private void publishException(Exception e) {
    if (this.applicationEventPublisher != null) {
        this.applicationEventPublisher.publishEvent(new ImapIdleExceptionEvent(e));
    }

因此,您需要为该
ImapIdleExceptionEvent
添加一个
EventListener
。例如,您可以使用。

谢谢,我会尝试一下。如何添加自定义头,如“adapter.id”我在imap&pop中有一个,我通过错误通道的头enricher传递适配器id,以了解哪个适配器有问题,因为系统可以有多个imap和/或pop适配器,并且我使用父/子上下文来控制它们。事件执行此操作
super(ImapIdleChannelAdapter.this,e);
。因此,在侦听器端,您可以跟踪
getComponentName()
,以区分逻辑谢谢,我还没有尝试过,但是如果有两个imap空闲适配器实例,其中一个失败了,我会知道是哪一个,这样我就可以在该实例上调用stop,然后删除相关的子ConfigurableApplicationContext(ClassPathXmlApplicationContext)它被附加到父spring上下文。谢谢,虽然我需要做一些其他更改来存储上下文id,但它仍然有效要区分两个imap空闲适配器,正如我可以在ImapIdleChannelAdpater返回的applicationcontextid上回答的那样。谢谢,我将尝试一下。如何添加自定义标头,如“adapter.id”我在imap&pop中有一个,我通过标头enricher为错误通道传递适配器id,以了解哪个适配器作为系统ca出现问题n有多个imap和/或pop适配器,我使用父/子上下文来控制它们。事件执行此操作
super(ImapIdleChannelAdapter.this,e);
。因此,在侦听器端,您可以跟踪
getComponentName()
以区分逻辑。on(namedcomponent)event.getSource()谢谢,我还没有尝试过,但是如果有两个imap空闲适配器实例,其中一个失败了,我会知道是哪一个,这样我就可以在该实例上调用stop,然后删除相关的子ConfigurableApplicationContext(ClassPathXmlApplicationContext)它连接到父spring上下文。谢谢,虽然我需要做一些其他更改来存储上下文id,以区分两个imap空闲适配器,因为我可以在ImapIdleChannelAdpater返回的applicationcontextid上进行回复,但它仍然有效。