Using Aerospike and redis together in Spring Boot

I want to use Redis and Aerospike together, in the sense that I want to use Aerospike for Spring caching, but I want to use Redis as a memory that I only read a single value from(crud repository). I am getting an error in configuring Aerospike, the error is that when I am configuring the Aerospike cache management section, it is getting an error with the default value set for Redis in Spring.

this is my Aerospike config:

@Configuration
@EnableConfigurationProperties(AerospikeProperties.class)
@EnableAerospikeRepositories(basePackageClasses = {CacheableFileEntityRepository.class})
public class AerospikeConfig extends AbstractAerospikeDataConfiguration {
    @Autowired
    private AerospikeProperties aerospikeProperties;

    @Override
    protected Collection<Host> getHosts() {
        return aerospikeProperties.getHosts() ;
    }

    @Override
    protected String nameSpace() {
        return aerospikeProperties.getNamespace();
    }

}

and this is my Aerospike Properties:

@Log4j2
@Data
@Profile("aerospike")
@ConfigurationProperties(prefix = "aerospike")
@RequiredArgsConstructor(onConstructor_ ={@Autowired})

public class AerospikeProperties {

    @Value("${spring.aerospike.host}")
    private String host;

    @Value("${spring.aerospike.port}")
    private int port;

    @Value("${spring.aerospike.namespace}")
    private String namespace;

    @Value("${spring.aerospike.policies.client.readTimeout}")
    private int readTimeout;
    @Value("${spring.aerospike.policies.client.writeTimeout}")
    private int writeTimeout;
    @Value("${spring.aerospike.policies.client.connectionTimeout}")
    private int connectionTimeout;
    @Value("${spring.aerospike.policies.client.maxSocketIdle}")
    private int maxSocketIdle;
    @Value("${spring.aerospike.policies.client.totalTimeout}")
    private int totalTimeout;

    @Bean(destroyMethod = "close")
    public AerospikeClient aerospikeClient() {

        try {
            ClientPolicy clientPolicy = new ClientPolicy();
            clientPolicy.readPolicyDefault.replica = Replica.MASTER;
            clientPolicy.readPolicyDefault.readModeAP = ReadModeAP.ONE;
            clientPolicy.writePolicyDefault.commitLevel = CommitLevel.COMMIT_ALL;
            clientPolicy.readPolicyDefault.socketTimeout = readTimeout;
            clientPolicy.readPolicyDefault.totalTimeout = totalTimeout;
            clientPolicy.writePolicyDefault.socketTimeout = writeTimeout;
            clientPolicy.writePolicyDefault.totalTimeout = totalTimeout;
            clientPolicy.maxSocketIdle=maxSocketIdle;
            clientPolicy.timeout=connectionTimeout;
            return new AerospikeClient(clientPolicy, host, port);
        } catch (RuntimeException e) {
            return null;
        }
    }

    protected Collection<Host> getHosts() {
        return Collections.singleton(new Host(host, port));
    }

    protected String getNamespace() {
        return namespace;
    }
}

i want to add this code and have error:

@Bean
public AerospikeCacheManager cacheManager(AerospikeClient aerospikeClient) {
    AerospikeCacheConfiguration defaultConfiguration = new AerospikeCacheConfiguration("tax_registration");
    return new AerospikeCacheManager(aerospikeClient, mappingAerospikeConverter, defaultConfiguration);
}

this is the error:

Parameter 1 of constructor in org.springframework.data.aerospike.convert.MappingAerospikeConverter required a single bean, but 2 were found:
    - org.springframework.data.aerospike.convert.AerospikeCustomConversions: defined in unknown location
    - redisCustomConversions: defined in unknown location

i use this annotations but not worked

@Qualifier
@Primary

this is my spring boot and aerospike version :

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.1</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependency>
    <groupId>com.aerospike</groupId>
    <artifactId>spring-data-aerospike</artifactId>
    <version>$4.8.0</version>
</dependency>

Upvotes: 0

Views: 68

Answers (0)

Related Questions