diff options
author | Toine Siebelink <toine.siebelink@est.tech> | 2022-07-06 10:28:38 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2022-07-06 10:28:38 +0000 |
commit | 4ef8d19936909a77a6a89af00a6b437ba9e917ec (patch) | |
tree | 1a34c13f9cd1f9616bb8fcdfbcbb584d916b0e7c /cps-ncmp-service/src/main/java/org | |
parent | d6bd3aad095e76262e93fb68bbdb98b5f4bd9860 (diff) | |
parent | 0238998ff777b82e6a5ddbd83f7f47b8dde12054 (diff) |
Merge "Distributed map setup for Module and Data Sync"
Diffstat (limited to 'cps-ncmp-service/src/main/java/org')
-rw-r--r-- | cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationSemaphoresConfig.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationSemaphoresConfig.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationSemaphoresConfig.java new file mode 100644 index 0000000000..978c3d16b7 --- /dev/null +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationSemaphoresConfig.java @@ -0,0 +1,68 @@ +/* + * ============LICENSE_START======================================================== + * Copyright (C) 2022 Nordix Foundation + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.ncmp.api.impl.config.embeddedcache; + +import com.hazelcast.config.Config; +import com.hazelcast.config.MapConfig; +import com.hazelcast.core.Hazelcast; +import java.util.Map; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Core infrastructure of the hazelcast distributed map for Module Sync and Data Sync use cases. + */ +@Configuration +public class SynchronizationSemaphoresConfig { + + /** + * Module Sync Distributed Map Instance. + * @return Instance of Map + */ + @Bean + public Map<String, String> moduleSyncSemaphore() { + return Hazelcast.newHazelcastInstance( + initializeDefaultMapConfig("moduleSyncSemaphore", "moduleSyncSemaphoreConfig")) + .getMap("moduleSyncSemaphore"); + } + + /** + * Data Sync Distributed Map Instance. + * @return Instance of Map + */ + @Bean + public Map<String, String> dataSyncSemaphore() { + return Hazelcast.newHazelcastInstance( + initializeDefaultMapConfig("dataSyncSemaphore", "dataSyncSemaphoreConfig")) + .getMap("dataSyncSemaphore"); + } + + private Config initializeDefaultMapConfig(final String instanceName, final String configName) { + final Config config = new Config(instanceName); + final MapConfig mapConfig = new MapConfig(configName); + mapConfig.setTimeToLiveSeconds(30); + mapConfig.setBackupCount(3); + mapConfig.setAsyncBackupCount(3); + config.addMapConfig(mapConfig); + config.setClusterName("synchronization-semaphores"); + return config; + } +} |