我面临着一个与垂直的问题。x、 当超时被触发时,它会生成一个响应,然后实际响应(需要10秒)出现并尝试进行响应,因此我得到:
JAVAlang.IllegalStateException:已写入响应
我是Vert的新手。x和我不确定想要的行为,我应该怎么做?,由于代码是异步的,我找不到检查响应是否已经发送的方法。
有没有办法做到这一点?
我有以下代码:
private void setExternalCallAccessibleWithCircuitBreaker() {
CircuitBreaker breaker = CircuitBreaker.create("my-circuit-breaker", vertx,
new CircuitBreakerOptions().setMaxFailures(3) // number of failure before opening the circuit
.setTimeout(1000) // consider a failure if the operation does not succeed in time
.setFallbackOnFailure(true) // do we call the fallback on failure
.setResetTimeout(10000) // time spent in open state before attempting to re-try
);
vertx.createHttpServer().requestHandler(req -> {
// some code executing with the breaker
// the code reports failures or success on the given future.
// if this future is marked as failed, the breaker increased the
// number of failures
breaker.executeWithFallback(future -> {
// call the external service
WebClient client = WebClient.create(vertx);
client.get(8080, "localhost", "/wait10Seconds").send(ar -> {
if (ar.succeeded()) {
HttpResponse<Buffer> response = ar.result();
System.out.println("Received response with status code" + response.statusCode());
System.out.println("response.bodyAsString()" + response.bodyAsString());
req.response().end(response.body());
future.complete();
} else {
System.out.println("Something went wrong " + ar.cause().getMessage());
req.response().end("error");
future.fail("not possible to complete the request");
}
});
}, (Throwable exception) -> {
req.response().end("error " + exception.getMessage());
return exception;
}).setHandler(ar -> {
// Get the operation result.
System.out.println("ar: " + ar);
});
}).listen(8088);
System.out.println("Running");
}
我发现了这个方法,显然它是有效的:
if (!req.response().ended()) {
req.response().end(response.body());
}
我对Vert.x非常陌生,就像几天前一样。我来自一个JAX式的,安逸的世界。我可能大错特错,请指正。 我的问题是:如何使顶点公开自己的REST接口(子路由器),以及如何将其子路由器注册到应用程序的主路由器中? 我尝试过类似的东西,但是当我请求/产品/所有:( } }
我刚刚开始学习vert. x,对它是如何工作的仍然感兴趣...我在想: 当反应性非阻塞垂直线卸载到阻塞垂直线时,阻塞垂直线在工作线程上运行。 1.what事件循环线程,关闭加载的工作,在同一时间?从循环中获取另一个事件? 返回a结果时,同一事件循环是否继续执行?还是另一个? 1的答案是什么 我觉得我错过了一些基本的东西,关于事情实际上是如何工作的。谢谢你的帮助!
在Vert中使用HTTP服务器。x 2.1.6(基于Netty 4.0.21)为了处理HTTP请求,静态文件从文件系统读取并写入客户端。有时,在多个同时请求期间(阅读:快速单击浏览器),随机请求永远不会得到任何响应。E、 g.单击注销链接将触发对背景图像、徽标、几个css文件等的请求。所有文件都会成功返回,但徽标文件除外,http请求只是挂起了该文件。这种情况并不总是发生,但似乎是由于在启动新请求
我正在尝试为Vert开发概念验证。一款简单的实时浏览器游戏。 让我们想象一个类似于在线扑克的游戏——你有一个大厅,里面有许多你可以加入的现有游戏。你也可以创建一个新游戏(所以大厅里的游戏数量是可变的)。在这之前,你有一个异步超文本传输协议服务器(集群),玩家可以连接到它。尤其是在特定的游戏中,一切都是实时的,所以当玩家执行某个操作时,其他人会立即看到它,而无需刷新或定期ajax轮询。 我在考虑如何
假设我有一个类似这样的竖线(有意简化以便于解释我的问题)。 现在想象一下,MyService是事件驱动的,当服务中发生某些事件时,我想停止顶点。 是否有人对Vert有更多经验。x知道如何做到这一点?或者,也许有人会给我一些建议,告诉我什么是正确的替代方法?
我有下面的垂直类: 我的html文件是: 我使用了“StaticHandler.create…”以便为客户端文件夹中的所有静态文件提供服务。正如您所理解的,我希望一旦服务器收到对“localhost:3000/hello”的GET请求,客户端将获得一个HTML页面,该页面将调用app。js文件。 不幸的是,我做不到。指数html已加载,浏览器无法加载应用程序。js。 重要的是要注意该索引。html