(gRPC) Bind gRPC services to an interface

By default gRPC it magically decides on an interface.  The change will explicitly tell it what to use.
This commit is contained in:
Viktor Lofgren 2024-02-20 14:18:22 +01:00
parent 36a5c8b44c
commit 2ee492fb74
2 changed files with 8 additions and 3 deletions

View File

@ -3,6 +3,7 @@ package nu.marginalia.service.discovery.property;
import lombok.SneakyThrows;
import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URL;
import java.util.UUID;
@ -12,6 +13,9 @@ public sealed interface ServiceEndpoint {
int port();
URL toURL(String endpoint, String query);
default InetSocketAddress toInetSocketAddress() {
return new InetSocketAddress(host(), port());
}
static ServiceEndpoint forSchema(ApiSchema schema, String host, int port) {
return switch (schema) {

View File

@ -1,7 +1,7 @@
package nu.marginalia.service.server;
import io.grpc.BindableService;
import io.grpc.ServerBuilder;
import io.grpc.*;
import io.grpc.netty.shaded.io.grpc.netty.NettyServerBuilder;
import io.prometheus.client.Counter;
import lombok.SneakyThrows;
import nu.marginalia.mq.inbox.*;
@ -108,7 +108,8 @@ public class Service {
config.externalAddress()
);
var grpcServerBuilder = ServerBuilder.forPort(grpcEndpoint.port());
// Start the gRPC server
var grpcServerBuilder = NettyServerBuilder.forAddress(grpcEndpoint.toInetSocketAddress());
for (var grpcService : grpcServices) {
grpcServerBuilder.addService(grpcService);
}