code: @Override
      public void blockingHello(HelloRequest request, StreamObserver<HelloReply> responseObserver) {
          // Unlike upstream gRPC-Java, Armeria does not run service logic in a separate thread pool by default.
          // Therefore, this method will run in the event loop, which means that you can suffer the performance
          // degradation if you call a blocking API in this method. In this case, you have the following options:
          //
          // 1. Call a blocking API in the blockingTaskExecutor provided by Armeria.
          // 2. Set GrpcServiceBuilder.useBlockingTaskExecutor(true) when building your GrpcService.
          // 3. Call a blocking API in the separate thread pool you manage.
          //
          // In this example, we chose the option 1:
          final ServiceRequestContext ctx = RequestContext.current();
          ctx.blockingTaskExecutor().submit(() -> {
              try {
                  // Simulate a blocking API call.
                  Thread.sleep(3000);
              } catch (Exception ignored) {
                  // Do nothing.
              }
              responseObserver.onNext(buildReply(toMessage(request.getName())));
              responseObserver.onCompleted();
          });
      }
docs: Sends a {@link HelloReply} using {@code blockingTaskExecutor}.
  
  @see <a href="https://line.github.io/armeria/server-grpc.html#blocking-service-implementation">Blocking
  service implementation</a>