1

I am new to vertx and am trying to execute a function1 using vertx.executeBlocking from ABCHandler.java

public class ABCHandler implements Handler<RoutingContext> {

public ABCHandler( Vertx vertx)
{this.vertx =vertx;}


@Override
public void handle(RoutingContext routingContext) {

    vertx.executeBlocking(future -> {
            function1(routingContext, as ->
            {
                if (as.failed()) {

                    future.fail(as.cause());
                } else {
                    future.complete(as.result());

                }
            });
        }, rs -> {

            if (rs.failed()) {

                routingContext.response().putHeader(CONTENT_TYPE,
                   "application/json").setStatusCode(Integer.valueOf(401)).end("error");

            } else {
                routingContext.put("key_1", rs.result());
                routingContext.next();
            }
        });
}

}

ABCHandler is meant to validate some data before request is routed to actual URI. But after routingContext.next(); I am getting 500 (Internal server error).

 WebClientCreator.getWebClient(vertx);
 Router router = Router.router(vertx);
 router.route().handler(new ABCHandler(vertx));
 router.post(AgentBindingConstants.AGENT_ENROLLMENT_URI).handler(

 BodyHandler.create().setBodyLimit(10000));
    router.post("/abc").handler(routingContext -> {
        //some code
    });

Also, when I run same code as non blocking it works.

Any help here is much appreciated.

0 Answers0