【问题标题】:multiple inbound-channel-adapter of spring integration using the same channelspring 集成的多个入站通道适配器使用同一通道
【发布时间】:2013-02-02 19:15:56
【问题描述】:

我正在使用 spring 集成的入站通道适配器。我想在两个不同的目录下轮询 - 每个文件类别一个 - 并解析位于那里的文件。我使用的代码是:

<int:channel id="inputChannel"/>

<file:inbound-channel-adapter id="fileInOne"                        
                              directory="myDirOne"
                              auto-create-directory="true"
                              channel = "inputChannel">
    <int:poller id="one" cron="1/10 * * * * *"/>
</file:inbound-channel-adapter>


<file:inbound-channel-adapter id="fileInTwo"                        
                              directory="myDirTwo"
                              auto-create-directory="true"
                              channel = "inputChannel">
    <int:poller id="two" cron="1/10 * * * * *"/>
</file:inbound-channel-adapter>

两个入站通道适配器使用相同的通道。所以我想知道文件是从哪个入站通道适配器加载的。

【问题讨论】:

    标签: spring integration


    【解决方案1】:

    这是我能想到的两种方式:

    一个。将每个流传递给一个标头丰富器,添加一个自定义标头,告诉您从哪个目录开始,然后到 inputChannel。

    <file:inbound-channel-adapter id="fileInOne"                        
                                  directory="myDirOne"
                                  auto-create-directory="true"
                                  channel = "dirOneEnricher">
        <int:poller id="one" cron="1/10 * * * * *"/>
    </file:inbound-channel-adapter>
    
    <int:header-enricher input-channel="dirOneEnricher" output-channel="inputChannel">
        <int:header name="fileCategory" value="dirOneTypeCategory"/> 
    </int:header-enricher>
    

    ..

    b.由于有效载荷是java.io.File,因此您可以使用 API 找出该文件属于哪个目录并采取一些措施。

    【讨论】:

    • 感谢您的回答!我会试试看。我想问点别的。这种配置会影响效率吗?为每个入站通道适配器使用不同的通道更好吗?
    猜你喜欢
    • 2023-03-21
    • 2015-07-11
    • 1970-01-01
    • 2014-12-07
    • 2012-12-17
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2014-05-31
    相关资源
    最近更新 更多