在我的代码中,我有一个入站适配器通道和一个服务激活器,我不希望将服务激活器与出站通道连接,
我正在使用的代码
<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" />
答案 0 :(得分:3)
如文档中所述,只需将其设为void返回类型或将其设置为nullChannel
即可如果方法返回结果并且没有定义“output-channel”,则框架将检查请求Message的replyChannel头值。如果该值可用,则会检查其类型。如果是MessageChannel,则回复消息将被发送到该频道。如果是String,则端点将尝试将通道名称解析为通道实例。如果无法解析通道,则抛出DestinationResolutionException。它可以解决,消息将被发送到那里。如果请求消息没有replyChannel头,并且回复对象是Message,则查询其replyChannel头以获取目标目标。这是Spring Integration中用于请求回复消息传递的技术,它也是返回地址模式的一个示例。
如果您的方法返回结果,并且您想要丢弃它并结束流程,则应将输出通道配置为发送到NullChannel。为方便起见,框架注册一个名为nullChannel的框架。有关更多信息,请参见第4.1.6节“特殊通道”。
Service Activator是生成回复消息所不需要的组件之一。如果您的方法返回null或具有void返回类型,则Service Activator在方法调用之后退出,没有任何信号。此行为可以通过AbstractReplyProducingMessageHandler.requiresReply选项控制,在使用XML命名空间进行配置时也会显示为requires-reply。如果该标志设置为true并且该方法返回null,则抛出ReplyRequiredException。