Add channel configurers (global beans)
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
package org.springframework.grpc.client;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@@ -29,11 +30,23 @@ import io.grpc.ManagedChannelBuilder;
|
||||
|
||||
public class DefaultGrpcChannelFactory implements GrpcChannelFactory, DisposableBean {
|
||||
|
||||
private Map<String, ManagedChannel> channels = new ConcurrentHashMap<>();
|
||||
private final Map<String, ManagedChannel> channels = new ConcurrentHashMap<>();
|
||||
|
||||
private final List<GrpcChannelConfigurer> configurers = new ArrayList<>();
|
||||
|
||||
public DefaultGrpcChannelFactory() {
|
||||
}
|
||||
|
||||
public DefaultGrpcChannelFactory(List<GrpcChannelConfigurer> configurers) {
|
||||
configurers.addAll(configurers);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ManagedChannelBuilder<?> createChannel(String authority) {
|
||||
ManagedChannelBuilder<?> target = Grpc.newChannelBuilder(authority, InsecureChannelCredentials.create());
|
||||
for (GrpcChannelConfigurer configurer : configurers) {
|
||||
configurer.accept(target);
|
||||
}
|
||||
return new DisposableChannelBuilder(authority, target);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,10 +15,13 @@
|
||||
*/
|
||||
package org.springframework.grpc.autoconfigure.client;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.grpc.client.DefaultGrpcChannelFactory;
|
||||
import org.springframework.grpc.client.GrpcChannelConfigurer;
|
||||
import org.springframework.grpc.client.GrpcChannelFactory;
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@@ -26,8 +29,8 @@ public class GrpcClientAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(GrpcChannelFactory.class)
|
||||
public DefaultGrpcChannelFactory defaultGrpcChannelFactory() {
|
||||
return new DefaultGrpcChannelFactory();
|
||||
public DefaultGrpcChannelFactory defaultGrpcChannelFactory(final List<GrpcChannelConfigurer> configurers) {
|
||||
return new DefaultGrpcChannelFactory(configurers);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user