我试图通过事件总线发送数据,当从客户端接到呼叫并响应回客户端。
一切正常,直到我在事件总线上添加拦截器...
以下是代码:-
public class TestVerticle extends AbstractVerticle {
@Override
public void start(Promise<Void> promise) {
Router router = Router.router(vertx);
vertx.exceptionHandler(globalExceptionHandler -> {
System.out.println("Exception not handled in application : " + globalExceptionHandler.getCause());
});
vertx.eventBus().consumer("test", handler -> {
System.out.println("Message receive form event bus : " + handler.body().toString());
handler.reply(handler.body().toString());
});
router.get().handler(this::rootHandler);
vertx.createHttpServer().requestHandler(router).listen(8080, resultHandler -> {
if (resultHandler.succeeded()) {
promise.complete();
} else {
promise.fail(resultHandler.cause());
}
});
vertx.eventBus().addOutboundInterceptor(handler -> {
System.out.println("Outbound data : "+handler.body().toString());
});
// vertx.eventBus().addInboundInterceptor(handler -> {
// System.out.println("Inbound data : " + handler.body().toString());
// });
}
private void rootHandler(RoutingContext routingContext) {
JsonObject msg = new JsonObject().put("path", routingContext.request().path());
vertx.eventBus().request("test","Hello from Application",reply -> this.replyHandler(routingContext,reply));
}
private void replyHandler(RoutingContext ctx, AsyncResult<Message<Object>> reply) {
HttpServerResponse response = ctx.response()
.putHeader("Content-Type", "application/json");
System.out.println("Reply from event bus : " +reply.result().body().toString());
if (reply.succeeded()) {
response.setStatusCode(200)
.setStatusMessage("OK")
.end(reply.result().body().toString());
} else {
response.setStatusCode(500)
.setStatusMessage("Server Error")
.end(new JsonObject().put("error", reply.cause().getLocalizedMessage()).encodePrettily());
}
}
public static void main(String[] args) {
Vertx.vertx().deployVerticle(new TestVerticle(), deploymenHandler -> {
if (deploymenHandler.succeeded()) {
System.out.println("verticle deplyed");
} else {
System.out.println("failed");
}
});
}
@Override
public void stop(Promise<Void> promise) {
System.out.println("Exiting verticle");
promise.complete()
}
}
还有一个疑问是,当我从IDE停止应用程序时,不会调用stop方法,但是如果我从另一个正常工作的垂直程序中取消部署这个垂直程序。
当您使用eventbus拦截器时,必须调用处理程序中的next()
方法,否则您会被卡住。
vertx.eventBus().addOutboundInterceptor(handler -> {
System.out.println("Outbound data : "+handler.body().toString());
handler.next();
});
vertx.eventBus().addInboundInterceptor(handler -> {
System.out.println("Inbound data : "+handler.body().toString());
handler.next();
});
一、拦截请求 mitmproxy的强大功能是拦截请求。拦截的请求将暂停,以便用户可以在将请求发送到服务器之前修改(或丢弃)该请求。mitmproxy的set intercept命令配置拦截。i默认情况下,该命令绑定到快捷方式。 通常不希望拦截所有请求,因为它会不断中断您的浏览。因此,mitmproxy希望将流过滤器表达式作为set intercept选择性拦截请求的第一个参数。在下面的教程中,我们
配置拦截器 declarations: [ AppComponent ], HttpClientModule ], providers: [ [ { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true } ] bootstrap:
在 imi 中更加推荐使用 AOP 来拦截请求。 不要忘记把 Aspect 类加入 beanScan! Demo <?php namespace ImiApp\ApiServer\Aop; use Imi\RequestContext; use Imi\Aop\Annotation\Around; use Imi\Aop\Annotation\Aspect; use Imi\Aop\Annota
问题内容: 我有一个注册为HID设备的RFID USB设备(一个或多个USB键盘)。 我正在寻找一种捕获此输入的方法,并在它击中普通键盘事件处理程序之前对其进行阻止/过滤(并将10位RFID代码输出到控制台)。 我当然必须专门捕获该设备,而不必留下真正的键盘输入(或传递它)。 我最初的想法是在UDEV中阻止该设备(因此usbhid / event / kbd内核模块未绑定到该设备)并为该设备编写我
我在健康检查中使用ClusterHealthCheck过程,并且在日志中看到Vertx Thread被阻止的异常。我需要将健康检查作为阻塞代码执行吗? 下面是我用来创建健康检查的代码, 低于例外 我查看了ClusterHealthCheck类,它看起来很简单,从集群管理器获取分区服务并获取集群状态,但不确定为什么需要5秒钟以上才能完成。 我使用的是vertx 4.0.3、hazelcast 4.0
我是一些API的客户端,需要在每个请求中发送令牌,为了获得这个令牌,我需要访问发送用户名和密码,并考虑使用请求拦截器来解决这个问题。但是每个请求的用户名和密码是不同的,有一些方法可以在假请求拦截器中使用动态值,或者在每次API调用之前,我需要使用普通的假客户端调用? 我有一个来访问此令牌API 我不确定在构建假客户端以设置每个请求的用户时如何添加这个拦截器