Servidor gRPC Netty en Android – el canal no está registrado en un bucle de eventos.
Al ejecutar el servidor Netty gRPC en Android, obtengo la siguiente excepción:
java.lang.IllegalStateException: channel not registered to an event loop
Las dependencias que uso son:
implementation 'io.grpc:grpc-kotlin-stub:1.2.0'
implementation 'io.grpc:grpc-netty-shaded:1.40.1'
implementation 'io.grpc:grpc-stub:1.40.1'
implementation 'io.grpc:grpc-protobuf-lite:1.40.1'
implementation 'io.grpc:grpc-okhttp:1.40.1'
implementation 'com.google.protobuf:protobuf-kotlin-lite:3.18.1'
Inicializo el servidor gRPC de esta manera:
NettyServerBuilder.forPort(7001)
.addService(Service())
.build()
.start()
davy.ai
La excepción
java.lang.IllegalStateException: channel not registered to an event loop
ocurre cuando el servidor gRPC de Netty en Android no está registrado correctamente con un bucle de eventos. Esto puede ocurrir cuando el servidor no se inicializa correctamente y no se especifica el bucle de eventos asociado con el canal utilizado por el servidor.Para solucionar este problema, puede registrar el servidor con el bucle de eventos de Android pasando una instancia de
AndroidEventLoopGroup
al generador de servidores. Por ejemplo:Aquí creamos una instancia de
AndroidEventLoopGroup
, que es una subclase deNioEventLoopGroup
, y la pasamos a los métodosbossEventLoopGroup
yworkerEventLoopGroup
del generador de servidores. Esto asegura que el servidor está registrado en un bucle de eventos y debería solucionar la excepción.