Конфигурация клиентов
Конфигурирование CRUD-клиента
На данный момент конфигурирование TarantoolCrudClient клиента можно произвести через:
- Java-классы (JavaConfig);
- Java-классы (JavaConfig) без использования аннотации
@EnableTarantoolRepositories; - файлы конфигурации (.properties/.yaml).
Конфигурация через Java классы
Для того чтобы настроить клиент для работы с Spring Data Tarantool необходимо создать класс с
аннотациями@Configuration и @EnableTarantoolRepositories. В этом классе нужно создать фабричный
метод с аннотацией @Bean, который возвращает экземпляр TarantoolCrudClientBuilder со всеми
необходимыми настройками:
import io.tarantool.client.factory.TarantoolCrudClientBuilder;
import io.tarantool.client.factory.TarantoolFactory;
import io.tarantool.spring.data.repository.config.EnableTarantoolRepositories;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableTarantoolRepositories
public class Config {
@Bean
public TarantoolCrudClientBuilder clientSettings() {
return TarantoolFactory.crud()
.withHost("localhost")
.withPort(3301)
.withPassword("secret-cluster-cookie");
}
}
Важно!
Полный список параметров и их назначение можно посмотреть в javaDoc к
TarantoolCrudClientBuilder
Настройка клиента через файл конфигурации
Для того чтобы настроить клиент через конфигурационный файл (например, через
application.properties или application.yaml), необходимо использовать следующие параметры:
spring:
data:
tarantool:
host: localhost #(1)!
port: 3301 #(2)!
user-name: user #(3)!
password: password #(4)!
graceful-shutdown-enabled: true #(5)!
balancer-mode: distributing_round_robin #(6)!
connect-timeout: 5000 #(7)!
reconnect-after: 1000 #(8)!
connection-groups: #(9)!
- auth-type: pap_sha256 #(10)!
host: localhost #(11)!
port: 3301 #(12)!
user-name: "user" #(13)!
password: secret #(14)!
connection-group-size: 4 #(15)!
tag: first-router #(16)!
flush-consolidation-handler: #(17)!
explicit-flush-after-flushes: 256
consolidate-when-no-read-in-progress: false
- host: localhost
port: 3302
user-name: "user"
password: secret
connection-group-size: 2
tag: second-router
event-loop-threads-count: 10 #(18)!
heartbeat: #(19)!
death-threshold: 4
invalidation-threshold: 2
ping-interval: 56
window-size: 12
- Адрес, к которому подключается клиент
- Порт, к которому подключается клиент на
host - Имя пользователя для подключения к
Tarantool - Пароль для подключения к
Tarantool - Использовать ли протокол
graceful shutdown - Выбор типа балансировщика запросов
- Тайм-аут для подключения к
Tarantoolв мс (connect-timeout: 5000- 5 секунд) - Время в мс, через которое необходимо сделать пересоединение при неудачном подключении
(
reconnect-after: 1000- 1 секунда) - Задает список групп подключения с описанием каждой из них
- Тип протокола аутентификации
- Адрес, к которому подключается клиент
- Порт, к которому подключается клиент на
host - Имя пользователя для подключения к
Tarantool - Пароль для подключения к
Tarantool - Количество подключений в одной группе
- Тег, наименование группы
- Позволяет настроить параметры
flushnetty - Количество потоков, выделенных для netty
- Настройки системы пингов с узлами
Tarantool
Важно
- При задании хотя бы одного элемента группы
connections-groupsпараметры
spring.data.tarantool.host,spring.data.tarantool.port,spring.data.tarantool.user-name,spring.data.tarantool.password,spring.data.tarantool.connection-group-size,spring.data.tarantool.tagигнорируются - В каждой группе данные параметры(
spring.data.tarantool.host,spring.data.tarantool.connection-groups.[*].port,spring.data.tarantool.connection-groups.[*].user-name,spring.data.tarantool.connection-groups.[*].password, ...) задаются индивидуально.
Заметка
Подробнее о параметрах:
- Информацию о параметрах
heartbeatможно найти в javadoc к Heartbeat - Официальная документация Netty о
flush-consolidation-handler
Важно
Возможности настройки клиента через файлы конфигурации ограничены, в сравнении с конфигурацией через Java-классы, т.к. некоторые параметры недоступны.
Полный список недоступных возможностей:
- определение параметров канала Netty;
- определение параметров Watchers;
- определение обработчика пакетов, которые были проигнорированы;
- определение параметров ssl;
- задание собственного TimerService;
- задание собственного реестра метрик Micrometer.
Важно
При использовании настроек клиента через конфигурационный файл и Java-классы одновременно, будет выбрана настройка, основанная на Java-классах.
При поднятии контекста Spring с использованием @EnableTarantoolRepositories будет произведены
следующие действия:
- подключение клиента к кластеру
Tarantool, исходя из указанных вTarantoolCrudClientBuilderпараметров; - регистрация пользовательских
Repositoryв контексте Spring ; - регистрация компонента
TarantoolCrudClientв контексте Spring.
Настройка через Java-классы (JavaConfig) без использования @EnableTarantoolRepositories
Вы можете использовать API TarantoolCrudClient напрямую, зарегистрировав компонент в контексте
Spring:
import io.tarantool.client.factory.TarantoolFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class Config {
@Bean
public TarantoolCrudClient crudClient() {
return TarantoolFactory.crud()
.withHost("localhost")
.withPort(3301)
.withPassword("secret-cluster-cookie")
.build();
}
}
Важно
В случае такой настройки работа с кластером производится только через API TarantoolCrudClient
Конфигурирование BOX-клиента
На данный момент конфигурирование box-клиента можно произвести только через Java-классы (JavaConfig)
без использования аннотации @EnableTarantoolRepositories:
import io.tarantool.client.factory.TarantoolFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class Config {
@Bean
public TarantoolBoxClient boxClient() {
return TarantoolFactory.box()
.withHost("localhost")
.withPort(3301)
.withUser("guest")
.build();
}
}