Spring integration 具有流量通道的反应式DSL错误处理

Spring integration 具有流量通道的反应式DSL错误处理,spring-integration,spring-integration-dsl,Spring Integration,Spring Integration Dsl,我有一个部分反应流,它从SQS读取数据,执行一些逻辑,保存到DB(R2DBC)。流在反应通道上运行,该通道是SqsMessageDrivenChannelAdapter的入站通道 问题是: handle方法(.handle((有效负载,标头)->validator.validate((Dto)有效负载))中引发的异常未到达通道。errorProcessingFlow未触发,我需要errorProcessingFlow记录并将异常抛出到SimpleMessageListenerContainer

我有一个部分反应流,它从SQS读取数据,执行一些逻辑,保存到DB(R2DBC)。流在反应通道上运行,该通道是
SqsMessageDrivenChannelAdapter
的入站通道

问题是:

handle
方法(
.handle((有效负载,标头)->validator.validate((Dto)有效负载))
中引发的异常未到达
通道。
errorProcessingFlow
未触发,我需要errorProcessingFlow记录并将异常抛出到
SimpleMessageListenerContainer

如果我将
objectChannel
flowErrorChannel
flux
更改为
direct
,但不使用flux频道,则效果与预期相同。对于流量通道,异常甚至不会传播到
SimpleMessageListenerContainer
,因为它不会根据SQS队列配置触发重新驱动,因此仅记录
句柄的异常

以下是异常和流配置:

2021-05-28 12:40:34.772错误59097---[enercainer-2]o.s.integration.handler.LoggingHandler:org.springframework.messaging.MessageHandlingException:消息处理程序[ServiceActivator for[*********]中发生错误
位于org.springframework.integration.support.utils.IntegrationUtils.wrapinHandlingExceptionIfNeeded(IntegrationUtils.java:192)
位于org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:65)
位于org.springframework.integration.dispatcher.AbstractDispatcher.tryoOptimizedDispatch(AbstractDispatcher.java:115)
位于org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:133)
位于org.springframework.integration.dispatcher.UnicastingDispatcher.dispatcher(UnicastingDispatcher.java:106)
位于org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:72)
位于org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:317)
位于org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:272)
位于org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:187)
位于org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:166)
位于org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:47)
位于org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:109)
位于org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutput(AbstractMessageProducingHandler.java:450)
位于org.springframework.integration.handler.AbstractMessageProducingHandler.doProduceOutput(AbstractMessageProducingHandler.java:324)
位于org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput(AbstractMessageProducingHandler.java:267)
位于org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutputs(AbstractMessageProducingHandler.java:231)
位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:140)
位于org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:56)
位于org.springframework.integration.handler.AbstractMessageHandler.onNext(AbstractMessageHandler.java:88)
位于org.springframework.integration.handler.AbstractMessageHandler.onNext(AbstractMessageHandler.java:37)
位于org.springframework.integration.endpoint.ReactiveStreamsConsumer$SubscriberDecorator.hookOnNext(ReactiveStreamsConsumer.java:280)
位于org.springframework.integration.endpoint.ReactiveStreamsConsumer$SubscriberDecorator.hookOnNext(ReactiveStreamsConsumer.java:261)
位于reactor.core.publisher.BaseSubscriber.onNext(BaseSubscriber.java:160)
位于reactor.core.publisher.FluxRefCount$RefCountInner.onNext(FluxRefCount.java:199)
位于reactor.core.publisher.FluxPublish$PublishSubscriber.drain(FluxPublish.java:477)
位于reactor.core.publisher.FluxPublish$PublishSubscriber.onNext(FluxPublish.java:268)
位于reactor.core.publisher.fluxdofinallysubscriber.onNext(FluxDoFinally.java:130)
位于reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:491)
位于reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:299)
位于reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:97)
在org.springframework.integration.channel.FluxMessageChannel.tryEmitMessage(FluxMessageChannel.java:79)上
位于org.springframework.integration.channel.FluxMessageChannel.doSend(FluxMessageChannel.java:68)
位于org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:317)
位于org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:272)
位于org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:187)
位于org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:166)
位于org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:47)
位于org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:109)
位于org.springframework.integration.endpoint.MessageProducerSupport.sendMessage(MessageProducerSupport.java:208)
位于org.springframework.integration.aws.inbound.SqsMessageDrivenChannelAdapter.access$400(SqsMessageDrivenChannelAdapter.java:60)
位于org.springframework.integration.aws.inbound.SqsMessageDrivenChannelAdapter$IntegrationQueueMessageHandler.handleMessageInternal(SqsMessageDrivenChannelAdapter.java:194)
在org.springfra