public FileWritingMessageHandlerSpec fileNameExpression(String fileNameExpression) { Assert.isNull(this.fileNameGenerator, "'fileNameGenerator' and 'fileNameGeneratorExpression' are mutually exclusive."); this.defaultFileNameGenerator = new DefaultFileNameGenerator(); this.defaultFileNameGenerator.setExpression(fileNameExpression); return fileNameGenerator(this.defaultFileNameGenerator); }
public FileWritingMessageHandlerSpec fileNameExpression(String fileNameExpression) { Assert.isNull(this.fileNameGenerator, "'fileNameGenerator' and 'fileNameGeneratorExpression' are mutually exclusive."); this.defaultFileNameGenerator = new DefaultFileNameGenerator(); this.defaultFileNameGenerator.setExpression(fileNameExpression); return fileNameGenerator(this.defaultFileNameGenerator); }
@Bean public IntegrationFlow releasesFlow() { return IntegrationFlows.from(MessageChannels.queue("releasesChannel", 10)) //1 .<SyndEntry, String> transform( payload -> "《" + payload.getTitle() + "》 " + payload.getLink() + getProperty("line.separator")) //2 .handle(Files.outboundAdapter(new File("e:/springblog")) //3 .fileExistsMode(FileExistsMode.APPEND) //4 .charset("UTF-8") //5 .fileNameGenerator(message -> "releases.txt") //6 .get()) .get(); }
@Bean public IntegrationFlow engineeringFlow() { return IntegrationFlows.from(MessageChannels.queue("engineeringChannel", 10)) .<SyndEntry, String> transform( payload -> "《" + payload.getTitle() + "》 " + payload.getLink() + getProperty("line.separator")) .handle(Files.outboundAdapter(new File("e:/springblog")) .fileExistsMode(FileExistsMode.APPEND) .charset("UTF-8") .fileNameGenerator(message -> "engineering.txt") .get()) .get(); }
@Bean public IntegrationFlow fileFlow1() { return IntegrationFlows.from("fileFlow1Input") .handleWithAdapter(h -> h.file(tmpDir.getRoot()) .fileNameGenerator(message -> null) .fileExistsMode(FileExistsMode.APPEND_NO_FLUSH) .flushPredicate((fileAbsolutePath, lastWrite, filterMessage) -> { flushPredicateCalled().countDown(); return true; }), c -> c.id("fileWriting")) .get(); }
@Bean public IntegrationFlow fileSplitterAggregator() { return IntegrationFlows .from(Files.inboundAdapter(new File("/tmp/in")) .autoCreateDirectory(true) .patternFilter("*.txt"), e -> e.poller(Pollers.fixedDelay(5000))) .split(Files.splitter() .markers() .applySequence(true)) .filter(p -> !(p instanceof FileSplitter.FileMarker), e -> e.discardChannel("aggregatorChannel")) .<String, Name>transform(Name::new) .<Name>filter(p -> !p.getValue().startsWith("X")) .channel("aggregatorChannel") .aggregate(a -> a.processor(new FileMarkerAggregator())) .<List<Name>, Names>transform(Names::new) .transform(Transformers.marshaller(jaxbMarshaller(), new ResultToStringTransformer())) .handle(Files.outboundAdapter("'/tmp/out'") .fileNameGenerator(m -> m .getHeaders() .get(FileHeaders.FILENAME, String.class) .replace(".txt", ".xml")) .autoCreateDirectory(true)) .get(); }