pl.allegro.tech.hermes.management.config.console.ConsoleConfiguration Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hermes-management Show documentation
Show all versions of hermes-management Show documentation
Fast and reliable message broker built on top of Kafka.
package pl.allegro.tech.hermes.management.config.console;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.concurrent.TimeUnit;
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
import org.apache.hc.core5.http.io.SocketConfig;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import pl.allegro.tech.hermes.management.domain.console.ConsoleConfigurationRepository;
import pl.allegro.tech.hermes.management.infrastructure.console.ClasspathFileConsoleConfigurationRepository;
import pl.allegro.tech.hermes.management.infrastructure.console.FrontendRoutesFilter;
import pl.allegro.tech.hermes.management.infrastructure.console.HttpConsoleConfigurationRepository;
import pl.allegro.tech.hermes.management.infrastructure.console.SpringConfigConsoleConfigurationRepository;
@Configuration
@EnableConfigurationProperties({ConsoleConfigProperties.class, ConsoleProperties.class})
public class ConsoleConfiguration {
@Bean
FilterRegistrationBean frontendRoutesFilter() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new FrontendRoutesFilter());
return registrationBean;
}
@Bean
ConsoleConfigurationRepository consoleConfigurationRepository(
ConsoleConfigProperties properties,
ObjectMapper objectMapper,
ConsoleProperties consoleProperties) {
switch (properties.getType()) {
case CLASSPATH_RESOURCE:
return new ClasspathFileConsoleConfigurationRepository(properties);
case HTTP_RESOURCE:
return httpConsoleConfigurationRepository(properties);
case SPRING_CONFIG:
return new SpringConfigConsoleConfigurationRepository(objectMapper, consoleProperties);
default:
throw new IllegalArgumentException("Unsupported console config type");
}
}
private ConsoleConfigurationRepository httpConsoleConfigurationRepository(
ConsoleConfigProperties properties) {
var httpClientProperties = properties.getHttpClient();
var socketConfig =
SocketConfig.custom()
.setSoTimeout(
(int) httpClientProperties.getReadTimeout().toMillis(), TimeUnit.MILLISECONDS)
.build();
var connectionManager =
PoolingHttpClientConnectionManagerBuilder.create()
.setDefaultSocketConfig(socketConfig)
.build();
var client = HttpClientBuilder.create().setConnectionManager(connectionManager).build();
HttpComponentsClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory(client);
requestFactory.setConnectTimeout(properties.getHttpClient().getConnectTimeout());
RestTemplate restTemplate = new RestTemplate(requestFactory);
return new HttpConsoleConfigurationRepository(properties, restTemplate);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy