在我的代码中,我有一个入站适配器通道和一个服务激活器,我不想将服务激活器与出站通道连接起来,

我正在使用的代码

<file:inbound-channel-adapter id="filesIn"
        directory="E:/usmandata/logs/input" filter="onlyLogFiles"
        auto-startup="true">
        <int:poller id="poller" fixed-delay="5000" />
    </file:inbound-channel-adapter>

    <int:service-activator input-channel="filesIn"  ref="handler" />

最佳答案

如文档中所述,只需将其设置为void返回类型或将其设置为nullChannel


  如果该方法返回结果且未定义“输出通道”,则框架将检查请求消息的replyChannel标头值。如果该值可用,它将检查其类型。如果是MessageChannel,则回复消息将发送到该通道。如果它是字符串,则端点将尝试将通道名称解析为通道实例。如果无法解析通道,则将引发DestinationResolutionException。它可以解决,消息将发送到那里。如果请求的消息没有replyChannel标头,并且答复对象是消息,则将其replyChannel标头用于目标目的地。这是Spring Integration中用于请求答复消息传递的技术,也是返回地址模式的示例。
  
  如果您的方法返回结果,并且您想要丢弃它并结束流,则应将输出通道配置为发送到NullChannel。为了方便起见,该框架使用名称nullChannel注册一个。有关更多信息,请参见第4.1.6节“特殊通道”。
  
  服务激活器是不需要生成回复消息的那些组件之一。如果您的方法返回null或返回类型为void,则服务激活器将在方法调用后退出,而不会发出任何信号。可以通过AbstractReplyProducingMessageHandler.requiresReply选项控制此行为,在使用XML名称空间进行配置时,该选项也显示为require-reply。如果该标志设置为true,并且该方法返回null,则将引发ReplyRequiredException。

10-08 01:48