0

以下の構成をテストして、service-activator を使用してサービス クラス メソッドに InputStream を渡す方法を探していますが、service-activator が呼び出されなかったようです。間違っている点はありますか?

<bean id="sftpSessionFactory" ... />

<int:channel id="inboundGetStream">
    <int:queue />
</int:channel>

<int-sftp:outbound-gateway session-factory="sftpSessionFactory"
              request-channel="inboundGetStream"
              command="get"
              command-options="-stream"
              expression="payload"
              remote-directory="ftpTarget"
              reply-channel="streamHandler" />

<int:service-activator input-channel="inboundGetStream" ref="streamHandler" method="handleMessage"/>

サービス クラスで、InputStream パラメータを持つメソッドが作成されます。

@Service("streamHandler")
public class StreamHandler {

    public void handleMessage(InputStream file, @Headers['file_remoteSession']DefaultSftpSessionFactory session) throws FileNotFoundException, IOException{
        log.debug("############# handleMessage(file) ###########");     
        log.debug(IOUtils.toString(new FileInputStream(file)));
        session.close();
    }
}
4

1 に答える 1

1

チェーンを削除します。<file:splitter/>これは、inputStream からファイルを読み取り、各行をMessage<String>.

自分で inputStream を消費したいので、それは望ましくありません。あなたのサービス方法は正しいです。

応答チャネルをoutboundGetStream変更し、サービスアクティベータの入力チャネルをそれに変更するだけです。

于 2016-03-13T14:36:31.583 に答える