Как подключить Apache Ignite как cache к Spring Boot?
Хочу использовать Ignite как распределенный cache, но не могу понять как настроить подключение к хосту.
Имею вот такой конфиг
package ru.test.springignitecache.config
import org.apache.ignite.Ignite
import org.apache.ignite.Ignition
import org.apache.ignite.cache.CacheAtomicityMode
import org.apache.ignite.cache.CacheMode
import org.apache.ignite.configuration.CacheConfiguration
import org.apache.ignite.configuration.IgniteConfiguration
import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi
import org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder
import org.apache.ignite.springdata22.repository.config.EnableIgniteRepositories
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import ru.zneik.springignitecache.model.Person
import java.util.*
import kotlin.collections.ArrayList
@Configuration
@EnableIgniteRepositories(value = ["ru.test.springignitecache.model"])
class IgniteConfig {
@Bean
fun igniteInstance(): Ignite? {
return Ignition.start(igniteConfiguration())
}
@Bean(name = ["igniteConfiguration"])
fun igniteConfiguration(): IgniteConfiguration? {
val igniteConfiguration = IgniteConfiguration()
igniteConfiguration.igniteInstanceName = "testIgniteInstance"
//igniteConfiguration.setClientMode(true);
igniteConfiguration.isPeerClassLoadingEnabled = true
igniteConfiguration.localHost = "192.168.99.100"
val tcpDiscoverySpi = TcpDiscoverySpi()
val ipFinder = TcpDiscoveryMulticastIpFinder()
ipFinder.setAddresses(Collections.singletonList("192.168.99.100:47500..47509"))
tcpDiscoverySpi.ipFinder = ipFinder
tcpDiscoverySpi.localPort = 47500
tcpDiscoverySpi.localPortRange = 9
igniteConfiguration.discoverySpi = tcpDiscoverySpi
val communicationSpi = TcpCommunicationSpi()
communicationSpi.localAddress = "192.168.99.100"
communicationSpi.localPort = 48100
communicationSpi.slowClientQueueLimit = 1000
igniteConfiguration.communicationSpi = communicationSpi
igniteConfiguration.setCacheConfiguration(*cacheConfiguration())
return igniteConfiguration
}
@Bean(name = ["cacheConfiguration"])
fun cacheConfiguration(): Array<CacheConfiguration<*, *>> {
val cacheConfigurations: MutableList<CacheConfiguration<*, *>> = ArrayList()
val cacheConfiguration: CacheConfiguration<*, *> = CacheConfiguration<Any?, Any?>()
cacheConfiguration.atomicityMode = CacheAtomicityMode.ATOMIC
cacheConfiguration.cacheMode = CacheMode.REPLICATED
cacheConfiguration.name = "persons"
cacheConfiguration.isStatisticsEnabled = true
val ccfg: CacheConfiguration<UUID?, Person?> = CacheConfiguration<UUID?, Person?>("PersonCache")
ccfg.setIndexedTypes(UUID::class.java, Person::class.java)
cacheConfigurations.add(ccfg)
cacheConfigurations.add(cacheConfiguration)
return cacheConfigurations.toTypedArray()
}
}