2017-10-31 20 views
0

サーバからデータを受信して​​いるTCPクライアントでSpring IntegrationでMessageSourceを生成する最適な方法は何ですか? 私のアプリは既にFTPとSFTPからのデータで悩んでいますが、私はTCPでバージョンを実装する必要があります。以前のバージョンでは、エントリポイントは、このようなInboundChannelAdapterた:SpringインテグレーションでTCPを使用してMessageSourceを作成する

@Bean 
@InboundChannelAdapter(value = "channel", poller = @Poller(fixedDelay = "10000", maxMessagesPerPoll = "-1")) 
public MessageSource<File> ftpMessageSource(
     @Autowired AbstractInboundFileSynchronizer<FTPFile> ftpInboundFileSynchronizer) { 
    FtpInboundFileSynchronizingMessageSource source = new FtpInboundFileSynchronizingMessageSource(
      ftpInboundFileSynchronizer); 
    source.setLocalDirectory(new File(repo)); 
    source.setAutoCreateLocalDirectory(true); 
    source.setLocalFilter(new AcceptAllFileListFilter<File>()); 
    return source; 
} 

答えて

0

TCPにはMessageSourceはありません。ちょうどTCP/IPはストリーミングプロトコルなので、我々はMessageProducerの実装を介して継続的に働くリスナーを持っています - TcpReceivingChannelAdapter。このためには、普通の@Beanの定義を宣言し、注入には適切なConnectionFactoryMessageChannelを使用するだけです。

+0

[ドキュメント](https://docs.spring.io/spring-integration/reference/html/ip.html#connection-factories)のデシリアライザについても読む必要があります。これらは、ストリームを解析するために使用されます離散メッセージ。デフォルトでは、CRLFはメッセージの終わり(つまりTelnet)を示すために使用されます。 –

+0

TCPは動作していますが、処理を行うために例えば10個のメッセージを待つために 'Poller'を設定する方法がありますか? 'Transformer'と' ServiceActivator'を追加しました。これはアプリケーションの残りの部分とリンクしています。 – user7953086

関連する問題