diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/AutoconfiguredMap.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/AutoconfiguredMap.java index 0807f6c19..66e4fb924 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/AutoconfiguredMap.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/AutoconfiguredMap.java @@ -1,8 +1,11 @@ package ru.spcex.clearing.imdg.base; +import com.hazelcast.config.MapIndexConfig; import com.hazelcast.core.MapLoader; public interface AutoconfiguredMap extends MapLoader { + MapIndexConfig[] emptyIndexes = new MapIndexConfig[0]; + /** * * @return IMDGDistributedNames.* @@ -14,4 +17,8 @@ public interface AutoconfiguredMap extends MapLoader { * @return */ String[] getIndexingField(); + + default MapIndexConfig[] getIndexes() { + return emptyIndexes; + } } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/RegistryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/RegistryMapStore.java index b848e2be1..0b515eb60 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/RegistryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/RegistryMapStore.java @@ -1,5 +1,6 @@ package ru.spcex.clearing.imdg.businessobject; +import com.hazelcast.config.MapIndexConfig; import org.apache.commons.lang3.exception.ExceptionUtils; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; @@ -12,13 +13,23 @@ import java.math.BigDecimal; import java.sql.ResultSet; import java.sql.SQLException; import java.time.LocalDate; -import java.util.*; +import java.util.List; @Component public class RegistryMapStore extends TemplateMapStore { + private final MapIndexConfig[] indexes; + public RegistryMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); + indexes = new MapIndexConfig[] { + new MapIndexConfig().setAttribute("sessionId").setOrdered(false), + new MapIndexConfig().setAttribute("tradingClearingRegistryId").setOrdered(false), + new MapIndexConfig().setAttribute("companyId").setOrdered(false), + new MapIndexConfig().setAttribute("accountId").setOrdered(false), + new MapIndexConfig().setAttribute("settlementDate").setOrdered(false), + new MapIndexConfig().setAttribute("groupId").setOrdered(false), + }; } @Override @@ -32,8 +43,8 @@ public class RegistryMapStore extends TemplateMapStore { } @Override - public String[] getIndexingField() { - return new String[]{"sessionId"}; + public MapIndexConfig[] getIndexes() { + return indexes; } @Override diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java index 42b569105..ce00f0dc5 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java @@ -112,7 +112,14 @@ public class PoolMapConfigs implements InitializingBean { } existMapStores.add(mapStore.getMapName()); // IMDGDistributedNames MapConfig mapCfg = makeDefaultMapConfig(mapStore.getMapName(), mapStore); - if (mapStore.getIndexingField() != null && mapStore.getIndexingField().length > 0) { + if (mapStore.getIndexes().length > 0) { + if (log.isTraceEnabled()) { + log.trace("Create indexing filed on {}: {}", mapStore.getMapName(), Arrays.toString(mapStore.getIndexes())); + } + for (MapIndexConfig index : mapStore.getIndexes()) { + mapCfg.addMapIndexConfig(index); + } + } else if (mapStore.getIndexingField() != null && mapStore.getIndexingField().length > 0) { if (log.isTraceEnabled()) { log.trace("Create indexing filed on {}: {}", mapStore.getMapName(), Arrays.toString(mapStore.getIndexingField())); }