Closed nguyentamdat closed 8 months ago
Hi, @nguyentamdat
Eventloop runs until it has tasks to execute or any underlying resources (such as RPC connections) are associated with it. Once the RPC connection has been closed, the RPC client initiates a reconnection routine in the background. But since the reconnection is a background task, Eventloop stopped.
When creating Eventloop, you should set the Eventloop#keepAlive(true)
parameter to keep Eventloop running even if there are no active tasks or underlying resources. Then, the reconnection would proceed. Or you could use a ServiceGraph, since in this case the keepAlive
option is set to Eventloop automatically.
As for why EOS is received, it is most likely due to some network failure. In ActiveJ v6 we will add an option to use explicit end-of-stream for RPC client and server. That way, network failures would not cause EOS to be received.
Thank you, I will try that config.
Hi, I have deployed 2 servers: RpcServer and RpcClient. They have run normally for fews days and RpcClient received an EOS message. It closes the connection, throws an AsyncCloseException and doesn't reconnect to RpcServer. Here is my RpcClient setup:
And here is my RpcServer setup:
RpcServer is a module in my service, and I use your Launcher and ServiceGraph to start/stop this service. RpcClient is used in other service which doesn't use your Launcher and ServiceGraph. Do I initialize those services correctly? And why RpcClient randomly receive an EOS message?