boolean shutdownOnStop parameter to ServerBuilder.blockingTaskExecutor() #1685 UnprocessedRequestExceptionUnprocessedRequestException in RetryingClient #1653 UnprocessedRequestExceptionUnprocessedRequestException always has a cause.RetryStrategy. #1634LoggingClient/Service. Can we make it any better, especially in terms of performance and flexibility?blockingTaskExecutor-related APIblockingTaskExecutor a SchedulerExecutorService. #2269ServerConfig.blockingTaskExecutor context-aware #46ServiceRequestContext.logger(). Do we really need it?Main class and are runnable from Gradle.:examples:annotated-http-service does not have a main class. #1647 (get|post|head..) for (doGet|doPost|doHead..) methods in AbstractHttpService #1923Currently, we use RpcXX classes such as RpcRequest, RpcResponse, RpcService, RpcClient, etc. for Thrift only. Because the name includes Rpc, the users expect that the gRPC module uses the same classes which is not true and they usually end up with a surprise.
I wonder if we have to address this issue which will bring a lot of API changes before 1.0.0. These are some of the ways that I can think of to solve that:
RpcXX classes to ThriftXX to distinguish Thrift and gRPC.RpcRequest and RpcResponse use them in Thrift and gRPC together.ClientCall, ServerCall and listener for sending request and receiving response. gRPC supports streaming and Thrift doesn't. Because nature is different, it could harm Armeria and make it worse to use.These are just my improvisatory thought and please give an idea if you have. /cc @anuraaga
Consider deprecating *RegistrationBeans in Spring integration module and let users use the configurator which gives the most freedom. WDYT, @imasahiro @kojilin ?
I think I originally designed that API internally - and I vaguely recall realizing spring offers both registration beans and customizer ones so thought having both is idiomatic. I haven't used Spring in a long time though so could be misremembering or things could have changed.
Added two more discussion items:
Let me close this issue and set 1.0.0 to milestone for the issues which will affect the API design.
Most helpful comment
Currently, we use
RpcXXclasses such asRpcRequest,RpcResponse,RpcService,RpcClient, etc. for Thrift only. Because the name includesRpc, the users expect that the gRPC module uses the same classes which is not true and they usually end up with a surprise.I wonder if we have to address this issue which will bring a lot of API changes before 1.0.0. These are some of the ways that I can think of to solve that:
RpcXXclasses toThriftXXto distinguish Thrift and gRPC.RpcRequestandRpcResponseuse them in Thrift and gRPC together.ClientCall,ServerCallandlistenerfor sending request and receiving response. gRPC supports streaming and Thrift doesn't. Because nature is different, it could harm Armeria and make it worse to use.These are just my improvisatory thought and please give an idea if you have. /cc @anuraaga