2016-12-05 12 views
0

ファイルAとBをリモートフォルダに順次コピーする必要があります。 BはAが送信された後にのみ送信されることが重要です。少なくとも同時に、ただし以前は送信しないでください。 私はこの文書を読んだことがありますが、明確ではありません。私の考えは、2つのメッセージを同じチャンネルに入れることです。しかし、私はこれらの2つのメッセージにリンクされたファイルが順番に送信されるかどうかわかりません。SFTP順にファイルをコピーする方法(Spring統合)?

@Component 
public class JobExportExecutionsRouter { 
    ... 
    @Autowired 
    private MessageChannel sftpIncrExportChannel; 
    ... 
    @Router 
    public List<String> routeJobExecution(JobExecution jobExecution) { 
    final List<String> routeToChannels = new ArrayList<String>(); 
    ... 
    sftpIncrExportChannel.send(MessageBuilder.withPayload(fileA).build()); 
    sftpIncrExportChannel.send(MessageBuilder.withPayload(fileB).build()); 
    routeToChannels.add("sftpIncrExportChannel"); 
    return routeToChannels; 
    } 
} 

私のXML構成が含まれています

<int:channel id="sftpIncrExportChannel"> 
    <int:queue/> 
</int:channel> 
... 
<int-sftp:outbound-channel-adapter session-factory="sftpSessionFactory" channel="sftpIncrExportChannel" charset="UTF8" remote-directory="${export.incr.sftp.dir}" /> 
... 
<bean id="sftpSessionFactory" 
    class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory"> 
    <property name="host" value="${export.incr.sftp.dir}"/> 
    <property name="user" value="${export.incr.sftp.user}"/> 
    <property name="password" value="${export.incr.sftp.password}"/> 
</bean> 

あなたが提案を持っていますか?

答えて

1

チャネルから<queue/>を削除すると、呼び出しスレッドで順次実行されます。

キューチャネルを使用する場合は、ポーラーが必要ですが、ポーラーにtask-executorがない限り、メッセージはポーラースレッドで順番に送信されます。次回の投票は、現在の投票が完了するまで行われません。

+0

Fine。私はこれを試してみる。ありがとうございました – salidou

関連する問題