etreschenkov 2025-08-11 11:31:59 +03:00
parent 60d9801a5f
commit 96955aa0aa
2 changed files with 16 additions and 13 deletions

View file

@ -8,7 +8,6 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import ru.spcex.clearing.historyimdg.config.element.ImdgSettings; import ru.spcex.clearing.historyimdg.config.element.ImdgSettings;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
@Configuration @Configuration
@ -26,7 +25,7 @@ public class HistoryHazelcastClientConfig {
@Autowired @Autowired
@Bean @Bean
public ImdgProvider imdgProvider( public HazelcastService imdgProvider(
@Qualifier("taskExecutorHazelcastClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer, @Qualifier("taskExecutorHazelcastClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer,
@Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter, @Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter,
ImdgSettings imdgSettings ImdgSettings imdgSettings
@ -35,7 +34,7 @@ public class HistoryHazelcastClientConfig {
log.warn("Property \"backend-api.hazelcast.cluster-members\" not set!"); log.warn("Property \"backend-api.hazelcast.cluster-members\" not set!");
throw new IllegalArgumentException("Property \"backend-api.hazelcast.cluster-members\" not set"); throw new IllegalArgumentException("Property \"backend-api.hazelcast.cluster-members\" not set");
} }
ImdgProvider imdg = new HazelcastService(taskExecutorHazelcastClientInitializer, HazelcastService imdg = new HazelcastService(taskExecutorHazelcastClientInitializer,
taskExecutorIdGeneratorAwaiter, taskExecutorIdGeneratorAwaiter,
imdgSettings.getHazelcastClient()); imdgSettings.getHazelcastClient());
return imdg; return imdg;

View file

@ -14,25 +14,29 @@ import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.misc.SessionHistory;
import ru.spcex.clearing.historyimdg.component.SearchProxyBuilder; import ru.spcex.clearing.historyimdg.component.SearchProxyBuilder;
import ru.spcex.clearing.historyimdg.component.TodayQueueListener; import ru.spcex.clearing.historyimdg.component.TodayQueueListener;
import ru.spcex.clearing.historyimdg.index.SearchProxy; import ru.spcex.clearing.historyimdg.index.SearchProxy;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.platform.classes.base.interfaces.WithId; import ru.spcex.platform.classes.base.interfaces.WithId;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
import ru.spcex.platform.imdg.iml.hazelcast.service.IHazelcastClusterStatus; import ru.spcex.platform.imdg.iml.hazelcast.service.IHazelcastClusterStatus;
@Service @Service
public class TodayHistoryService implements InitializingBean, DisposableBean, IHazelcastClusterStatus { public class TodayHistoryService implements InitializingBean, DisposableBean, IHazelcastClusterStatus {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private final ImdgProvider imdgProvider; private final HazelcastService imdgProvider;
private final HazelcastLifecycleSupport hzLifecycleSupport; private final HazelcastLifecycleSupport hzLifecycleSupport;
private final SearchProxyBuilder searchProxyBuilder; private final SearchProxyBuilder searchProxyBuilder;
private HazelcastInstance availableStorageHzInstance; private HazelcastInstance availableStorageHzInstance;
//---- listeners ---- //---- listeners ----
private TodayQueueListener<SessionHistory> sessionHistoryListener;
@Autowired @Autowired
public TodayHistoryService(ImdgProvider imdgProvider, HazelcastLifecycleSupport hzLifecycleSupport, SearchProxyBuilder searchProxyBuilder) { public TodayHistoryService(HazelcastService imdgProvider,
HazelcastLifecycleSupport hzLifecycleSupport,
SearchProxyBuilder searchProxyBuilder) {
this.imdgProvider = imdgProvider; this.imdgProvider = imdgProvider;
this.hzLifecycleSupport = hzLifecycleSupport; this.hzLifecycleSupport = hzLifecycleSupport;
this.searchProxyBuilder = searchProxyBuilder; this.searchProxyBuilder = searchProxyBuilder;
@ -40,7 +44,7 @@ public class TodayHistoryService implements InitializingBean, DisposableBean, IH
@Override @Override
public void afterPropertiesSet() { public void afterPropertiesSet() {
// imdgProvider.statusSubscribe(this); imdgProvider.statusSubscribe(this);
} }
/** /**
@ -79,8 +83,8 @@ public class TodayHistoryService implements InitializingBean, DisposableBean, IH
Long maxSearchId = targetMap.aggregate(Aggregators.longMax("id")); Long maxSearchId = targetMap.aggregate(Aggregators.longMax("id"));
if (maxSearchId == null) maxSearchId = 0L; if (maxSearchId == null) maxSearchId = 0L;
Collection<Long> ids = historyMap.project(Projections.singleAttribute("id") Collection<Long> ids = historyMap.project(Projections.singleAttribute("id"),
, Predicates.greaterThan("id", maxSearchId)); Predicates.greaterThan("id", maxSearchId));
for (Long id : ids) { for (Long id : ids) {
T t = historyMap.get(id); T t = historyMap.get(id);
targetMap.set(id, searchProxyBuilder.build(t, clazz)); targetMap.set(id, searchProxyBuilder.build(t, clazz));
@ -104,9 +108,9 @@ public class TodayHistoryService implements InitializingBean, DisposableBean, IH
public void getAvailable(HazelcastInstance storageHzInstanceInited) { public void getAvailable(HazelcastInstance storageHzInstanceInited) {
this.availableStorageHzInstance = storageHzInstanceInited; this.availableStorageHzInstance = storageHzInstanceInited;
//----- //-----
// repoMMOrderListener = registerListener(Map_RepoMMOrder, Map_RepoMMOrderSearch, RepoMMOrder.class); sessionHistoryListener = registerListener(IMDGDistributedNames.Map_SessionHistory, IMDGDistributedNames.Map_SearchSessionHistory, SessionHistory.class);
// loadSnapshot(Map_RepoMMOrder, Map_RepoMMOrderSearch, RepoMMOrder.class); loadSnapshot(IMDGDistributedNames.Map_SessionHistory, IMDGDistributedNames.Map_SearchSessionHistory, SessionHistory.class);
// repoMMOrderListener.startProcessingNewEntries(); sessionHistoryListener.startProcessingNewEntries();
//----- //-----
this.availableStorageHzInstance = null; this.availableStorageHzInstance = null;