@Test void testRuntimeBeanRegistration(@Autowired IntegrationFlowContext context) throws Exception { Set<ObjectName> query = this.server.queryNames(new ObjectName("dsl:type=MessageChannel,*"), null); assertThat(query).hasSize(3); query = this.server.queryNames(new ObjectName("dsl:type=MessageHandler,*"), null); assertThat(query).hasSize(2); query = this.server.queryNames(new ObjectName("dsl:type=MessageSource,*"), null); assertThat(query).hasSize(0); IntegrationFlow dynamicFlow = IntegrationFlows.from(() -> "foo", e -> e.poller(p -> p.fixedDelay(1000))) .channel("channelTwo") .nullChannel(); IntegrationFlowContext.IntegrationFlowRegistration registration = context.registration(dynamicFlow) .id("dynamic") .register(); query = this.server.queryNames(new ObjectName("dsl:type=MessageChannel,*"), null); assertThat(query).hasSize(4); query = this.server.queryNames(new ObjectName("dsl:type=MessageHandler,*"), null); assertThat(query).hasSize(3); query = this.server.queryNames(new ObjectName("dsl:type=MessageSource,*"), null); assertThat(query).hasSize(1); registration.destroy(); query = this.server.queryNames(new ObjectName("dsl:type=MessageChannel,*"), null); assertThat(query).hasSize(3); query = this.server.queryNames(new ObjectName("dsl:type=MessageHandler,*"), null); assertThat(query).hasSize(2); query = this.server.queryNames(new ObjectName("dsl:type=MessageSource,*"), null); assertThat(query).hasSize(0); }
@Bean public IntegrationFlow messageSourceChannelFlow() { return IntegrationFlows.from(interceptedSource(), e -> e.poller(Pollers.fixedDelay(100)).autoStartup(false)) .handle(p -> { this.fromInterceptedSource = p.getPayload(); this.latch.countDown(); }) .get(); }
private static IntegrationFlowBuilder from(MessageSource<?> messageSource, @Nullable Consumer<SourcePollingChannelAdapterSpec> endpointConfigurer, @Nullable IntegrationFlowBuilder integrationFlowBuilderArg) { IntegrationFlowBuilder integrationFlowBuilder = integrationFlowBuilderArg; SourcePollingChannelAdapterSpec spec = new SourcePollingChannelAdapterSpec(messageSource); if (endpointConfigurer != null) { endpointConfigurer.accept(spec); } if (integrationFlowBuilder == null) { integrationFlowBuilder = new IntegrationFlowBuilder(); } return integrationFlowBuilder.addComponent(spec) .currentComponent(spec); }
@Bean public Publisher<Message<String>> reactiveFlow() { return IntegrationFlows .from(() -> new GenericMessage<>("a,b,c,d,e,f"), e -> e.poller(p -> p.trigger(ctx -> this.invoked.getAndSet(true) ? null : new Date())) .autoStartup(false) .id("reactiveStreamsMessageSource")) .split(String.class, p -> p.split(",")) .log() .toReactivePublisher(); }
Map<Object, String> componentsToRegister = spec.getComponentsToRegister(); if (!CollectionUtils.isEmpty(componentsToRegister)) { componentsToRegister.entrySet() useFlowIdAsPrefix))); SourcePollingChannelAdapterFactoryBean pollingChannelAdapterFactoryBean = spec.get().getT1(); String id = spec.getId(); if (id == null) { id = generateBeanName(pollingChannelAdapterFactoryBean, flowNamePrefix, entry.getValue(), targetIntegrationComponents.put(pollingChannelAdapterFactoryBean, id); MessageSource<?> messageSource = spec.get().getT2(); if (noBeanPresentForComponent(messageSource, flowBeanName)) { String messageSourceId = id + ".source";
void pollDirectories(File... directories) { for (File directory : directories) { StandardIntegrationFlow integrationFlow = IntegrationFlows .from(Files.inboundAdapter(directory) .scanner(new DefaultDirectoryScanner()), e -> e.poller(p -> p.fixedDelay(1000)) .id(directory.getName() + ".adapter")) .transform(Files.toStringTransformer(), e -> e.id(directory.getName() + ".transformer")) .channel(this.dynamicAdaptersResult) .get(); this.beanFactory.initializeBean(integrationFlow, directory.getName()); this.beanFactory.getBean(directory.getName() + ".transformer", Lifecycle.class).start(); this.beanFactory.getBean(directory.getName() + ".adapter", Lifecycle.class).start(); } }
public SourcePollingChannelAdapterSpec phase(int phase) { this.endpointFactoryBean.setPhase(phase); return _this(); }
@Bean public IntegrationFlow ftpInboundFlow() { return IntegrationFlows .from(s -> s.ftp(this.ftpSessionFactory) .preserveTimestamp(true) .remoteDirectory("ftpSource") .regexFilter(".*\\.txt$") .localFilename(f -> f.toUpperCase() + ".a") .localDirectory(this.ftpServer.getTargetLocalDirectory()), e -> e.id("ftpInboundAdapter").autoStartup(false)) .channel(MessageChannels.queue("ftpInboundResultChannel")) .get(); }
((SourcePollingChannelAdapterSpec) this.currentComponent).get().getT1(); if (channelName != null) { pollingChannelAdapterFactoryBean.setOutputChannelName(channelName);
@Bean public Publisher<Message<String>> reactiveFlow() { return IntegrationFlows .from(() -> new GenericMessage<>("a,b,c,d,e,f"), e -> e.poller(p -> p.trigger(ctx -> this.invoked.getAndSet(true) ? null : new Date())) .autoStartup(false) .id("reactiveSteamsMessageSource")) .split(String.class, p -> p.split(",")) .toReactivePublisher(); }
public void pollDirectories(File... directories) { for (File directory : directories) { StandardIntegrationFlow integrationFlow = IntegrationFlows .from(s -> s.file(directory) .scanner(new DefaultDirectoryScanner()), e -> e.poller(p -> p.fixedDelay(1000)) .id(directory.getName() + ".adapter")) .transform(Transformers.fileToString(), e -> e.id(directory.getName() + ".transformer")) .channel(this.dynamicAdaptersResult) .get(); this.beanFactory.initializeBean(integrationFlow, directory.getName()); this.beanFactory.getBean(directory.getName() + ".transformer", Lifecycle.class).start(); this.beanFactory.getBean(directory.getName() + ".adapter", Lifecycle.class).start(); } }
Map<Object, String> componentsToRegister = spec.getComponentsToRegister(); if (!CollectionUtils.isEmpty(componentsToRegister)) { componentsToRegister.entrySet() useFlowIdAsPrefix))); SourcePollingChannelAdapterFactoryBean pollingChannelAdapterFactoryBean = spec.get().getT1(); String id = spec.getId(); if (id == null) { id = generateBeanName(pollingChannelAdapterFactoryBean, flowNamePrefix, entry.getValue(), targetIntegrationComponents.put(pollingChannelAdapterFactoryBean, id); MessageSource<?> messageSource = spec.get().getT2(); if (noBeanPresentForComponent(messageSource, flowBeanName)) { String messageSourceId = id + ".source";
public SourcePollingChannelAdapterSpec autoStartup(boolean autoStartup) { this.endpointFactoryBean.setAutoStartup(autoStartup); return _this(); }
@Bean public IntegrationFlow sftpInboundFlow() { return IntegrationFlows .from(s -> s.sftp(this.sftpSessionFactory) .preserveTimestamp(true) .remoteDirectory("sftpSource") .regexFilter(".*\\.txt$") .localFilenameExpression("#this.toUpperCase() + '.a'") .localDirectory(this.sftpServer.getTargetLocalDirectory()), e -> e.id("sftpInboundAdapter").autoStartup(false)) .channel(MessageChannels.queue("sftpInboundResultChannel")) .get(); }
((SourcePollingChannelAdapterSpec) this.currentComponent).get().getT1(); if (channelName != null) { pollingChannelAdapterFactoryBean.setOutputChannelName(channelName);
@Override protected IntegrationFlowDefinition<?> buildFlow() { return from(() -> new GenericMessage<>("flowAdapterMessage"), e -> e.poller(p -> p .trigger(ctx -> this.nextExecutionTime.getAndSet(null)))) .channel(MessageChannels.queue("flowAdapterOutput")); }
@Bean public IntegrationFlow flow() { return IntegrationFlows.from(Amqp.inboundPolledAdapter(connectionFactory(), DSL_QUEUE), e -> e.poller(Pollers.fixedDelay(100)).autoStartup(false)) .handle(p -> { this.fromDsl = p.getPayload(); this.latch.countDown(); }) .get(); }
Collection<Object> componentsToRegister = spec.getComponentsToRegister(); if (!CollectionUtils.isEmpty(componentsToRegister)) { for (Object o : componentsToRegister) { SourcePollingChannelAdapterFactoryBean pollingChannelAdapterFactoryBean = spec.get().getT1(); String id = spec.getId(); if (!StringUtils.hasText(id)) { id = generateBeanName(pollingChannelAdapterFactoryBean); integrationComponents.set(i, pollingChannelAdapterFactoryBean); MessageSource<?> messageSource = spec.get().getT2(); if (!this.beanFactory.getBeansOfType(messageSource.getClass(), false, false) .values()
public SourcePollingChannelAdapterSpec poller(PollerMetadata pollerMetadata) { if (pollerMetadata != null) { if (PollerMetadata.MAX_MESSAGES_UNBOUNDED == pollerMetadata.getMaxMessagesPerPoll()) { pollerMetadata.setMaxMessagesPerPoll(1); } this.endpointFactoryBean.setPollerMetadata(pollerMetadata); } return _this(); }
private static IntegrationFlowBuilder from(MessageSource<?> messageSource, @Nullable Consumer<SourcePollingChannelAdapterSpec> endpointConfigurer, @Nullable IntegrationFlowBuilder integrationFlowBuilderArg) { IntegrationFlowBuilder integrationFlowBuilder = integrationFlowBuilderArg; SourcePollingChannelAdapterSpec spec = new SourcePollingChannelAdapterSpec(messageSource); if (endpointConfigurer != null) { endpointConfigurer.accept(spec); } if (integrationFlowBuilder == null) { integrationFlowBuilder = new IntegrationFlowBuilder(); } return integrationFlowBuilder.addComponent(spec) .currentComponent(spec); }