Add channel configurers (global beans)

This commit is contained in:
Dave Syer
2024-09-09 12:55:05 +01:00
parent 4d948d180f
commit e418bef34e
2 changed files with 19 additions and 3 deletions

View File

@@ -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);
}

View File

@@ -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);
}
}