parent
008a3dbf36
commit
ceb52616b0
4 changed files with 12 additions and 57 deletions
|
|
@ -11,7 +11,7 @@ public class LimExportApplication {
|
||||||
SpringApplicationBuilder builder = new SpringApplicationBuilder(LimExportApplication.class);
|
SpringApplicationBuilder builder = new SpringApplicationBuilder(LimExportApplication.class);
|
||||||
builder.run(args);
|
builder.run(args);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
LoggerFactory.getLogger(LimExportApplication.class).error("DBF-Loader start failed: {} -> {}", e.getClass().getSimpleName(), e.getMessage());
|
LoggerFactory.getLogger(LimExportApplication.class).error("Lim-exporter start failed: {} -> {}", e.getClass().getSimpleName(), e.getMessage());
|
||||||
System.exit(-1);
|
System.exit(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package ru.spcex.clearing.lim.exporter.config;
|
package ru.spcex.clearing.lim.exporter.config;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
@ -32,8 +31,7 @@ public class ImdgConfig {
|
||||||
return createThreadPoolTaskExecutor(1, false);
|
return createThreadPoolTaskExecutor(1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Autowired
|
@Bean("imdgProvider")
|
||||||
@Bean
|
|
||||||
public ImdgProvider imdgProvider(
|
public ImdgProvider imdgProvider(
|
||||||
@Qualifier("taskExecutorHazelcastClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer,
|
@Qualifier("taskExecutorHazelcastClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer,
|
||||||
@Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter,
|
@Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter,
|
||||||
|
|
|
||||||
|
|
@ -1,63 +1,11 @@
|
||||||
package ru.spcex.clearing.lim.exporter.config;
|
package ru.spcex.clearing.lim.exporter.config;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
||||||
import ru.spcex.clearing.lim.exporter.config.settings.ExportLimServiceSettings;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams;
|
|
||||||
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
|
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableConfigurationProperties
|
@EnableConfigurationProperties
|
||||||
@ComponentScan(basePackages = {"ru.spcex.clearing.lim.exporter"})
|
@ComponentScan(basePackages = {"ru.spcex.clearing.lim.exporter"})
|
||||||
public class LimExporterConfig {
|
public class LimExporterConfig {
|
||||||
|
|
||||||
@Bean("taskExecutorHazelcastClientInitializer")
|
|
||||||
public ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer() {
|
|
||||||
return createThreadPoolTaskExecutor(1, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean("taskExecutorIdGeneratorAwaiter")
|
|
||||||
public ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter() {
|
|
||||||
return createThreadPoolTaskExecutor(1, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean("imdgProvider")
|
|
||||||
public ImdgProvider imdgProvider(@Qualifier("taskExecutorHazelcastClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer,
|
|
||||||
@Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter,
|
|
||||||
ExportLimServiceSettings settings) {
|
|
||||||
HazelcastClientParams params = new HazelcastClientParams();
|
|
||||||
params.setClusterMembers(settings.getHazelcast().getClusterMembers());
|
|
||||||
params.setLogin(settings.getHazelcast().getLogin());
|
|
||||||
params.setPassword(settings.getHazelcast().getPassword());
|
|
||||||
return new HazelcastService(taskExecutorHazelcastClientInitializer, taskExecutorIdGeneratorAwaiter, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean("executor")
|
|
||||||
public ThreadPoolTaskExecutor executor(ExportLimServiceSettings settings) {
|
|
||||||
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
|
||||||
executor.setMaxPoolSize(settings.getCommon().getThreadsCount());
|
|
||||||
executor.setCorePoolSize(settings.getCommon().getThreadsCount());
|
|
||||||
executor.setThreadNamePrefix("dbf-exporter");
|
|
||||||
executor.setWaitForTasksToCompleteOnShutdown(true);
|
|
||||||
executor.setAwaitTerminationSeconds(300);
|
|
||||||
executor.initialize();
|
|
||||||
return executor;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static ThreadPoolTaskExecutor createThreadPoolTaskExecutor(int maxPoolSz, boolean waitForCompletion) {
|
|
||||||
ThreadPoolTaskExecutor pool = new ThreadPoolTaskExecutor();
|
|
||||||
if (maxPoolSz > 2) {
|
|
||||||
pool.setKeepAliveSeconds(60);
|
|
||||||
pool.setAllowCoreThreadTimeOut(true);
|
|
||||||
}
|
|
||||||
pool.setCorePoolSize(maxPoolSz);
|
|
||||||
pool.setWaitForTasksToCompleteOnShutdown(waitForCompletion);
|
|
||||||
return pool;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,12 @@ import org.springframework.expression.common.LiteralExpression;
|
||||||
import org.springframework.integration.annotation.Gateway;
|
import org.springframework.integration.annotation.Gateway;
|
||||||
import org.springframework.integration.annotation.MessagingGateway;
|
import org.springframework.integration.annotation.MessagingGateway;
|
||||||
import org.springframework.integration.annotation.ServiceActivator;
|
import org.springframework.integration.annotation.ServiceActivator;
|
||||||
|
import org.springframework.integration.channel.DirectChannel;
|
||||||
import org.springframework.integration.file.remote.session.CachingSessionFactory;
|
import org.springframework.integration.file.remote.session.CachingSessionFactory;
|
||||||
import org.springframework.integration.file.remote.session.SessionFactory;
|
import org.springframework.integration.file.remote.session.SessionFactory;
|
||||||
import org.springframework.integration.sftp.outbound.SftpMessageHandler;
|
import org.springframework.integration.sftp.outbound.SftpMessageHandler;
|
||||||
import org.springframework.integration.sftp.session.DefaultSftpSessionFactory;
|
import org.springframework.integration.sftp.session.DefaultSftpSessionFactory;
|
||||||
|
import org.springframework.messaging.MessageChannel;
|
||||||
import org.springframework.messaging.MessageHandler;
|
import org.springframework.messaging.MessageHandler;
|
||||||
import ru.spcex.clearing.lim.exporter.config.settings.ExportLimServiceSettings;
|
import ru.spcex.clearing.lim.exporter.config.settings.ExportLimServiceSettings;
|
||||||
|
|
||||||
|
|
@ -40,7 +42,7 @@ public class SFTPConfig {
|
||||||
if (message.getPayload() instanceof File) {
|
if (message.getPayload() instanceof File) {
|
||||||
return ((File) message.getPayload()).getName();
|
return ((File) message.getPayload()).getName();
|
||||||
}else {
|
}else {
|
||||||
throw new IllegalArgumentException("File expected as payload.");
|
throw new IllegalArgumentException("File must expected as payload.");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return handler;
|
return handler;
|
||||||
|
|
@ -51,4 +53,11 @@ public class SFTPConfig {
|
||||||
@Gateway(requestChannel = "toSftpChannel")
|
@Gateway(requestChannel = "toSftpChannel")
|
||||||
void sendToSftp(File file);
|
void sendToSftp(File file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public MessageChannel toSftpChannel(SessionFactory<ChannelSftp.LsEntry> sessionFactory, ExportLimServiceSettings settings) {
|
||||||
|
DirectChannel dc = new DirectChannel();
|
||||||
|
dc.subscribe(handler(sessionFactory, settings));
|
||||||
|
return dc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue